summaryrefslogtreecommitdiff
path: root/kernel/src/mem/paging.c
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksav013@gmail.com>2022-09-03 23:53:53 +0200
committerAleksa Vuckovic <aleksav013@gmail.com>2022-09-04 16:42:56 +0200
commit6e9b3275d75e0cdbae1e8f7e4dda8880bb6346bc (patch)
treed6c7daf073f41ec2df196a322e8d1210d8e126a1 /kernel/src/mem/paging.c
parent11ced165e0df11cc3c889eb0cc402467361c421b (diff)
gdt & tss
Diffstat (limited to 'kernel/src/mem/paging.c')
-rw-r--r--kernel/src/mem/paging.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/src/mem/paging.c b/kernel/src/mem/paging.c
index 531c300..630fb6d 100644
--- a/kernel/src/mem/paging.c
+++ b/kernel/src/mem/paging.c
@@ -51,9 +51,10 @@ void init_paging(void)
page_table_lvl3[2] = (uint64_t)page_table_lvl2_2 + FLAG_PRESENT + FLAG_WRITABLE - KERNEL_VMA;
page_table_lvl3[3] = (uint64_t)page_table_lvl2_3 + FLAG_PRESENT + FLAG_WRITABLE - KERNEL_VMA;
- // higher half map first 4mb
- map_addr(KERNEL_VMA, 0x00000000, FLAG_PRESENT + FLAG_WRITABLE + FLAG_HUGE);
- map_addr(KERNEL_VMA + PAGE_SIZE, 0x00000000 + PAGE_SIZE, FLAG_PRESENT + FLAG_WRITABLE + FLAG_HUGE);
+ // higher half map first 6mb
+ for (size_t i = 0; i < 3; i++) {
+ map_addr(KERNEL_VMA + PAGE_SIZE * i, 0x00000000 + PAGE_SIZE * i, FLAG_PRESENT + FLAG_WRITABLE + FLAG_HUGE);
+ }
load_pt_lvl4(page_table_lvl4);
}