map apic
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user