Better spurious interrupt handling

This commit is contained in:
Justin C. Miller
2018-09-16 23:50:54 -07:00
parent c67c1bd6a2
commit d469482a7f
3 changed files with 6 additions and 2 deletions

View File

@@ -62,7 +62,7 @@ lapic::calibrate_timer()
outb(0x43, command); outb(0x43, command);
const uint32_t initial = -1u; const uint32_t initial = -1u;
enable_timer_internal(isr::isrIgnore0, 1, initial, false); enable_timer_internal(isr::isrSpurious, 1, initial, false);
const int iterations = 5; const int iterations = 5;
for (int i=0; i<iterations; ++i) { for (int i=0; i<iterations; ++i) {

View File

@@ -240,10 +240,10 @@ IRQ (0xdf, 0xbf, irqBF)
ISR (0xe0, isrTimer) ISR (0xe0, isrTimer)
ISR (0xe1, isrLINT0) ISR (0xe1, isrLINT0)
ISR (0xe2, isrLINT1) ISR (0xe2, isrLINT1)
ISR (0xe3, isrSpurious)
ISR (0xe4, isrAssert) ISR (0xe4, isrAssert)
UISR(0xee, isrSyscall) UISR(0xee, isrSyscall)
ISR (0xef, isrSpurious)
ISR (0xf0, isrIgnore0) ISR (0xf0, isrIgnore0)
ISR (0xf1, isrIgnore1) ISR (0xf1, isrIgnore1)

View File

@@ -204,6 +204,10 @@ isr_handler(addr_t return_rsp, cpu_state regs)
} }
break; break;
case isr::isrSpurious:
// No EOI for the spurious interrupt
return return_rsp;
case isr::isrIgnore0: case isr::isrIgnore0:
case isr::isrIgnore1: case isr::isrIgnore1:
case isr::isrIgnore2: case isr::isrIgnore2: