diff options
Diffstat (limited to 'src/core/paging.cc')
| -rw-r--r-- | src/core/paging.cc | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/core/paging.cc b/src/core/paging.cc index b9ab94e..8e58511 100644 --- a/src/core/paging.cc +++ b/src/core/paging.cc @@ -4,6 +4,7 @@ #include "libs/string.hpp" char paging_status[PAGING_MAX_PAGE / 8]; +u64* kpml4; void paging_enable() { // Init status @@ -16,16 +17,16 @@ void paging_enable() { paging_allocate_contiguous(PAGING_KERNEL_USED_PAGE); // Setting up new kernel address space - u64* pml4=paging_allocate_table(); + kpml4=paging_allocate_table(); for(int i=0;i<PAGING_KERNEL_SPACE_MAX_PAGE;i++){ int addr=i*4096; - paging_allocate_addr(pml4,addr,addr, PAGING_OPT_P|PAGING_OPT_RW); // Identity map + paging_allocate_addr(kpml4,addr,addr, PAGING_OPT_P|PAGING_OPT_RW); // Identity map } // Load new pml4 asm volatile( "movq %0, %%rax \n\t" "movq %%rax, %%cr3 \n\t" - :: "r" (pml4)); + :: "r" (kpml4)); } u64 paging_as_phy(u64* pml4_table, u64 virt){ @@ -166,8 +167,4 @@ void paging_allocate_addr(u64* pml4_table, u64 virt, u64 phy, u16 options){ pt_table[pt]|=options; return; } - - printk("Virtual address %x already in use. Kernel panic!",virt); - while(1); - }
\ No newline at end of file |
