#pragma once #include #ifndef PAGE_SIZE #define PAGE_SIZE 4096 #endif struct PageDirectoryEntry { bool present : 1; bool read_write : 1; bool user : 1; bool write_through : 1; bool cache_disabled : 1; bool accessed : 1; bool ignore0 : 1; bool larger_pages : 1; bool ignore1 : 1; uint8_t available : 3; uint64_t address : 52; void set_address(uint64_t addr); uint64_t get_address(); }; struct PageTable { PageDirectoryEntry entries[512]; } __attribute__((aligned(PAGE_SIZE)));