summaryrefslogtreecommitdiff
path: root/kernel/src/cpu/gdt.c
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksav013@gmail.com>2022-09-08 14:37:47 +0200
committerAleksa Vuckovic <aleksav013@gmail.com>2022-09-08 14:38:29 +0200
commit82e9f02aef1ea1a6588234ee58e3625e3561005f (patch)
tree80214489336fa2cc1c615bd63b133934832a5ba4 /kernel/src/cpu/gdt.c
parent1effe3b9ac0bb1a819f6ae5ebb8438e60b77f9a2 (diff)
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
Diffstat (limited to 'kernel/src/cpu/gdt.c')
-rw-r--r--kernel/src/cpu/gdt.c6
1 files changed, 5 insertions, 1 deletions
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()