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