aboutsummaryrefslogtreecommitdiff
path: root/src/core/paging.cc
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2021-04-25 12:41:24 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2021-04-25 12:41:24 +0200
commit7db6db5ae64e7ab2626bbd898c63f58e053dc1a6 (patch)
treeaac3b4b8755acbea397709a00611642c2534f053 /src/core/paging.cc
parent657372f1be95393b76a54f258ba3f937b4073abe (diff)
Debug multiboot, enable apic and ACPI table parsing
Diffstat (limited to 'src/core/paging.cc')
-rw-r--r--src/core/paging.cc11
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