void ISRInstall() { IDTSetGate(0, (unsigned long)&isr0, 0x08, 0x8E); IDTSetGate(1, (unsigned long)&isr1, 0x08, 0x8E); IDTSetGate(2, (unsigned long)&isr2, 0x08, 0x8E); IDTSetGate(3, (unsigned long)&isr3, 0x08, 0x8E); IDTSetGate(4, (unsigned long)&isr4, 0x08, 0x8E); IDTSetGate(5, (unsigned long)&isr5, 0x08, 0x8E); IDTSetGate(6, (unsigned long)&isr6, 0x08, 0x8E); IDTSetGate(7, (unsigned long)&isr7, 0x08, 0x8E); IDTSetGate(8, (unsigned long)&isr8, 0x08, 0x8E); IDTSetGate(9, (unsigned long)&isr9, 0x08, 0x8E); IDTSetGate(10, (unsigned long)&isr10, 0x08, 0x8E); IDTSetGate(11, (unsigned long)&isr11, 0x08, 0x8E); IDTSetGate(12, (unsigned long)&isr12, 0x08, 0x8E); IDTSetGate(13, (unsigned long)&isr13, 0x08, 0x8E); IDTSetGate(14, (unsigned long)&isr14, 0x08, 0x8E); IDTSetGate(15, (unsigned long)&isr15, 0x08, 0x8E); IDTSetGate(16, (unsigned long)&isr16, 0x08, 0x8E); IDTSetGate(17, (unsigned long)&isr17, 0x08, 0x8E); IDTSetGate(18, (unsigned long)&isr18, 0x08, 0x8E); IDTSetGate(19, (unsigned long)&isr19, 0x08, 0x8E); IDTSetGate(20, (unsigned long)&isr20, 0x08, 0x8E); IDTSetGate(21, (unsigned long)&isr21, 0x08, 0x8E); IDTSetGate(22, (unsigned long)&isr22, 0x08, 0x8E); IDTSetGate(23, (unsigned long)&isr23, 0x08, 0x8E); IDTSetGate(24, (unsigned long)&isr24, 0x08, 0x8E); IDTSetGate(25, (unsigned long)&isr25, 0x08, 0x8E); IDTSetGate(26, (unsigned long)&isr26, 0x08, 0x8E); IDTSetGate(27, (unsigned long)&isr27, 0x08, 0x8E); IDTSetGate(28, (unsigned long)&isr28, 0x08, 0x8E); IDTSetGate(29, (unsigned long)&isr29, 0x08, 0x8E); IDTSetGate(30, (unsigned long)&isr30, 0x08, 0x8E); IDTSetGate(31, (unsigned long)&isr31, 0x08, 0x8E); }
void IRQInstall() { IRQRemap(); IDTSetGate(32, (unsigned long)&irq0, 0x08, 0x8E); IDTSetGate(33, (unsigned long)&irq1, 0x08, 0x8E); IDTSetGate(34, (unsigned long)&irq2, 0x08, 0x8E); IDTSetGate(35, (unsigned long)&irq3, 0x08, 0x8E); IDTSetGate(36, (unsigned long)&irq4, 0x08, 0x8E); IDTSetGate(37, (unsigned long)&irq5, 0x08, 0x8E); IDTSetGate(38, (unsigned long)&irq6, 0x08, 0x8E); IDTSetGate(39, (unsigned long)&irq7, 0x08, 0x8E); IDTSetGate(40, (unsigned long)&irq8, 0x08, 0x8E); IDTSetGate(41, (unsigned long)&irq9, 0x08, 0x8E); IDTSetGate(42, (unsigned long)&irq10, 0x08, 0x8E); IDTSetGate(43, (unsigned long)&irq11, 0x08, 0x8E); IDTSetGate(44, (unsigned long)&irq12, 0x08, 0x8E); IDTSetGate(45, (unsigned long)&irq13, 0x08, 0x8E); IDTSetGate(46, (unsigned long)&irq14, 0x08, 0x8E); IDTSetGate(47, (unsigned long)&irq15, 0x08, 0x8E); }
static void InitIDT() { IDTPointer.Limit = sizeof(IDTEntryType)*256-1; IDTPointer.Base = (u32i)&IDTEntries; memset(&IDTEntries,0,sizeof(IDTEntryType)*256); outb(0x20, 0x11); outb(0xA0, 0x11); outb(0x21, 0x20); outb(0xA1, 0x28); outb(0x21, 0x04); outb(0xA1, 0x02); outb(0x21, 0x01); outb(0xA1, 0x01); outb(0x21, 0x0); outb(0xA1, 0x0); IDTSetGate(0,(u32i)isr0,0x08,0x8e); IDTSetGate(1,(u32i)isr1,0x08,0x8e); IDTSetGate(2,(u32i)isr2,0x08,0x8e); IDTSetGate(3,(u32i)isr3,0x08,0x8e); IDTSetGate(4,(u32i)isr4,0x08,0x8e); IDTSetGate(5,(u32i)isr5,0x08,0x8e); IDTSetGate(6,(u32i)isr6,0x08,0x8e); IDTSetGate(7,(u32i)isr7,0x08,0x8e); IDTSetGate(8,(u32i)isr8,0x08,0x8e); IDTSetGate(9,(u32i)isr9,0x08,0x8e); IDTSetGate(10,(u32i)isr10,0x08,0x8e); IDTSetGate(11,(u32i)isr11,0x08,0x8e); IDTSetGate(12,(u32i)isr12,0x08,0x8e); IDTSetGate(13,(u32i)isr13,0x08,0x8e); IDTSetGate(14,(u32i)isr14,0x08,0x8e); IDTSetGate(15,(u32i)isr15,0x08,0x8e); IDTSetGate(16,(u32i)isr16,0x08,0x8e); IDTSetGate(17,(u32i)isr17,0x08,0x8e); IDTSetGate(18,(u32i)isr18,0x08,0x8e); IDTSetGate(19,(u32i)isr19,0x08,0x8e); IDTSetGate(20,(u32i)isr20,0x08,0x8e); IDTSetGate(21,(u32i)isr21,0x08,0x8e); IDTSetGate(22,(u32i)isr22,0x08,0x8e); IDTSetGate(23,(u32i)isr23,0x08,0x8e); IDTSetGate(24,(u32i)isr24,0x08,0x8e); IDTSetGate(25,(u32i)isr25,0x08,0x8e); IDTSetGate(26,(u32i)isr26,0x08,0x8e); IDTSetGate(27,(u32i)isr27,0x08,0x8e); IDTSetGate(28,(u32i)isr28,0x08,0x8e); IDTSetGate(29,(u32i)isr29,0x08,0x8e); IDTSetGate(30,(u32i)isr30,0x08,0x8e); IDTSetGate(31,(u32i)isr31,0x08,0x8e); IDTSetGate(32,(u32i)irq0,0x08,0x8e); IDTSetGate(33,(u32i)irq1,0x08,0x8e); IDTSetGate(34,(u32i)irq2,0x08,0x8e); IDTSetGate(35,(u32i)irq3,0x08,0x8e); IDTSetGate(36,(u32i)irq4,0x08,0x8e); IDTSetGate(37,(u32i)irq5,0x08,0x8e); IDTSetGate(38,(u32i)irq6,0x08,0x8e); IDTSetGate(39,(u32i)irq7,0x08,0x8e); IDTSetGate(40,(u32i)irq8,0x08,0x8e); IDTSetGate(41,(u32i)irq9,0x08,0x8e); IDTSetGate(42,(u32i)irq10,0x08,0x8e); IDTSetGate(43,(u32i)irq11,0x08,0x8e); IDTSetGate(44,(u32i)irq12,0x08,0x8e); IDTSetGate(45,(u32i)irq13,0x08,0x8e); IDTSetGate(46,(u32i)irq14,0x08,0x8e); IDTSetGate(47,(u32i)irq15,0x08,0x8e); IDTFlush((u32i)&IDTPointer); }