diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2021-04-25 12:41:24 +0200 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2021-04-25 12:41:24 +0200 |
| commit | 7db6db5ae64e7ab2626bbd898c63f58e053dc1a6 (patch) | |
| tree | aac3b4b8755acbea397709a00611642c2534f053 /src/core/paging.cc | |
| parent | 657372f1be95393b76a54f258ba3f937b4073abe (diff) | |
Debug multiboot, enable apic and ACPI table parsing
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 |
