mm: add get_page_dir & set_page_dir
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user