// Intel 8259A programmable interrupt controllers. #include "types.h" #include "x86.h" #include "traps.h" // I/O Addresses of the two 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 // Current IRQ mask. // Initial IRQ mask has interrupt 2 enabled (for slave 8259A). static ushort irqmask = 0xFFFF & ~(1<> 8); } void picenable(int irq) { picsetmask(irqmask & ~(1<