From 3b6a300ed712b8e7e7d4151c5dfad46eb735ce16 Mon Sep 17 00:00:00 2001 From: Tom Finet Date: Sun, 18 Feb 2024 18:23:49 +0000 Subject: [PATCH] Kernel: Resolve FIXME relating to the gate type arg for x86 Interrupts According to the Intel Software Developer's Manual Volume 3A section 6.12.1.3, the interrupt gate type means the IF flag is cleared to prevent nested interruption. The trap gate type does not modify the IF flag. Thus the gate type argument is important when constructing an IDTEntry. --- Kernel/Arch/x86_64/Interrupts.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Kernel/Arch/x86_64/Interrupts.cpp b/Kernel/Arch/x86_64/Interrupts.cpp index c71b7e20ce..213e134c8c 100644 --- a/Kernel/Arch/x86_64/Interrupts.cpp +++ b/Kernel/Arch/x86_64/Interrupts.cpp @@ -463,13 +463,11 @@ void unregister_generic_interrupt_handler(u8 interrupt_number, GenericInterruptH UNMAP_AFTER_INIT void register_interrupt_handler(u8 index, void (*handler)()) { - // FIXME: Is the Gate Type really required to be an Interrupt s_idt[index] = IDTEntry((FlatPtr)handler, GDT_SELECTOR_CODE0, IDTEntryType::InterruptGate32, 0); } UNMAP_AFTER_INIT void register_user_callable_interrupt_handler(u8 index, void (*handler)()) { - // FIXME: Is the Gate Type really required to be a Trap s_idt[index] = IDTEntry((FlatPtr)handler, GDT_SELECTOR_CODE0, IDTEntryType::TrapGate32, 3); }