mpcc ports hang with TS_BUSY; bug report 4.3BSD-tahoe/sys/23
[unix-history] / usr / src / sys / tahoe / vba / vbaparam.h
CommitLineData
430f81c3
MK
1/*
2 * Copyright (c) 1988 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that this notice is preserved and that due credit is given
7 * to the University of California at Berkeley. The name of the University
8 * may not be used to endorse or promote products derived from this
9 * software without specific prior written permission. This software
10 * is provided ``as is'' without express or implied warranty.
11 *
12 * @(#)vbaparam.h 7.1 (Berkeley) %G%
13 */
d08ce1d7
SL
14
15/*
16 * Parameters related to the VERSAbus i/o configuration.
17 */
18
19/*
20 * VERSAbus i/o devices use either memory mapped interfaces
21 * or mapped i/o register banks, or some of both. Page tables
22 * are allocated at boot time by each device driver, as needed.
23 * VMEMmap is used to map a fixed size portion of the VERSAbus
24 * i/o space, while VMEMmap1 maps dynamically defined portions
25 * for devices which utilize shared i/o memory. VBmap is used
26 * for mapping kernel intermediate buffers for DMA devices which
27 * are incapable of utilizing user virtual addresses or which
28 * require page aligned i/o buffers. The size of the VMEMmap1
29 * VBmap tables must be large enough for the needs of all devices
30 * in the system.
31 */
32extern struct pte VMEMmap[], VMEMmap1[];
33extern caddr_t vmem1, vmemend;
34extern struct pte VBmap[];
35extern caddr_t vbbase, vbend;
36
586cab6f
SL
37/*
38 * The following macros relate to the segmentation of the VERSAbus
39 * i/o space.
40 *
41 * The VERSAbus adapter segments the i/o space (as seen by the cpu)
42 * into three regions. Cpu accesses to the upper 64Kb of the i/o space
43 * generate VERSAbus cycles with a 16-bit address and a non-privileged
44 * short i/o space address modifier. Accesses to the next 1Mb - 64Kb
45 * generate 24-bit addresses and a non-privileged standard address
46 * modifier. Accesses to the remainder of the 1Gb i/o space generate
47 * 32-bit addresses with a non-privileged extended address modifier.
48 * Beware that 32-bit addresses generated from this region always have
49 * zero in the upper 2 bits; e.g. a reference to physical address fe000000
50 * results in a VERSAbus address of 3e000000.
51 */
9d61b7ff
SL
52#define VBIO16BIT(a) ((unsigned)0xfffe0000 <= ((unsigned)(a)))
53#define VBIO24BIT(a) ((unsigned)0xff000000 <= ((unsigned)(a)) && \
54 ((unsigned)(a)) < (unsigned)0xfffe0000)
55#define VBIO32BIT(a) (((unsigned)(a)) < (unsigned)0xff000000)
586cab6f 56
d08ce1d7
SL
57/*
58 * The following constants define the fixed size map of the
59 * VERSAbus i/o space. The values should reflect the range
586cab6f
SL
60 * of i/o addresses used by all the controllers unprepared
61 * to allocate and initialize their own page maps.
d08ce1d7
SL
62 */
63#define VBIOBASE 0xfff00000 /* base of VERSAbus address space */
64#define VBIOEND 0xffffee45 /* last address in mapped space */
586cab6f 65/* number of entries in the system page table for i/o space */
d08ce1d7 66#define VBIOSIZE btoc(VBIOEND-VBIOBASE)
586cab6f 67/* is device in mapped region */
9d61b7ff
SL
68#define VBIOMAPPED(a) ((unsigned)VBIOBASE <= ((unsigned)(a)) && \
69 ((unsigned)(a)) <= (unsigned)VBIOEND)
586cab6f 70#define vboff(addr) ((int)(((caddr_t)(addr)) - VBIOBASE))