示例#1
0
void __init__ init_idt(uint32 *IDT)
{
    int i;
    for(i=0;i<16;i++) irq_task_map[i] = NULL;
    
    set_irq(IDT,0x00,__ex0);
    set_irq(IDT,0x01,__ex1);
    set_irq(IDT,0x02,__ex2);
    set_irq(IDT,0x03,__ex3);
    set_irq(IDT,0x04,__ex4);
    set_irq(IDT,0x05,__ex5);
    set_irq(IDT,0x06,__ex6);
    set_irq(IDT,0x07,__ex7);
    set_irq(IDT,0x08,__ex8);
    set_irq(IDT,0x09,__ex9);
    set_irq(IDT,0x0A,__ex10);
    set_irq(IDT,0x0B,__ex11);
    set_irq(IDT,0x0C,__ex12);
    set_irq(IDT,0x0D,__ex13);
    set_irq(IDT,0x0E,__ex14);
    set_irq(IDT,0x0F,__ex15);
    set_irq(IDT,0x10,__ex16);
    set_irq(IDT,0x11,__ex17);
    set_irq(IDT,0x12,__ex18);
    
    set_irqU(IDT,0x20,__syscall);
    
    set_irq(IDT,0x30,__timer_irq);
    set_irq(IDT,0x31,__irq1);
    set_irq(IDT,0x32,__irq2);
    set_irq(IDT,0x33,__irq3);
    set_irq(IDT,0x34,__irq4);
    set_irq(IDT,0x35,__irq5);
    set_irq(IDT,0x36,__irq6);
    set_irq(IDT,0x37,__irq7);
    set_irq(IDT,0x38,__irq8);
    set_irq(IDT,0x39,__irq9);
    set_irq(IDT,0x3A,__irq10);
    set_irq(IDT,0x3B,__irq11);
    set_irq(IDT,0x3C,__irq12);
    set_irq(IDT,0x3D,__irq13);
    set_irq(IDT,0x3E,__irq14);
    set_irq(IDT,0x3F,__irq15);

#ifdef __SMP__
		set_irq(IDT,0x40,__ipi_cf);
		set_irq(IDT,0x41,__ipi_tlb);
		set_irq(IDT,0x42,__ipi_pte);
		set_irq(IDT,0x43,__ipi_resched);
		set_irq(IDT,0x44,__ipi_stop);
#endif
 
    i386lidt((uint32) IDT, 0x3FF);
    
    remap_irqs();
    unmask_irq(0);
    unmask_irq(2);
}
示例#2
0
文件: irq.c 项目: AdamRLukaitis/spoon
void init_irqs()
{
	int i;
	assert( irq_lock == 0 );
	
	remap_irqs( 0x20, 0x28 );

	outb_p( PORT_8259M + 1, irq_mask & 0xFF );
	outb_p( PORT_8259S + 1, ( irq_mask >> 8 ) & 0xFF );

	for ( i = 0; i < IRQ_COUNT; i++ )
		handlers[i] = NULL;
}
示例#3
0
// Инициализация PIC
void irq_init()
{
   puts_color("Remapping IRQs...\t\t", 0x0b);
   remap_irqs(IRQ0_INT, IRQ8_INT);
   printf_color(0x0a, "IRQ0 = int 0x%x, IRQ8 = int 0x%x\n", IRQ0_INT, IRQ8_INT);
}