/* * Memory and machine-specific definitions. Used in C and assembler. */ /* * Sizes */ #define BI2BY 8 /* bits per byte */ #define BI2WD 32 /* bits per word */ #define BY2WD 4 /* bytes per word */ #define BY2V 8 /* bytes per vlong */ #define BY2PG 4096 /* bytes per page */ #define WD2PG (BY2PG/BY2WD) /* words per page */ #define PGSHIFT 12 /* log(BY2PG) */ #define ROUND(s, sz) (((s)+(sz-1))&~(sz-1)) #define PGROUND(s) ROUND(s, BY2PG) #define CACHELINELOG 4 #define CACHELINESZ (1< */ #define USER 29 /* R29 is up-> */ /* * virtual MMU */ #define PTEMAPMEM (1024*1024) #define PTEPERTAB (PTEMAPMEM/BY2PG) #define SEGMAPSIZE 1984 #define SSEGMAPSIZE 16 #define PPN(x) ((x)&~(BY2PG-1)) /* * MMU */ /* L1 table entry and Mx_TWC flags */ #define PTEVALID (1<<0) #define PTEWT (1<<1) /* write through */ #define PTE4K (0<<2) #define PTE512K (1<<2) #define PTE8MB (3<<2) #define PTEG (1<<4) /* guarded */ /* L2 table entry and Mx_RPN flags (also PTEVALID) */ #define PTECI (1<<1) /* cache inhibit */ #define PTESH (1<<2) /* page is shared; ASID ignored */ #define PTELPS (1<<3) /* large page size */ //#define PTEWRITE 0x9F0 #define PTEKERNEL (0<<2) #define PTEUSER (1<<2) #define PTESIZE (1<<7) #define NTLBPID 16 #define TLBPID(n) ((n)&(NTLBPID-1)) /* * portable MMU bits for fault.c - though still machine specific */ //#define PTEVALID (MMUPP|MMUV) #define PTEWRITE (2<<10) #define PTERONLY (3<<10) #define PTEUNCACHED (1<<4) /* * physical MMU bits */ /* TLB and MxEPN flag */ #define TLBVALID (1<<9) #define TLBSETS 32 /* number of tlb sets (603/603e) */ /* * Address spaces */ #define UZERO 0 /* base of user address space */ #define UTZERO (UZERO+BY2PG) /* first address in user text */ #define USTKTOP (TSTKTOP-TSTKSIZ*BY2PG) /* byte just beyond user stack */ #define TSTKTOP KZERO /* top of temporary stack */ #define TSTKSIZ 100 #define KZERO 0x80000000 /* base of kernel address space */ #define KTZERO (KZERO+0x4000) /* first address in kernel text */ #define USTKSIZE (4*1024*1024) /* size of user stack */ #define UREGSIZE ((8+32)*4) #define PCIMEM0 0xf0000000 #define PCISIZE0 0x0e000000 #define PCIMEM1 0xc0000000 #define PCISIZE1 0x30000000 #define IOMEM 0xfe000000 #define IOSIZE 0x00800000 #define FALCON 0xfef80000 #define RAVEN 0xfeff0000 #define FLASHA 0xff000000 #define FLASHB 0xff800000 #define FLASHAorB 0xfff00000 #define isphys(x) (((ulong)x&KZERO)!=0) #define getpgcolor(a) 0