From 7c859efa85f365a63e91c783f0bed90d69dca8fd Mon Sep 17 00:00:00 2001 From: Liav A Date: Fri, 6 Mar 2020 15:51:32 +0200 Subject: [PATCH] Kernel: Change the Spurious Interrupt Handler offset in the APIC The Spurious Interrupt Handler number that is written to APIC_REG_SIV is correct now. --- Kernel/Interrupts/APIC.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Kernel/Interrupts/APIC.cpp b/Kernel/Interrupts/APIC.cpp index 67c25db878..0bc34d3507 100644 --- a/Kernel/Interrupts/APIC.cpp +++ b/Kernel/Interrupts/APIC.cpp @@ -159,6 +159,7 @@ void eoi() bool init() { + // FIXME: Use the ACPI MADT table if (!MSR::have()) return false; @@ -189,7 +190,7 @@ void enable(u32 cpu) // dummy read, apparently to avoid a bug in old CPUs. read_register(APIC_REG_SIV); // set spurious interrupt vector - write_register(APIC_REG_SIV, IRQ_APIC_SPURIOUS | 0x100); + write_register(APIC_REG_SIV, (IRQ_APIC_SPURIOUS + IRQ_VECTOR_BASE) | 0x100); // local destination mode (flat mode) write_register(APIC_REG_DF, 0xf0000000);