mm: add get_page_dir & set_page_dir
This commit is contained in:
@@ -39,6 +39,8 @@ extern uint32_t *kpage_dir;
|
|||||||
|
|
||||||
//paging.c
|
//paging.c
|
||||||
void grub_memory_map(unsigned int magic, struct multiboot_info* mbi);
|
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 enablePaging();
|
||||||
void loadPageDirectory(uint32_t* page_directory);
|
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() {
|
void enablePaging() {
|
||||||
asm volatile (
|
asm volatile (
|
||||||
"mov %%cr0, %%eax\n"
|
"mov %%cr0, %%eax\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user