diff --git a/Kernel/Arch/x86/DescriptorTable.h b/Kernel/Arch/x86/DescriptorTable.h index bf6f509672..475318af6d 100644 --- a/Kernel/Arch/x86/DescriptorTable.h +++ b/Kernel/Arch/x86/DescriptorTable.h @@ -31,10 +31,11 @@ static_assert(GDT_SELECTOR_CODE0 + 16 == GDT_SELECTOR_CODE3); // CS3 = CS0 + 16 static_assert(GDT_SELECTOR_CODE0 + 24 == GDT_SELECTOR_DATA3); // SS3 = CS0 + 32 #else # define GDT_SELECTOR_CODE0 0x08 -# define GDT_SELECTOR_CODE3 0x10 +# define GDT_SELECTOR_DATA0 0x10 # define GDT_SELECTOR_DATA3 0x18 -# define GDT_SELECTOR_TSS 0x20 -# define GDT_SELECTOR_TSS_PART2 0x28 +# define GDT_SELECTOR_CODE3 0x20 +# define GDT_SELECTOR_TSS 0x28 +# define GDT_SELECTOR_TSS_PART2 0x30 #endif namespace Kernel { diff --git a/Kernel/Arch/x86/common/Processor.cpp b/Kernel/Arch/x86/common/Processor.cpp index 7987f49425..c6c5b3174c 100644 --- a/Kernel/Arch/x86/common/Processor.cpp +++ b/Kernel/Arch/x86/common/Processor.cpp @@ -1156,8 +1156,9 @@ UNMAP_AFTER_INIT void Processor::gdt_init() write_raw_gdt_entry(GDT_SELECTOR_DATA3, 0x0000ffff, 0x00cff200); // data3 #else write_raw_gdt_entry(GDT_SELECTOR_CODE0, 0x0000ffff, 0x00af9a00); // code0 - write_raw_gdt_entry(GDT_SELECTOR_CODE3, 0x0000ffff, 0x00affa00); // code3 + write_raw_gdt_entry(GDT_SELECTOR_DATA0, 0x0000ffff, 0x00af9200); // data0 write_raw_gdt_entry(GDT_SELECTOR_DATA3, 0x0000ffff, 0x008ff200); // data3 + write_raw_gdt_entry(GDT_SELECTOR_CODE3, 0x0000ffff, 0x00affa00); // code3 #endif #if ARCH(I386)