summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/page_directory.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/page_directory.c')
-rw-r--r--arch/x86_64/page_directory.c11
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;
}