mem.h (1644B)
1 /* 2 * Memory and machine-specific definitions. Used in C and assembler. 3 */ 4 5 /* 6 * Sizes 7 */ 8 #define BI2BY 8 /* bits per byte */ 9 #define BI2WD 32 /* bits per word */ 10 #define BY2WD 4 /* bytes per word */ 11 #define BY2V 8 /* bytes per double word */ 12 #define BY2PG 4096 /* bytes per page */ 13 #define WD2PG (BY2PG/BY2WD) /* words per page */ 14 #define BY2XPG (4096*1024) /* bytes per big page */ 15 #define PGSHIFT 12 /* log(BY2PG) */ 16 #define ROUND(s, sz) (((s)+((sz)-1))&~((sz)-1)) 17 #define PGROUND(s) ROUND(s, BY2PG) 18 #define BLOCKALIGN 8 19 20 #define MAXMACH 128 /* max # cpus system can run */ 21 #define KSTACK (1024*1024) /* Size of kernel stack */ 22 23 /* 24 * Time 25 */ 26 #define HZ (1000) /* clock frequency */ 27 #define MS2HZ (1000/HZ) /* millisec per clock tick */ 28 #define TK2SEC(t) ((t)/HZ) /* ticks to seconds */ 29 30 /* 31 * Address spaces - only user code! 32 */ 33 #define UZERO 0 /* base of user address space */ 34 #define UTZERO (UZERO+BY2PG) /* first address in user text */ 35 #define USTKTOP (0x10000000) /* byte just beyond user stack */ 36 #define USTKSIZE (16*1024*1024) /* size of user stack */ 37 #define TSTKTOP (USTKTOP-USTKSIZE) /* end of new stack in sysexec */ 38 #define TSTKSIZ 100 39 40 /* 41 * virtual MMU 42 */ 43 #define PTEMAPMEM (1024*1024) 44 #define PTEPERTAB (PTEMAPMEM/BY2PG) 45 #define SEGMAPSIZE 1984 46 #define SSEGMAPSIZE 16 47 #define PPN(x) ((x)&~(BY2PG-1)) 48 49 /* 50 * physical MMU 51 */ 52 #define PTEVALID (1<<0) 53 #define PTEWT (1<<3) 54 #define PTEUNCACHED (1<<4) 55 #define PTEWRITE (1<<1) 56 #define PTERONLY (0<<1) 57 #define PTEKERNEL (0<<2) 58 #define PTEUSER (1<<2) 59 #define PTESIZE (1<<7) 60 #define PTEGLOBAL (1<<8) 61 62 #define getpgcolor(a) 0 63