PIC_SLAVE_IMR
cached_slave_mask = inb(PIC_SLAVE_IMR);
outb(0xff, PIC_SLAVE_IMR);
inb(PIC_SLAVE_IMR);
outb(cached_slave_mask, PIC_SLAVE_IMR);
isr = (inb(PIC_SLAVE_CMD) & ~inb(PIC_SLAVE_IMR)) << 8;
outb(0xff & ~(1 << (SCI_IRQ_NUM - 8)), PIC_SLAVE_IMR);
inb(PIC_SLAVE_IMR);
inb(PIC_SLAVE_IMR); /* DUMMY - (do we need this?) */
outb(cached_slave_mask, PIC_SLAVE_IMR);
outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */
outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */
outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */
outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */
outb_pic(ISA_IRQ_VECTOR(8), PIC_SLAVE_IMR);
outb_pic(PIC_CASCADE_IR, PIC_SLAVE_IMR);
outb_pic(SLAVE_ICW4_DEFAULT, PIC_SLAVE_IMR);
outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */
outb(cached_slave_mask, PIC_SLAVE_IMR);
outb(cached_slave_mask, PIC_SLAVE_IMR);
inb(PIC_SLAVE_IMR); /* DUMMY - (do we need this?) */
outb(cached_slave_mask, PIC_SLAVE_IMR);
outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */
outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */
outb_p(I8259A_IRQ_BASE + 8, PIC_SLAVE_IMR); /* ICW2: 8259A-2 IR0 mapped to I8259A_IRQ_BASE + 0x08 */
outb_p(PIC_CASCADE_IR, PIC_SLAVE_IMR); /* 8259A-2 is a slave on master's IR2 */
outb_p(SLAVE_ICW4_DEFAULT, PIC_SLAVE_IMR); /* (slave's support for AEOI in flat mode is to be investigated) */
outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */
.end = PIC_SLAVE_IMR,
outb(cached_slave_mask, PIC_SLAVE_IMR);
outb(cached_slave_mask, PIC_SLAVE_IMR);