diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5008ddf..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index 8f8b858..f848b2f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ *.dis *.elf *.sym +.DS_STORE diff --git a/19-interrupts-irqs/cpu/isr.c b/19-interrupts-irqs/cpu/isr.c index 4687c24..fcc613b 100644 --- a/19-interrupts-irqs/cpu/isr.c +++ b/19-interrupts-irqs/cpu/isr.c @@ -129,9 +129,11 @@ void register_interrupt_handler(u8 n, isr_t handler) { } void irq_handler(registers_t r) { - /* If the irq involves the slave (IRQ > 7), send an EOI to it */ - if (r.int_no >= 40) port_byte_out(0xA0, 0x20); - port_byte_out(0x20, 0x20); /* Send EOI to master */ + /* After every interrupt we need to send an EOI to the PICs + * or they will not send another interrupt again */ + if (r.int_no >= 40) port_byte_out(0xA0, 0x20); /* slave */ + port_byte_out(0x20, 0x20); /* master */ + /* Handle the interrupt in a more modular way */ if (interrupt_handlers[r.int_no] != 0) { isr_t handler = interrupt_handlers[r.int_no];