X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/cd09c4b222e4ddf45a42522563ae2471a829d1c8..33e7863900e90b0b30e296fa52861965264e2393:/lunaix-os/kernel/asm/x86/gdt.c diff --git a/lunaix-os/kernel/asm/x86/gdt.c b/lunaix-os/kernel/asm/x86/gdt.c index 41c597e..1bd1c00 100644 --- a/lunaix-os/kernel/asm/x86/gdt.c +++ b/lunaix-os/kernel/asm/x86/gdt.c @@ -1,7 +1,8 @@ #include +#include #include -#define GDT_ENTRY 5 +#define GDT_ENTRY 6 uint64_t _gdt[GDT_ENTRY]; uint16_t _gdt_limit = sizeof(_gdt) - 1; @@ -12,7 +13,8 @@ void _set_gdt_entry(uint32_t index, uint32_t base, uint32_t limit, uint32_t flag _gdt[index] |= SEG_BASE_L(base) | SEG_LIM_L(limit); } - +extern struct x86_tss _tss; + void _init_gdt() { _set_gdt_entry(0, 0, 0, 0); @@ -20,4 +22,5 @@ _init_gdt() { _set_gdt_entry(2, 0, 0xfffff, SEG_R0_DATA); _set_gdt_entry(3, 0, 0xfffff, SEG_R3_CODE); _set_gdt_entry(4, 0, 0xfffff, SEG_R3_DATA); + _set_gdt_entry(5, &_tss, sizeof(struct x86_tss) - 1, SEG_TSS); } \ No newline at end of file