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