From 33aa97c6ecca18b3c507ccc08172366eccfa7730 Mon Sep 17 00:00:00 2001 From: Ruslan Isaev Date: Sat, 31 May 2025 18:09:56 +0300 Subject: [PATCH] mm: add get_page_dir & set_page_dir --- include/paging.h | 2 ++ src/mm/paging.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/include/paging.h b/include/paging.h index 8271429..8131e02 100644 --- a/include/paging.h +++ b/include/paging.h @@ -39,6 +39,8 @@ extern uint32_t *kpage_dir; //paging.c void grub_memory_map(unsigned int magic, struct multiboot_info* mbi); +uint32_t* get_page_dir(); +void set_page_dir(uint32_t new_page_dir); void enablePaging(); void loadPageDirectory(uint32_t* page_directory); diff --git a/src/mm/paging.c b/src/mm/paging.c index 1699a89..47867ab 100644 --- a/src/mm/paging.c +++ b/src/mm/paging.c @@ -112,6 +112,17 @@ void grub_memory_map(unsigned int magic, struct multiboot_info* mbi) } } +uint32_t* get_page_dir() +{ + uint32_t cr3_value; + asm volatile("mov %%cr3, %0" : "=r" (cr3_value)); + return (uint32_t*) cr3_value; +} + +void set_page_dir(uint32_t new_page_dir) { + asm volatile("mov %0, %%cr3" : : "r" (new_page_dir)); +} + void enablePaging() { asm volatile ( "mov %%cr0, %%eax\n"