/* See COPYRIGHT for copyright information. */ #include "types.h" #include "x86.h" #include "defs.h" #define MAX_IRQS 16 // Number of IRQs // I/O Addresses of the two 8259A programmable interrupt controllers #define IO_PIC1 0x20 // Master (IRQs 0-7) #define IO_PIC2 0xA0 // Slave (IRQs 8-15) #define IRQ_SLAVE 2 // IRQ at which slave connects to master #define IRQ_OFFSET 32 // IRQ 0 corresponds to int IRQ_OFFSET // Current IRQ mask. // Initial IRQ mask has interrupt 2 enabled (for slave 8259A). uint16_t irq_mask_8259A = 0xFFFF & ~(1<> 8)); cprintf("enabled interrupts:"); for (i = 0; i < 16; i++) if (~mask & (1<