diff options
Diffstat (limited to 'memlayout.h')
-rw-r--r-- | memlayout.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/memlayout.h b/memlayout.h new file mode 100644 index 0000000..3958062 --- /dev/null +++ b/memlayout.h @@ -0,0 +1,26 @@ +// Memory layout + +#define PGSIZE 4096 // bytes mapped by a page +#define PGSHIFT 12 // log2(PGSIZE) + +#define KSTKSIZE (8*PGSIZE) // size of a kernel stack + +#define IOSPACEB 0x0A0000 // begin IO space +#define IOSPACEE 0x100000 // end IO space +#define PHYSTOP 0xE000000 // use phys mem up to here as free pool + +// Key addresses for address space layout (see kmap in vm.c for the actual layout) +#define KERNBASE 0xF0000000 // First kernel virtual address +#define USERTOP (KERNBASE-PGSIZE) // Highest user virtual address +#define KERNLINK 0xF0100000 // Address where kernel is linked + +#ifndef __ASSEMBLER__ + +static inline uint v2p(void *a) { return (uint) a - KERNBASE; } +static inline void *p2v(uint a) { return (void *) a + KERNBASE; } + +#endif + +#define V2P(a) ((uint) a - KERNBASE) +#define P2V(a) ((void *) a + KERNBASE) + |