memlayout.h

// メモリのレイアウト

#define EXTMEM  0x100000            // extended memoryの開始アドレス
#define PHYSTOP 0xE000000           // 物理メモリの先頭
#define DEVSPACE 0xFE000000         // 他のデバイスは、より高いアドレスにある

// Key addresses for address space layout (see kmap in vm.c for layout)
#define KERNBASE 0x80000000         // カーネルの最初の仮想アドレス
#define KERNLINK (KERNBASE+EXTMEM)  // カーネルがリンクされるアドレス

#define V2P(a) (((uint) (a)) - KERNBASE)
#define P2V(a) (((void *) (a)) + KERNBASE)

#define V2P_WO(x) ((x) - KERNBASE)    // same as V2P, but without casts
#define P2V_WO(x) ((x) + KERNBASE)    // same as P2V, but without casts