From 82e9f02aef1ea1a6588234ee58e3625e3561005f Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Thu, 8 Sep 2022 14:37:47 +0200 Subject: higher half in x86_64 kernel is now located at -2GB heap blocks are aligned on block size paging will allocate new page tables on heap --- kernel/src/cpu/gdt.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'kernel/src/cpu/gdt.c') diff --git a/kernel/src/cpu/gdt.c b/kernel/src/cpu/gdt.c index 7ce51f1..743b629 100644 --- a/kernel/src/cpu/gdt.c +++ b/kernel/src/cpu/gdt.c @@ -17,7 +17,11 @@ void add_gdt_entry(uint32_t num, uint32_t offset, uint32_t limit, uint8_t access void add_gdt_tss(uint32_t num, uint64_t offset, uint32_t limit, uint8_t access, uint8_t flags) { - add_gdt_entry(num, offset & 0xffffffff, limit, access, flags); + uint32_t offset_low = (offset & 0xffffffff); + uint32_t offset_high = (uint32_t)(offset >> 32); + add_gdt_entry(num, offset_low, limit, access, flags); + gdt[num+1].limit = (offset_high & 0xffff); + gdt[num+1].offset1 = (uint16_t)(offset_high >> 16); } void reload_gdt() -- cgit v1.2.3