This commit is contained in:
2026-02-03 18:13:22 +01:00
parent 609a8e80ef
commit 8cab43f197
3 changed files with 72 additions and 26 deletions

View File

@@ -22,24 +22,27 @@ typedef struct {
pagetable_entry_t entries[512];
} pagetable_t;
typedef struct {
uint8_t present:1 = 0;
uint8_t write:1 = 0;
uint8_t user:1 = 0;
uint8_t pwt:1 = 0;
uint8_t cache_disable:1 = 0;
uint8_t accessed:1 = 0;
uint8_t rsvd_0:6 = 0;
uint64_t address:39 = 0;
uint16_t rsvd_1:10 = 0;
uint8_t execute_disable:1 = 0;
} __attribute__((__packed__)) pagedirectory_entry_t;
//typedef struct {
// uint8_t present:1 = 0;
// uint8_t write:1 = 0;
// uint8_t user:1 = 0;
// uint8_t pwt:1 = 0;
// uint8_t cache_disable:1 = 0;
// uint8_t accessed:1 = 0;
// uint8_t rsvd_0:6 = 0;
// uint64_t address:39 = 0;
// uint16_t rsvd_1:10 = 0;
// uint8_t execute_disable:1 = 0;
//} __attribute__((__packed__)) pagedirectory_entry_t;
typedef struct {
alignas(4096) pagedirectory_entry_t l4;
alignas(4096) pagedirectory_entry_t l3;
alignas(4096) pagedirectory_entry_t l2[32];
alignas(4096) pagetable_t l1[32];
alignas(4096) pagetable_t l4;
alignas(4096) pagetable_t l3;
alignas(4096) pagetable_t l2;
alignas(4096) pagetable_t l1[64];
alignas(4096) pagetable_t l2_apic;
alignas(4096) pagetable_t ioapic;
alignas(4096) pagetable_t lapic;
} four_lvl_paging_t;
void create_basic_page_table(uintptr_t base);