#include void pic_send_eoi(uint8_t irq) { if (irq > 7) outportb(PIC_2_COMMAND, PIC_EOI); else outportb(PIC_1_COMMAND, PIC_EOI); } void pic_remap(int pic1_start, int pic2_start) { // Mask all IRQ lines outportb(PIC_1_DATA, 0xff); outportb(PIC_2_DATA, 0xff); // Initialize master PIC outportb(PIC_1_COMMAND, ICW4_NEEDED | INIT_BIT); outportb(PIC_1_DATA, pic1_start); outportb(PIC_1_DATA, PIC_1_ICW3); outportb(PIC_1_DATA, 0x01); // Initialize slave PIC outportb(PIC_2_COMMAND, ICW4_NEEDED | INIT_BIT); outportb(PIC_2_DATA, pic2_start); outportb(PIC_2_DATA, PIC_2_ICW3); outportb(PIC_2_DATA, 0x01); // Unmask outportb(PIC_1_DATA, 0b11111101); outportb(PIC_2_DATA, 0b11111101); }