diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-09-08 14:37:47 +0200 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-09-08 14:38:29 +0200 |
| commit | 82e9f02aef1ea1a6588234ee58e3625e3561005f (patch) | |
| tree | 80214489336fa2cc1c615bd63b133934832a5ba4 /kernel/src/cpu | |
| parent | 1effe3b9ac0bb1a819f6ae5ebb8438e60b77f9a2 (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')
| -rw-r--r-- | kernel/src/cpu/gdt.c | 6 |
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() |
