diff --git a/src/system/boot/platform/efi/arch/x86_64/arch_mmu.cpp b/src/system/boot/platform/efi/arch/x86_64/arch_mmu.cpp index bc6eb69aa2..d166ddf085 100644 --- a/src/system/boot/platform/efi/arch/x86_64/arch_mmu.cpp +++ b/src/system/boot/platform/efi/arch/x86_64/arch_mmu.cpp @@ -22,10 +22,6 @@ #include "efi_platform.h" -#undef BOOT_GDT_SEGMENT_COUNT -#define BOOT_GDT_SEGMENT_COUNT (USER_DATA_SEGMENT + 1) - - extern uint64 gLongGDT; extern uint64 gLongGDTR; segment_descriptor gBootGDT[BOOT_GDT_SEGMENT_COUNT]; @@ -34,6 +30,11 @@ segment_descriptor gBootGDT[BOOT_GDT_SEGMENT_COUNT]; static void long_gdt_init() { + STATIC_ASSERT(BOOT_GDT_SEGMENT_COUNT > KERNEL_CODE_SEGMENT + && BOOT_GDT_SEGMENT_COUNT > KERNEL_DATA_SEGMENT + && BOOT_GDT_SEGMENT_COUNT > USER_CODE_SEGMENT + && BOOT_GDT_SEGMENT_COUNT > USER_DATA_SEGMENT); + clear_segment_descriptor(&gBootGDT[0]); // Set up code/data segments (TSS segments set up later in the kernel).