diff options
Diffstat (limited to 'arch/x86_64/page_directory.c')
-rw-r--r-- | arch/x86_64/page_directory.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/x86_64/page_directory.c b/arch/x86_64/page_directory.c index 0506703..bcc71cf 100644 --- a/arch/x86_64/page_directory.c +++ b/arch/x86_64/page_directory.c @@ -6,6 +6,7 @@ #include "object.h" #include "string.h" #include "jove.h" +#include <stdint.h> physptr_t s_kpbase(void); @@ -45,6 +46,12 @@ pmle_get_page(pmle_t entry) return vmem_phys_tovirt(pptr); } +uint8_t +pmle_level(pmle_t entry) +{ + return entry.osflg; +} + __attribute__((aligned(0x1000))) pmle_t s_kernel_pml4[512]; // Page L4 __attribute__((aligned(0x1000))) pmle_t s_kernel_pml3[512]; // Page L3 __attribute__((aligned(0x1000))) pmle_t s_kernel_pml2[512]; // Page directory @@ -107,8 +114,8 @@ vmem_setup(void) //Add page mapping object to init directory. uint8_t pm_i = _initDirectory.self.data++; _initDirectory.entries[pm_i] = (objdir_entry_t) { - .type = KO_MEMORY_MAPPING_PAGE, - .data = kernel_pml4_base + .type = KO_MEMORY_MAPPING, + .data = kernel_pml4_base | 3 }; _initData.pm_object = pm_i; } |