remove syscall.h
[unix-history] / usr / src / sys / tahoe / vba / vbaparam.h
CommitLineData
69e9ae1b 1/* vbaparam.h 1.4 87/06/30 */
d08ce1d7
SL
2
3/*
4 * Parameters related to the VERSAbus i/o configuration.
5 */
6
7/*
8 * VERSAbus i/o devices use either memory mapped interfaces
9 * or mapped i/o register banks, or some of both. Page tables
10 * are allocated at boot time by each device driver, as needed.
11 * VMEMmap is used to map a fixed size portion of the VERSAbus
12 * i/o space, while VMEMmap1 maps dynamically defined portions
13 * for devices which utilize shared i/o memory. VBmap is used
14 * for mapping kernel intermediate buffers for DMA devices which
15 * are incapable of utilizing user virtual addresses or which
16 * require page aligned i/o buffers. The size of the VMEMmap1
17 * VBmap tables must be large enough for the needs of all devices
18 * in the system.
19 */
20extern struct pte VMEMmap[], VMEMmap1[];
21extern caddr_t vmem1, vmemend;
22extern struct pte VBmap[];
23extern caddr_t vbbase, vbend;
24
586cab6f
SL
25/*
26 * The following macros relate to the segmentation of the VERSAbus
27 * i/o space.
28 *
29 * The VERSAbus adapter segments the i/o space (as seen by the cpu)
30 * into three regions. Cpu accesses to the upper 64Kb of the i/o space
31 * generate VERSAbus cycles with a 16-bit address and a non-privileged
32 * short i/o space address modifier. Accesses to the next 1Mb - 64Kb
33 * generate 24-bit addresses and a non-privileged standard address
34 * modifier. Accesses to the remainder of the 1Gb i/o space generate
35 * 32-bit addresses with a non-privileged extended address modifier.
36 * Beware that 32-bit addresses generated from this region always have
37 * zero in the upper 2 bits; e.g. a reference to physical address fe000000
38 * results in a VERSAbus address of 3e000000.
39 */
9d61b7ff
SL
40#define VBIO16BIT(a) ((unsigned)0xfffe0000 <= ((unsigned)(a)))
41#define VBIO24BIT(a) ((unsigned)0xff000000 <= ((unsigned)(a)) && \
42 ((unsigned)(a)) < (unsigned)0xfffe0000)
43#define VBIO32BIT(a) (((unsigned)(a)) < (unsigned)0xff000000)
586cab6f 44
d08ce1d7
SL
45/*
46 * The following constants define the fixed size map of the
47 * VERSAbus i/o space. The values should reflect the range
586cab6f
SL
48 * of i/o addresses used by all the controllers unprepared
49 * to allocate and initialize their own page maps.
d08ce1d7
SL
50 */
51#define VBIOBASE 0xfff00000 /* base of VERSAbus address space */
52#define VBIOEND 0xffffee45 /* last address in mapped space */
586cab6f 53/* number of entries in the system page table for i/o space */
d08ce1d7 54#define VBIOSIZE btoc(VBIOEND-VBIOBASE)
586cab6f 55/* is device in mapped region */
9d61b7ff
SL
56#define VBIOMAPPED(a) ((unsigned)VBIOBASE <= ((unsigned)(a)) && \
57 ((unsigned)(a)) <= (unsigned)VBIOEND)
586cab6f 58#define vboff(addr) ((int)(((caddr_t)(addr)) - VBIOBASE))