summaryrefslogtreecommitdiff
path: root/Kernel/Interrupts
diff options
context:
space:
mode:
authorLiav A <liavalb@gmail.com>2020-03-06 15:51:32 +0200
committerAndreas Kling <kling@serenityos.org>2020-03-24 16:15:33 +0100
commit7c859efa85f365a63e91c783f0bed90d69dca8fd (patch)
tree64534ab8e2d34820c26077357b5a6dbbe0819d81 /Kernel/Interrupts
parentf7b207c7ae92c756c0243dd5c093e5f48b865dba (diff)
downloadserenity-7c859efa85f365a63e91c783f0bed90d69dca8fd.zip
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.
Diffstat (limited to 'Kernel/Interrupts')
-rw-r--r--Kernel/Interrupts/APIC.cpp3
1 files changed, 2 insertions, 1 deletions
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);