IO_ICU1
outb(IO_ICU1 + ICU_IMR_OFFSET, 0xff);
irr1 = inb(IO_ICU1);
outb(IO_ICU1, 0x13);
outb(IO_ICU1 + 1, vec); /* start vector (unused) */
outb(IO_ICU1 + 1, 0x00); /* ignore slave */
outb(IO_ICU1 + 1, 0x03); /* auto EOI, 8086 */
outb(IO_ICU1 + 1, mask);
outb(IO_ICU1 + ICU_IMR_OFFSET, 0xff);
outb(IO_ICU1, 0x11); /* reset; program device, four bytes */
outb(IO_ICU1 + ICU_IMR_OFFSET, IDT_OFFSET);
outb(IO_ICU1 + ICU_IMR_OFFSET, 1 << ICU_IRQ_SLAVE);
outb(IO_ICU1 + ICU_IMR_OFFSET, auto_eoi | 1); /* 8086 mode */
outb(IO_ICU1 + ICU_IMR_OFFSET, 0xff); /* leave interrupts masked */
outb(IO_ICU1, 0x0a); /* default to IRR on read */
outb(IO_ICU1, 0xc0 | (3 - 1)); /* pri order 3-7, 0-2 (com2 first) */