diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2008-10-12 23:28:11 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2008-10-12 23:28:11 -0700 |
commit | bdc28d793dd9b3407c513fba5c24917aa423f7ca (patch) | |
tree | 6615a36ede23f7cda567368204a918017d470669 /src/arch/x86/interrupts.cc | |
parent | fd376882940db45bdf7abf2fff8758b162828b83 (diff) | |
download | gem5-bdc28d793dd9b3407c513fba5c24917aa423f7ca.tar.xz |
X86: Implement the EOI register in the local APIC.
Diffstat (limited to 'src/arch/x86/interrupts.cc')
-rw-r--r-- | src/arch/x86/interrupts.cc | 9 |
1 files changed, 4 insertions, 5 deletions
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; |