From bdc28d793dd9b3407c513fba5c24917aa423f7ca Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sun, 12 Oct 2008 23:28:11 -0700 Subject: X86: Implement the EOI register in the local APIC. --- src/arch/x86/interrupts.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/arch/x86/interrupts.cc') diff --git a/src/arch/x86/interrupts.cc b/src/arch/x86/interrupts.cc index 148b26157..df1b40e5b 100644 --- a/src/arch/x86/interrupts.cc +++ b/src/arch/x86/interrupts.cc @@ -330,9 +330,6 @@ X86ISA::Interrupts::readReg(ApicRegIndex reg) case APIC_PROCESSOR_PRIORITY: panic("Local APIC Processor Priority register unimplemented.\n"); break; - case APIC_EOI: - panic("Local APIC EOI register unimplemented.\n"); - break; case APIC_ERROR_STATUS: regs[APIC_INTERNAL_STATE] &= ~ULL(0x1); break; @@ -391,8 +388,10 @@ X86ISA::Interrupts::setReg(ApicRegIndex reg, uint32_t val) panic("Local APIC Processor Priority register unimplemented.\n"); break; case APIC_EOI: - panic("Local APIC EOI register unimplemented.\n"); - break; + // Remove the interrupt that just completed from the local apic state. + clearRegArrayBit(APIC_IN_SERVICE_BASE, ISRV); + updateISRV(); + return; case APIC_LOGICAL_DESTINATION: newVal = val & 0xFF000000; break; -- cgit v1.2.3