コード例 #1
0
ファイル: interrupts.c プロジェクト: mcanterb/NOS
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);
}
コード例 #2
0
ファイル: interrupts.c プロジェクト: mcanterb/NOS
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);
}
コード例 #3
0
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);
}