mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
Better spurious interrupt handling
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user