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.
This commit is contained in:
Liav A 2020-03-06 15:51:32 +02:00 committed by Andreas Kling
parent f7b207c7ae
commit 7c859efa85
Notes: sideshowbarker 2024-07-19 08:09:39 +09:00

View file

@ -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);