Annotation of qemu/roms/seabios/src/pic.c, revision 1.1

1.1     ! root        1: // Helpers for working with i8259 interrupt controller.
        !             2: //
        !             3: // Copyright (C) 2008  Kevin O'Connor <[email protected]>
        !             4: // Copyright (C) 2002  MandrakeSoft S.A.
        !             5: //
        !             6: // This file may be distributed under the terms of the GNU LGPLv3 license.
        !             7: 
        !             8: #include "pic.h" // get_pic1_isr
        !             9: #include "util.h" // dprintf
        !            10: #include "config.h" // CONFIG_*
        !            11: 
        !            12: void
        !            13: pic_setup()
        !            14: {
        !            15:     dprintf(3, "init pic\n");
        !            16:     // Send ICW1 (select OCW1 + will send ICW4)
        !            17:     outb(0x11, PORT_PIC1_CMD);
        !            18:     outb(0x11, PORT_PIC2_CMD);
        !            19:     // Send ICW2 (base irqs: 0x08-0x0f for irq0-7, 0x70-0x77 for irq8-15)
        !            20:     outb(0x08, PORT_PIC1_DATA);
        !            21:     outb(0x70, PORT_PIC2_DATA);
        !            22:     // Send ICW3 (cascaded pic ids)
        !            23:     outb(0x04, PORT_PIC1_DATA);
        !            24:     outb(0x02, PORT_PIC2_DATA);
        !            25:     // Send ICW4 (enable 8086 mode)
        !            26:     outb(0x01, PORT_PIC1_DATA);
        !            27:     outb(0x01, PORT_PIC2_DATA);
        !            28:     // Mask all irqs (except cascaded PIC2 irq)
        !            29:     outb(~PIC1_IRQ2, PORT_PIC1_DATA);
        !            30:     outb(~0, PORT_PIC2_DATA);
        !            31: }
        !            32: 
        !            33: // Handler for otherwise unused hardware irqs.
        !            34: void VISIBLE16
        !            35: handle_hwpic1(struct bregs *regs)
        !            36: {
        !            37:     dprintf(DEBUG_ISR_hwpic1, "handle_hwpic1 irq=%x\n", get_pic1_isr());
        !            38:     eoi_pic1();
        !            39: }
        !            40: 
        !            41: void VISIBLE16
        !            42: handle_hwpic2(struct bregs *regs)
        !            43: {
        !            44:     dprintf(DEBUG_ISR_hwpic2, "handle_hwpic2 irq=%x\n", get_pic2_isr());
        !            45:     eoi_pic2();
        !            46: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.