xref: /plan9-contrib/sys/src/9/rb/mem.h (revision dc100ed4690b2e24ee94b6fe674abc915c477a6d)
1f43f8ee6SDavid du Colombier /*
2f43f8ee6SDavid du Colombier  * Memory and machine-specific definitions.  Used in C and assembler.
3f43f8ee6SDavid du Colombier  */
4f43f8ee6SDavid du Colombier 
5f43f8ee6SDavid du Colombier /*
6f43f8ee6SDavid du Colombier  * Sizes
7f43f8ee6SDavid du Colombier  */
8f43f8ee6SDavid du Colombier 
9f43f8ee6SDavid du Colombier #define	BI2BY		8			/* bits per byte */
10f43f8ee6SDavid du Colombier #define	BI2WD		32			/* bits per word */
11f43f8ee6SDavid du Colombier #define	BY2WD		4			/* bytes per word */
12f43f8ee6SDavid du Colombier #define	BY2V		8			/* bytes per vlong */
13f43f8ee6SDavid du Colombier 
14f43f8ee6SDavid du Colombier #define MAXBY2PG (16*1024) /* rounding for UTZERO in executables; see mkfile */
15f43f8ee6SDavid du Colombier #define UTROUND(t)	ROUNDUP((t), MAXBY2PG)
16f43f8ee6SDavid du Colombier 
17f43f8ee6SDavid du Colombier #define	BY2PG		4096			/* bytes per page */
18f43f8ee6SDavid du Colombier #define	PGSHIFT		12			/* log2(BY2PG) */
19f43f8ee6SDavid du Colombier #define	PGSZ		PGSZ4K
20f43f8ee6SDavid du Colombier #define MACHSIZE	(2*BY2PG)
21f43f8ee6SDavid du Colombier 
22f43f8ee6SDavid du Colombier #define	KSTACK		8192			/* Size of kernel stack */
23f43f8ee6SDavid du Colombier #define	WD2PG		(BY2PG/BY2WD)		/* words per page */
24f43f8ee6SDavid du Colombier 
25*dc100ed4SDavid du Colombier #define	MAXMACH		1 		  /* max # cpus system can run */
26f43f8ee6SDavid du Colombier #define STACKALIGN(sp)	((sp) & ~7)		/* bug: assure with alloc */
27f43f8ee6SDavid du Colombier #define	BLOCKALIGN	16
28f43f8ee6SDavid du Colombier #define CACHELINESZ	32			/* mips24k */
29f43f8ee6SDavid du Colombier #define ICACHESIZE	(64*1024)		/* rb450g */
30f43f8ee6SDavid du Colombier #define DCACHESIZE	(32*1024)		/* rb450g */
31f43f8ee6SDavid du Colombier 
32f43f8ee6SDavid du Colombier #define MASK(w)		FMASK(0, w)
33f43f8ee6SDavid du Colombier 
34f43f8ee6SDavid du Colombier /*
35f43f8ee6SDavid du Colombier  * Time
36f43f8ee6SDavid du Colombier  */
37f43f8ee6SDavid du Colombier #define	HZ		100			/* clock frequency */
38f43f8ee6SDavid du Colombier #define	MS2HZ		(1000/HZ)		/* millisec per clock tick */
39f43f8ee6SDavid du Colombier #define	TK2SEC(t)	((t)/HZ)		/* ticks to seconds */
40f43f8ee6SDavid du Colombier 
41f43f8ee6SDavid du Colombier /*
42f43f8ee6SDavid du Colombier  * CP0 registers
43f43f8ee6SDavid du Colombier  */
44f43f8ee6SDavid du Colombier 
45f43f8ee6SDavid du Colombier #define INDEX		0
46f43f8ee6SDavid du Colombier #define RANDOM		1
47f43f8ee6SDavid du Colombier #define TLBPHYS0	2	/* aka ENTRYLO0 */
48f43f8ee6SDavid du Colombier #define TLBPHYS1	3	/* aka ENTRYLO1 */
49f43f8ee6SDavid du Colombier #define CONTEXT		4
50f43f8ee6SDavid du Colombier #define PAGEMASK	5
51f43f8ee6SDavid du Colombier #define WIRED		6
52f43f8ee6SDavid du Colombier #define BADVADDR	8
53f43f8ee6SDavid du Colombier #define COUNT		9
54f43f8ee6SDavid du Colombier #define TLBVIRT		10	/* aka ENTRYHI */
55f43f8ee6SDavid du Colombier #define COMPARE		11
56f43f8ee6SDavid du Colombier #define STATUS		12
57f43f8ee6SDavid du Colombier #define CAUSE		13
58f43f8ee6SDavid du Colombier #define EPC		14
59f43f8ee6SDavid du Colombier #define	PRID		15
60f43f8ee6SDavid du Colombier #define	CONFIG		16
61f43f8ee6SDavid du Colombier #define	LLADDR		17
62f43f8ee6SDavid du Colombier #define	WATCHLO		18
63f43f8ee6SDavid du Colombier #define	WATCHHI		19
64f43f8ee6SDavid du Colombier #define DEBUG		23
65f43f8ee6SDavid du Colombier #define DEPC		24
66f43f8ee6SDavid du Colombier #define PERFCOUNT	25
67f43f8ee6SDavid du Colombier #define	CACHEECC	26
68f43f8ee6SDavid du Colombier #define	CACHEERR	27
69f43f8ee6SDavid du Colombier #define	TAGLO		28
70f43f8ee6SDavid du Colombier #define	TAGHI		29
71f43f8ee6SDavid du Colombier #define	ERROREPC	30
72f43f8ee6SDavid du Colombier #define DESAVE		31
73f43f8ee6SDavid du Colombier 
74f43f8ee6SDavid du Colombier /*
75f43f8ee6SDavid du Colombier  * M(STATUS) bits
76f43f8ee6SDavid du Colombier  */
77f43f8ee6SDavid du Colombier #define KMODEMASK	0x0000001f
78f43f8ee6SDavid du Colombier #define IE		0x00000001	/* master interrupt enable */
79f43f8ee6SDavid du Colombier #define EXL		0x00000002	/* exception level */
80f43f8ee6SDavid du Colombier #define ERL		0x00000004	/* error level */
81f43f8ee6SDavid du Colombier #define KSUPER		0x00000008
82f43f8ee6SDavid du Colombier #define KUSER		0x00000010
83f43f8ee6SDavid du Colombier #define KSU		0x00000018
84f43f8ee6SDavid du Colombier //#define UX		0x00000020 /* no [USK]X 64-bit extension bits on 24k */
85f43f8ee6SDavid du Colombier //#define SX		0x00000040
86f43f8ee6SDavid du Colombier //#define KX		0x00000080
87f43f8ee6SDavid du Colombier #define INTMASK		0x0000ff00
88f43f8ee6SDavid du Colombier #define INTR0		0x00000100	/* interrupt enable bits */
89f43f8ee6SDavid du Colombier #define INTR1		0x00000200
90f43f8ee6SDavid du Colombier #define INTR2		0x00000400
91f43f8ee6SDavid du Colombier #define INTR3		0x00000800
92f43f8ee6SDavid du Colombier #define INTR4		0x00001000
93f43f8ee6SDavid du Colombier #define INTR5		0x00002000
94f43f8ee6SDavid du Colombier #define INTR6		0x00004000
95f43f8ee6SDavid du Colombier #define INTR7		0x00008000
96f43f8ee6SDavid du Colombier //#define DE		0x00010000	/* not on 24k */
97f43f8ee6SDavid du Colombier #define TS		0x00200000	/* tlb shutdown; on 24k at least */
98f43f8ee6SDavid du Colombier #define BEV		0x00400000	/* bootstrap exception vectors */
99f43f8ee6SDavid du Colombier #define RE		0x02000000	/* reverse-endian in user mode */
100f43f8ee6SDavid du Colombier #define FR		0x04000000	/* enable 32 FP regs */
101f43f8ee6SDavid du Colombier #define CU0		0x10000000
102f43f8ee6SDavid du Colombier #define CU1		0x20000000	/* FPU enable */
103f43f8ee6SDavid du Colombier 
104f43f8ee6SDavid du Colombier /*
105f43f8ee6SDavid du Colombier  * M(CONFIG) bits
106f43f8ee6SDavid du Colombier  */
107f43f8ee6SDavid du Colombier 
108f43f8ee6SDavid du Colombier #define CFG_K0		7	/* kseg0 cachability */
109f43f8ee6SDavid du Colombier #define CFG_MM		(1<<18)	/* write-through merging enabled */
110f43f8ee6SDavid du Colombier 
111f43f8ee6SDavid du Colombier /*
112f43f8ee6SDavid du Colombier  * M(CAUSE) bits
113f43f8ee6SDavid du Colombier  */
114f43f8ee6SDavid du Colombier 
115f43f8ee6SDavid du Colombier #define BD		(1<<31)	/* last excep'n occurred in branch delay slot */
116f43f8ee6SDavid du Colombier 
117f43f8ee6SDavid du Colombier /*
118f43f8ee6SDavid du Colombier  * Exception codes
119f43f8ee6SDavid du Colombier  */
120f43f8ee6SDavid du Colombier #define	EXCMASK	0x1f		/* mask of all causes */
121f43f8ee6SDavid du Colombier #define	CINT	 0		/* external interrupt */
122f43f8ee6SDavid du Colombier #define	CTLBM	 1		/* TLB modification: store to unwritable page */
123f43f8ee6SDavid du Colombier #define	CTLBL	 2		/* TLB miss (load or fetch) */
124f43f8ee6SDavid du Colombier #define	CTLBS	 3		/* TLB miss (store) */
125f43f8ee6SDavid du Colombier #define	CADREL	 4		/* address error (load or fetch) */
126f43f8ee6SDavid du Colombier #define	CADRES	 5		/* address error (store) */
127f43f8ee6SDavid du Colombier #define	CBUSI	 6		/* bus error (fetch) */
128f43f8ee6SDavid du Colombier #define	CBUSD	 7		/* bus error (data load or store) */
129f43f8ee6SDavid du Colombier #define	CSYS	 8		/* system call */
130f43f8ee6SDavid du Colombier #define	CBRK	 9		/* breakpoint */
131f43f8ee6SDavid du Colombier #define	CRES	10		/* reserved instruction */
132f43f8ee6SDavid du Colombier #define	CCPU	11		/* coprocessor unusable */
133f43f8ee6SDavid du Colombier #define	COVF	12		/* arithmetic overflow */
134f43f8ee6SDavid du Colombier #define	CTRAP	13		/* trap */
135f43f8ee6SDavid du Colombier #define	CVCEI	14		/* virtual coherence exception (instruction) */
136f43f8ee6SDavid du Colombier #define	CFPE	15		/* floating point exception */
137f43f8ee6SDavid du Colombier #define CTLBRI	19		/* tlb read-inhibit */
138f43f8ee6SDavid du Colombier #define CTLBXI	20		/* tlb execute-inhibit */
139f43f8ee6SDavid du Colombier #define	CWATCH	23		/* watch exception */
140f43f8ee6SDavid du Colombier #define CMCHK	24		/* machine checkcore */
141f43f8ee6SDavid du Colombier #define CCACHERR 30		/* cache error */
142f43f8ee6SDavid du Colombier #define	CVCED	31		/* virtual coherence exception (data) */
143f43f8ee6SDavid du Colombier 
144f43f8ee6SDavid du Colombier /*
145f43f8ee6SDavid du Colombier  * M(CACHEECC) a.k.a. ErrCtl bits
146f43f8ee6SDavid du Colombier  */
147f43f8ee6SDavid du Colombier #define PE	(1<<31)
148f43f8ee6SDavid du Colombier #define LBE	(1<<25)
149f43f8ee6SDavid du Colombier #define WABE	(1<<24)
150f43f8ee6SDavid du Colombier 
151f43f8ee6SDavid du Colombier /*
152f43f8ee6SDavid du Colombier  * Trap vectors
153f43f8ee6SDavid du Colombier  */
154f43f8ee6SDavid du Colombier 
155f43f8ee6SDavid du Colombier #define	UTLBMISS	(KSEG0+0x000)
156f43f8ee6SDavid du Colombier #define	XEXCEPTION	(KSEG0+0x080)
157f43f8ee6SDavid du Colombier #define	CACHETRAP	(KSEG0+0x100)
158f43f8ee6SDavid du Colombier #define	EXCEPTION	(KSEG0+0x180)
159f43f8ee6SDavid du Colombier 
160f43f8ee6SDavid du Colombier /*
161f43f8ee6SDavid du Colombier  * Magic registers
162f43f8ee6SDavid du Colombier  */
163f43f8ee6SDavid du Colombier 
164f43f8ee6SDavid du Colombier #define	USER		24		/* R24 is up-> */
165f43f8ee6SDavid du Colombier #define	MACH		25		/* R25 is m-> */
166f43f8ee6SDavid du Colombier 
167f43f8ee6SDavid du Colombier /*
168f43f8ee6SDavid du Colombier  * offsets in ureg.h for l.s
169f43f8ee6SDavid du Colombier  */
170f43f8ee6SDavid du Colombier #define	Ureg_status	(Uoffset+0)
171f43f8ee6SDavid du Colombier #define	Ureg_pc		(Uoffset+4)
172f43f8ee6SDavid du Colombier #define	Ureg_sp		(Uoffset+8)
173f43f8ee6SDavid du Colombier #define	Ureg_cause	(Uoffset+12)
174f43f8ee6SDavid du Colombier #define	Ureg_badvaddr	(Uoffset+16)
175f43f8ee6SDavid du Colombier #define	Ureg_tlbvirt	(Uoffset+20)
176f43f8ee6SDavid du Colombier 
177f43f8ee6SDavid du Colombier #define	Ureg_hi		(Uoffset+24)
178f43f8ee6SDavid du Colombier #define	Ureg_lo		(Uoffset+28)
179f43f8ee6SDavid du Colombier #define	Ureg_r31	(Uoffset+32)
180f43f8ee6SDavid du Colombier #define	Ureg_r30	(Uoffset+36)
181f43f8ee6SDavid du Colombier #define	Ureg_r28	(Uoffset+40)
182f43f8ee6SDavid du Colombier #define	Ureg_r27	(Uoffset+44)
183f43f8ee6SDavid du Colombier #define	Ureg_r26	(Uoffset+48)
184f43f8ee6SDavid du Colombier #define	Ureg_r25	(Uoffset+52)
185f43f8ee6SDavid du Colombier #define	Ureg_r24	(Uoffset+56)
186f43f8ee6SDavid du Colombier #define	Ureg_r23	(Uoffset+60)
187f43f8ee6SDavid du Colombier #define	Ureg_r22	(Uoffset+64)
188f43f8ee6SDavid du Colombier #define	Ureg_r21	(Uoffset+68)
189f43f8ee6SDavid du Colombier #define	Ureg_r20	(Uoffset+72)
190f43f8ee6SDavid du Colombier #define	Ureg_r19	(Uoffset+76)
191f43f8ee6SDavid du Colombier #define	Ureg_r18	(Uoffset+80)
192f43f8ee6SDavid du Colombier #define	Ureg_r17	(Uoffset+84)
193f43f8ee6SDavid du Colombier #define	Ureg_r16	(Uoffset+88)
194f43f8ee6SDavid du Colombier #define	Ureg_r15	(Uoffset+92)
195f43f8ee6SDavid du Colombier #define	Ureg_r14	(Uoffset+96)
196f43f8ee6SDavid du Colombier #define	Ureg_r13	(Uoffset+100)
197f43f8ee6SDavid du Colombier #define	Ureg_r12	(Uoffset+104)
198f43f8ee6SDavid du Colombier #define	Ureg_r11	(Uoffset+108)
199f43f8ee6SDavid du Colombier #define	Ureg_r10	(Uoffset+112)
200f43f8ee6SDavid du Colombier #define	Ureg_r9		(Uoffset+116)
201f43f8ee6SDavid du Colombier #define	Ureg_r8		(Uoffset+120)
202f43f8ee6SDavid du Colombier #define	Ureg_r7		(Uoffset+124)
203f43f8ee6SDavid du Colombier #define	Ureg_r6		(Uoffset+128)
204f43f8ee6SDavid du Colombier #define	Ureg_r5		(Uoffset+132)
205f43f8ee6SDavid du Colombier #define	Ureg_r4		(Uoffset+136)
206f43f8ee6SDavid du Colombier #define	Ureg_r3		(Uoffset+140)
207f43f8ee6SDavid du Colombier #define	Ureg_r2		(Uoffset+144)
208f43f8ee6SDavid du Colombier #define	Ureg_r1		(Uoffset+148)
209f43f8ee6SDavid du Colombier 
210f43f8ee6SDavid du Colombier /* ch and carrera used these defs */
211f43f8ee6SDavid du Colombier 	/* Sizeof(Ureg) + (R5,R6) + 16 bytes slop + retpc + ur */
212f43f8ee6SDavid du Colombier // #define UREGSIZE ((Ureg_r1+4-Uoffset) + 2*BY2V + 16 + BY2WD + BY2WD)
213f43f8ee6SDavid du Colombier // #define Uoffset	8
214f43f8ee6SDavid du Colombier 
215f43f8ee6SDavid du Colombier // #define UREGSIZE	(Ureg_r1 + 4 - Uoffset)	/* this ought to work */
216f43f8ee6SDavid du Colombier #define UREGSIZE ((Ureg_r1+4-Uoffset) + 2*BY2V + 16 + BY2WD + BY2WD)
217f43f8ee6SDavid du Colombier #define Uoffset		0
218f43f8ee6SDavid du Colombier #define Notuoffset	8
219f43f8ee6SDavid du Colombier 
220f43f8ee6SDavid du Colombier /*
221f43f8ee6SDavid du Colombier  * MMU
222f43f8ee6SDavid du Colombier  */
223f43f8ee6SDavid du Colombier #define	PGSZ4K		(0x00<<13)
224f43f8ee6SDavid du Colombier #define PGSZ16K		(0x03<<13)	/* on 24k */
225f43f8ee6SDavid du Colombier #define	PGSZ64K		(0x0F<<13)
226f43f8ee6SDavid du Colombier #define	PGSZ256K	(0x3F<<13)
227f43f8ee6SDavid du Colombier #define	PGSZ1M		(0xFF<<13)
228f43f8ee6SDavid du Colombier #define	PGSZ4M		(0x3FF<<13)
229f43f8ee6SDavid du Colombier // #define PGSZ8M	(0x7FF<<13)	/* not on 24k */
230f43f8ee6SDavid du Colombier #define	PGSZ16M		(0xFFF<<13)
231f43f8ee6SDavid du Colombier #define PGSZ64M		(0x3FFF<<13)	/* on 24k */
232f43f8ee6SDavid du Colombier #define PGSZ256M	(0xFFFF<<13)	/* on 24k */
233f43f8ee6SDavid du Colombier 
234f43f8ee6SDavid du Colombier /* mips address spaces, tlb-mapped unless marked otherwise */
235f43f8ee6SDavid du Colombier #define	KUSEG	0x00000000	/* user process */
236f43f8ee6SDavid du Colombier #define KSEG0	0x80000000	/* kernel (direct mapped, cached) */
237f43f8ee6SDavid du Colombier #define KSEG1	0xA0000000	/* kernel (direct mapped, uncached: i/o) */
238f43f8ee6SDavid du Colombier #define	KSEG2	0xC0000000	/* kernel, used for TSTKTOP */
239f43f8ee6SDavid du Colombier #define	KSEG3	0xE0000000	/* kernel, used by kmap */
240f43f8ee6SDavid du Colombier #define	KSEGM	0xE0000000	/* mask to check which seg */
241f43f8ee6SDavid du Colombier 
242f43f8ee6SDavid du Colombier /*
243f43f8ee6SDavid du Colombier  * Fundamental addresses
244f43f8ee6SDavid du Colombier  */
245f43f8ee6SDavid du Colombier 
246f43f8ee6SDavid du Colombier #define	REBOOTADDR	KADDR(0x1000)	/* just above vectors */
247f43f8ee6SDavid du Colombier #define	MACHADDR	0x80005000	/* Mach structures */
248f43f8ee6SDavid du Colombier #define	MACHP(n)	((Mach *)(MACHADDR+(n)*MACHSIZE))
249f43f8ee6SDavid du Colombier #define ROM		0xbfc00000
250f43f8ee6SDavid du Colombier #define	KMAPADDR	0xE0000000	/* kmap'd addresses */
251f43f8ee6SDavid du Colombier #define	WIREDADDR	0xE2000000	/* address wired kernel space */
252f43f8ee6SDavid du Colombier 
253f43f8ee6SDavid du Colombier #define PHYSCONS	(KSEG1|0x18020000)		/* i8250 uart */
254f43f8ee6SDavid du Colombier 
255f43f8ee6SDavid du Colombier #define PIDXSHFT	12
256*dc100ed4SDavid du Colombier /* future ref.: no cache aliases are possible with pages of 16K or larger */
257f43f8ee6SDavid du Colombier #define NCOLOR		8
258f43f8ee6SDavid du Colombier #define PIDX		((NCOLOR-1)<<PIDXSHFT)
259f43f8ee6SDavid du Colombier #define getpgcolor(a)	(((ulong)(a)>>PIDXSHFT) % NCOLOR)
260f43f8ee6SDavid du Colombier #define KMAPSHIFT	15
261f43f8ee6SDavid du Colombier 
262f43f8ee6SDavid du Colombier #define	PTEGLOBL	(1<<0)
263f43f8ee6SDavid du Colombier #define	PTEVALID	(1<<1)
264f43f8ee6SDavid du Colombier #define	PTEWRITE	(1<<2)
265f43f8ee6SDavid du Colombier #define PTERONLY	0
266f43f8ee6SDavid du Colombier #define PTEALGMASK	(7<<3)
267f43f8ee6SDavid du Colombier #define PTENONCOHERWT	(0<<3)		/* cached, write-through (slower) */
268f43f8ee6SDavid du Colombier #define PTEUNCACHED	(2<<3)
269f43f8ee6SDavid du Colombier #define PTENONCOHERWB	(3<<3)		/* cached, write-back */
270f43f8ee6SDavid du Colombier #define PTEUNCACHEDACC	(7<<3)
271f43f8ee6SDavid du Colombier /* rest are reserved on 24k */
272f43f8ee6SDavid du Colombier #define PTECOHERXCL	(4<<3)
273f43f8ee6SDavid du Colombier #define PTECOHERXCLW	(5<<3)
274f43f8ee6SDavid du Colombier #define PTECOHERUPDW	(6<<3)
275f43f8ee6SDavid du Colombier 
276f43f8ee6SDavid du Colombier /* how much faster is it? mflops goes from about .206 (WT) to .37 (WB) */
277f43f8ee6SDavid du Colombier #define PTECACHABILITY PTENONCOHERWT	/* 24k erratum 48 disallows WB */
278f43f8ee6SDavid du Colombier // #define PTECACHABILITY PTENONCOHERWB
279f43f8ee6SDavid du Colombier 
280f43f8ee6SDavid du Colombier #define	PTEPID(n)	(n)
281f43f8ee6SDavid du Colombier #define PTEMAPMEM	(1024*1024)
282f43f8ee6SDavid du Colombier #define	PTEPERTAB	(PTEMAPMEM/BY2PG)
283*dc100ed4SDavid du Colombier #define SEGMAPSIZE	(ROUND(USTKTOP, PTEMAPMEM) / PTEMAPMEM)
284f43f8ee6SDavid du Colombier #define SSEGMAPSIZE	16
285f43f8ee6SDavid du Colombier 
286*dc100ed4SDavid du Colombier #define STLBLOG		16	/* was 15 */
287f43f8ee6SDavid du Colombier #define STLBSIZE	(1<<STLBLOG)	/* entries in the soft TLB */
288f43f8ee6SDavid du Colombier /* page # bits that don't fit in STLBLOG bits */
289f43f8ee6SDavid du Colombier #define HIPFNBITS	(BI2WD - (PGSHIFT+1) - STLBLOG)
290f43f8ee6SDavid du Colombier #define KPTELOG		8
291f43f8ee6SDavid du Colombier #define KPTESIZE	(1<<KPTELOG)	/* entries in the kfault soft TLB */
292f43f8ee6SDavid du Colombier 
293f43f8ee6SDavid du Colombier #define TLBPID(n) ((n)&0xFF)
294f43f8ee6SDavid du Colombier #define	NTLBPID	256		/* # of pids (affects size of Mach) */
295f43f8ee6SDavid du Colombier #define	NTLB	16		/* # of entries (mips 24k) */
296f43f8ee6SDavid du Colombier #define TLBOFF	1		/* first tlb entry (0 used within mmuswitch) */
297f43f8ee6SDavid du Colombier #define NKTLB	2		/* # of initial kfault tlb entries */
298f43f8ee6SDavid du Colombier #define WTLBOFF	(TLBOFF+NKTLB)	/* first large IO window tlb entry */
299f43f8ee6SDavid du Colombier #define NWTLB	0		/* # of large IO window tlb entries */
300f43f8ee6SDavid du Colombier #define	TLBROFF	(WTLBOFF+NWTLB)	/* offset of first randomly-indexed entry */
301f43f8ee6SDavid du Colombier 
302f43f8ee6SDavid du Colombier /*
303f43f8ee6SDavid du Colombier  * Address spaces
304f43f8ee6SDavid du Colombier  */
305*dc100ed4SDavid du Colombier #define PHYSDRAM 0
306f43f8ee6SDavid du Colombier #define	UZERO	KUSEG			/* base of user address space */
307f43f8ee6SDavid du Colombier #define	UTZERO	(UZERO+MAXBY2PG)	/* 1st user text address; see mkfile */
308f43f8ee6SDavid du Colombier #define	USTKTOP	(KZERO-BY2PG)		/* byte just beyond user stack */
309f43f8ee6SDavid du Colombier #define	USTKSIZE (8*1024*1024)		/* size of user stack */
310f43f8ee6SDavid du Colombier #define TSTKTOP (KSEG2+USTKSIZE-BY2PG)	/* top of temporary stack */
311f43f8ee6SDavid du Colombier #define TSTKSIZ (1024*1024/BY2PG)	/* can be at most UTSKSIZE/BY2PG */
312f43f8ee6SDavid du Colombier #define	KZERO	KSEG0			/* base of kernel address space */
313f43f8ee6SDavid du Colombier #define	KTZERO	(KZERO+0x20000)		/* first address in kernel text */
314f43f8ee6SDavid du Colombier #define PCIMEM	0x10000000		/* on rb450g */
315