diff --git a/include/mm/mm.h b/include/mm/mm.h index ac51f36..c50e3c0 100644 --- a/include/mm/mm.h +++ b/include/mm/mm.h @@ -132,7 +132,7 @@ void MmInitGdt(void); // // Loads the descriptor table // -extern void MmLoadGdt(ulong ds, ulong cs, ulong tr); +extern void MmLoadGdt(); // diff --git a/kaleid/kernel/init/init.c b/kaleid/kernel/init/init.c index f2271cd..06e59ff 100644 --- a/kaleid/kernel/init/init.c +++ b/kaleid/kernel/init/init.c @@ -49,6 +49,7 @@ noreturn void BtStartKern(multiboot_info_t *mbInfo, uint mbMagic, void *codeSeg) // Memory MmInitMemoryMap(); + MmInitGdt(); MmInitPaging(); MmInitHeap(); diff --git a/kaleid/kernel/mm/gdt.asm b/kaleid/kernel/mm/gdt.asm index 6e4f380..49a2947 100644 --- a/kaleid/kernel/mm/gdt.asm +++ b/kaleid/kernel/mm/gdt.asm @@ -33,24 +33,13 @@ global MmStoreGdt ;; Loads the GDT ;; MmLoadGdt: - ;; Loading the gdt via the gdtPtr pointer - lgdt [rel gdtPtr] - - ;; Reloading the segment registers - mov ax, si ; data segment - mov ds, ax - mov es, ax - mov fs, ax - mov gs, ax - mov ss, ax - mov cs, di ; code segment + lgdt [gdtPtr] ;; We must far jump because we changed the GDT - lea rax, [rel .next] + lea rax, [.next] push rax ret - .next: ;ltr dx ; the TSS ret diff --git a/kaleid/kernel/mm/gdt.c b/kaleid/kernel/mm/gdt.c index d576873..ec5d221 100644 --- a/kaleid/kernel/mm/gdt.c +++ b/kaleid/kernel/mm/gdt.c @@ -76,7 +76,7 @@ void MmInitGdt(void) /* SetTssEntry(2, (ulong)&tssEntry, sizeof(TssEntry_t)); */ - /* MmLoadGdt(0x8, 0x0, 2 << 3); */ + MmLoadGdt(); }