浏览代码

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.
Liav A 5 年之前
父节点
当前提交
7c859efa85
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      Kernel/Interrupts/APIC.cpp

+ 2 - 1
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);