/* * Memory and machine-specific definitions. Used in C and assembler. */ #ifdef ucuconf #include "ucu.h" #else #include "blast.h" #endif #define HOWMANY(x, y) (((x)+((y)-1))/(y)) #define ROUNDUP(x, y) (HOWMANY((x), (y))*(y)) /* ceiling */ #define ROUNDDN(x, y) (((x)/(y))*(y)) /* floor */ #define MIN(a, b) ((a) < (b)? (a): (b)) #define MAX(a, b) ((a) > (b)? (a): (b)) /* * 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 PGSHIFT 12 /* log(BY2PG) */ #define ROUND(s, sz) (((s)+(sz-1))&~(sz-1)) #define PGROUND(s) ROUND(s, BY2PG) #define CACHELINELOG 5 #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)) /* * First pte word */ #define PTE0(v, vsid, h, va) (((v)<<31)|((vsid)<<7)|((h)<<6)|(((va)>>22)&0x3f)) /* * Second pte word; WIMG & PP(RW/RO) common to page table and BATs */ #define PTE1_R BIT(23) #define PTE1_C BIT(24) #define PTE1_W BIT(25) #define PTE1_I BIT(26) #define PTE1_M BIT(27) #define PTE1_G BIT(28) #define PTE1_RW BIT(30) #define PTE1_RO BIT(31) /* HID0 register bits */ #define HID_ICE BIT(16) #define HID_DCE BIT(17) #define HID_ILOCK BIT(18) #define HID_DLOCK BIT(19) #define HID_ICFI BIT(20) #define HID_DCFI BIT(21) #define HID_IFEM BIT(24) /* * Address spaces */ #define KZERO 0x80000000 /* base of kernel address space */ #define KTZERO 0x80100000 /* first address in kernel text */ #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 USTKSIZE (4*1024*1024) /* size of user stack */ #define UREGSIZE ((8+40)*4) #define MACHADDR (KTZERO-MAXMACH*MACHSIZE) #define MACHPADDR (MACHADDR&~KZERO) #define MACHP(n) ((Mach *)(MACHADDR+(n)*MACHSIZE)) #define isphys(x) (((ulong)x&KZERO)!=0) /* * MPC8xx addresses */ #define INTMEM 0xf0000000 #define IOMEM (INTMEM+0x10000) #define getpgcolor(a) 0