Page
struct page { uint64_t meta;};struct page_table { pte_t entries[512];};struct page_table referenced types:
struct page page_for_pfn(uint64_t pfn);page_for_pfn referenced types:
uint64_t page_get_pfn(struct page *bp);page_get_pfn referenced types:
Defines
Section titled “Defines”#define PAGE_SIZE 4096ULL#define PAGE_2MB 0x200000ULL#define PAGE_1GB 0x40000000ULL#define PAGE_PRESENT (0x1UL)#define PAGE_WRITE (0x2UL)#define PAGE_USER_ALLOWED (0x4UL)#define PAGE_ALL 0xFFFUL#define PAGE_XD (1UL << 63) // E(x)ecute (D)isable#define PAGE_PHYS_MASK (0x00FFFFFFF000UL)#define PAGE_PAGE_SIZE (1UL << 7)#define PAGE_UNCACHABLE ((1UL << 4) | PAGE_WRITE)#define PAGE_NO_FLAGS (0)#define PAGE_WRITETHROUGH (1UL << 3)#define PAGE_2MB_page (1ULL << 7)#define PAGE_PAGEABLE (0)#define PAGE_MOVABLE (0)#define PAGE_2MB_PHYS_MASK (~((uintptr_t) PAGE_2MB - 1))#define PAGE_ALIGN_DOWN(x) ALIGN_DOWN((uintptr_t) (x), PAGE_SIZE)#define PAGE_ALIGN_UP(x) ALIGN_UP((uintptr_t) (x), PAGE_SIZE)#define IS_PAGE_ALIGNED(x) IS_ALIGNED((uintptr_t) (x), PAGE_SIZE)#define PAGE_2MB_ALIGN_DOWN(x) ALIGN_DOWN((uintptr_t) (x), PAGE_2MB)#define PAGE_2MB_ALIGN_UP(x) ALIGN_UP((uintptr_t) (x), PAGE_2MB)#define PAGE_1GB_ALIGN_DOWN(x) ALIGN_DOWN((uintptr_t) (x), PAGE_1GB)#define PAGE_1GB_ALIGN_UP(x) ALIGN_UP((uintptr_t) (x), PAGE_1GB)#define PAGE_TO_PFN(addr) ((addr) / PAGE_SIZE)#define PFN_TO_PAGE(pfn) ((pfn) * PAGE_SIZE)#define PAGES_NEEDED_FOR(bytes) (((bytes) + PAGE_SIZE - 1ULL) / PAGE_SIZE)#define VMM_MAP_BASE 0xFFFFA00000200000#define VMM_MAP_LIMIT 0xFFFFA00010000000#define PT_ENTRIES 512#define PT_INDEX_MASK 0x1FFULL#define PAGE_4K_SHIFT 12#define PAGE_2M_SHIFT 21#define PAGE_1G_SHIFT 30#define PAGE_4K_MASK ((1ULL << PAGE_4K_SHIFT) - 1)#define PAGE_2M_MASK ((1ULL << PAGE_2M_SHIFT) - 1)