aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-01-11 13:42:01 -0500
committerRaghuram Subramani <raghus2247@gmail.com>2025-01-11 13:42:01 -0500
commit2dd979123dc38378088d1be39e2253aaf002e4ca (patch)
treed50ba988cf994179ef7d142dcf145e8721f34356
parent5cbf0b467e91953d8d072470825ffdf5bd23e049 (diff)
virtual_mm: Progress on the still disfunctional virtual mm
-rw-r--r--kernel/CMakeLists.txt2
-rw-r--r--kernel/include/mm/virtual_mm.h1
-rw-r--r--kernel/mm/virtual_mm/virtual_mm.c11
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();
}