diff options
-rw-r--r-- | kernel/CMakeLists.txt | 2 | ||||
-rw-r--r-- | kernel/include/mm/virtual_mm.h | 1 | ||||
-rw-r--r-- | kernel/mm/virtual_mm/virtual_mm.c | 11 |
3 files changed, 7 insertions, 7 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 72365fb..ceb3740 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -33,7 +33,7 @@ set(C_COMPILE_OPTIONS -fstack-protector -fstack-protector-all - -O3 + # -O3 -Wall -Wextra diff --git a/kernel/include/mm/virtual_mm.h b/kernel/include/mm/virtual_mm.h index ad2b961..5259ee0 100644 --- a/kernel/include/mm/virtual_mm.h +++ b/kernel/include/mm/virtual_mm.h @@ -22,7 +22,6 @@ #include <stdbool.h> #include <stdint.h> -#define PAGE_SIZE (4096 * KiB) #define PAGE_DIRECTORY_SIZE 1024 #define PAGE_TABLE_SIZE 1024 diff --git a/kernel/mm/virtual_mm/virtual_mm.c b/kernel/mm/virtual_mm/virtual_mm.c index 0f55950..7007350 100644 --- a/kernel/mm/virtual_mm/virtual_mm.c +++ b/kernel/mm/virtual_mm/virtual_mm.c @@ -76,10 +76,7 @@ virtual_mm_lookup_directory(uint32_t *page_directory, uint32_t virtual_addr) ALWAYS_INLINE void virtual_mm_load_page_directory(uint32_t *page_directory) { - __asm__("movl %0, %%eax" ::"r"(page_directory) : "%eax"); - /* For some reason, that colon is required; else the assembler thinks that - * %eax doesn't exist :^) */ - __asm__("movl %%eax, %%cr3" ::: "%eax"); + __asm__("movl %0, %%cr3" ::"r"(page_directory)); } bool @@ -158,6 +155,9 @@ virtual_mm_initialize(void) table[PAGE_TABLE_INDEX(virtual_addr)] = page; } + printk("\n\ndebug", + "Table: 0x%x", + GET_PTE_FRAME(&table[PAGE_TABLE_INDEX(0x2000)])); uint32_t *page_directory = physical_mm_allocate_block(); if (!page_directory) @@ -166,12 +166,13 @@ virtual_mm_initialize(void) for (uint32_t i = 0; i < 1024; i++) page_directory[i] = 0; + current_page_directory = page_directory; + uint32_t *pd_entry = &page_directory[PAGE_DIRECTORY_INDEX(0)]; ADD_ATTRIB(pd_entry, SET_PDE_PRESENT(1)); ADD_ATTRIB(pd_entry, SET_PDE_WRITABLE(1)); ADD_ATTRIB(pd_entry, SET_PDE_FRAME((uint32_t) table)); - current_page_directory = page_directory; virtual_mm_switch_page_directory(current_page_directory); virtual_mm_enable_paging(); } |