#include "lib9.h" extern char etext[]; extern char end[]; #define BY2PG (0x1000ull) /* bytes per page */ #define ROUND(s, sz) (((s)+((sz)-1))&~((sz)-1)) #define PGROUND(s) ROUND(s, 0x200000) #define KDZERO (PGROUND((uintptr)etext)) #define CONFADDR (KDZERO+ 0x1200ull) #define CPU0 (KDZERO+ 0x1300ull) #define PTSZ (4*KiB) /* page table page size */ #define PTSHIFT 9 /* */ #define PGSHIFT 12 /* log(BY2PG) */ #define PGLSZ(l) (1ull<<(((l)*PTSHIFT)+PGSHIFT)) #define KiB 1024u /* Kibi 0x0000000000000400 */ #define MiB 1048576u /* Mebi 0x0000000000100000 */ #define GiB 1073741824u /* Gibi 0x0000000040000000 */ #define TiB 1099511627776ull /* Tebi 0x0000010000000000 */ #define PiB 1125899906842624ull /* Pebi 0x0004000000000000 */ #define EiB 1152921504606846976ull /* Exbi 0x1000000000000000 */ #define PTLX(v, l) (((v)>>(((l)*PTSHIFT)+PGSHIFT)) & ((1<