Better spurious interrupt handling
This commit is contained in:
@@ -62,7 +62,7 @@ lapic::calibrate_timer()
|
||||
outb(0x43, command);
|
||||
|
||||
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;
|
||||
for (int i=0; i<iterations; ++i) {
|
||||
|
||||
@@ -240,10 +240,10 @@ IRQ (0xdf, 0xbf, irqBF)
|
||||
ISR (0xe0, isrTimer)
|
||||
ISR (0xe1, isrLINT0)
|
||||
ISR (0xe2, isrLINT1)
|
||||
ISR (0xe3, isrSpurious)
|
||||
ISR (0xe4, isrAssert)
|
||||
|
||||
UISR(0xee, isrSyscall)
|
||||
ISR (0xef, isrSpurious)
|
||||
|
||||
ISR (0xf0, isrIgnore0)
|
||||
ISR (0xf1, isrIgnore1)
|
||||
|
||||
@@ -204,6 +204,10 @@ isr_handler(addr_t return_rsp, cpu_state regs)
|
||||
}
|
||||
break;
|
||||
|
||||
case isr::isrSpurious:
|
||||
// No EOI for the spurious interrupt
|
||||
return return_rsp;
|
||||
|
||||
case isr::isrIgnore0:
|
||||
case isr::isrIgnore1:
|
||||
case isr::isrIgnore2:
|
||||
|
||||
Reference in New Issue
Block a user