Hi,
das hier ist keine Antwort sondern eine Frage.
Und zwar.. ich hab meine Interrupt Service Routinen geschrieben und soweit funktioniert das auch.
Wenn ich jetzt eine Taste drücke, dann empfange ich diesen Interrupt nur ein einziges Mal.
Jeder weitere Tastendruck wird dann nicht mehr verarbeitet (IRQ 0 wird jedoch permanent weiter
bearbeitet).
void isr_handler(cpu_state_t status)
{
if(status.int_no <= 0x1F) {
dprint("[ISR] Exception captured. Kernel stopped.");
while(1) {
// Stop CPU
asm volatile ("cli; hlt");
}
}else if (status.int_no >= 0x20 && status.int_no <= 0x2f) {
dprint("[ISR] Hardware interrupt received");
if (status.int_no >= 0x28) {
outb(0xA0, 0x20);
}
outb(0x20, 0x20); // EOI
}
dprint("[ISR] Received (but unhandled) interrupt: 0x%X", status.int_no);
}
Hat jemand eine Ahnung woran das liegen könnte?