5.7. picinit関数
この関数はMPに対応していない古いPICでの割り込みを無効化する。
outb関数でポート0x20と0xA1に0xFFを書き込んでいる。 「OSDev I/O Ports」(リンク10)によると、ポート0x21はThe first Programmable Interrupt Controllerで、ポート0xA1はThe second PIC。 「OSDev 8259 PIC」(リンク16)の「Disabling」によると、LAPICとIOAPICを使用する場合はPICを無効化しなければいならず、その方法として0xFFを設定する。
picirq.c
#define IO_PIC1 0x20 // Master (IRQs 0-7)
#define IO_PIC2 0xA0 // Slave (IRQs 8-15)
// Don't use the 8259A interrupt controllers. Xv6 assumes SMP hardware.
void
picinit(void)
{
// mask all interrupts
outb(IO_PIC1+1, 0xFF);
outb(IO_PIC2+1, 0xFF);
}