+static void (*intr_func[NUM_INTR])();
+
+static struct {
+ char *name;
+ int num;
+ void (*entry)();
+} intrtab[] = {
+ {"divide error", 0, intr_entry_div},
+ {"debug exception", 1, intr_entry_debug},
+ {"non-maskable interrupt", 2, intr_entry_nmi},
+ {"breakpoint", 3, intr_entry_bpt},
+ {"overflow", 4, intr_entry_ovf},
+ {"bounds check", 5, intr_entry_bound},
+ {"invalid opcode", 6, intr_entry_ill},
+ {"missing coprocessor", 7, intr_entry_nodev},
+ {"double fault", 8, intr_entry_dbl},
+ {"coprocessor segment overrun", 9, intr_entry_copseg},
+ {"invalid TSS", 10, intr_entry_tss},
+ {"segment not present", 11, intr_entry_segpres},
+ {"stack exception", 12, intr_entry_stack},
+ {"general protection", 13, intr_entry_prot},
+ {"page fault", 14, intr_entry_page},
+ {"floating point error", 16, intr_entry_fpu},
+ {"alignment check", 17, intr_entry_align},
+ {"machine check", 18, intr_entry_mce},
+ {"SIMD floating point error", 19, intr_entry_sse},
+ {"IRQ 0 (timer)", 32, intr_entry_irq0},
+ {"IRQ 1 (keyboard)", 33, intr_entry_irq1},
+ {"IRQ 2 (cascade)", 34, intr_entry_irq2},
+ {"IRQ 3 (UART 1)", 35, intr_entry_irq3},
+ {"IRQ 4 (UART 0)", 36, intr_entry_irq4},
+ {"IRQ 5", 37, intr_entry_irq5},
+ {"IRQ 6 (floppy)", 38, intr_entry_irq6},
+ {"IRQ 7 (parallel)", 39, intr_entry_irq7_verify},
+ {"IRQ 8 (RTC)", 40, intr_entry_irq8},
+ {"IRQ 9", 41, intr_entry_irq9},
+ {"IRQ 10", 42, intr_entry_irq10},
+ {"IRQ 11", 43, intr_entry_irq11},
+ {"IRQ 12 (PS/2 mouse)", 44, intr_entry_irq12},
+ {"IRQ 13 (coproc)", 45, intr_entry_irq13},
+ {"IRQ 14 (ATA 0)", 46, intr_entry_irq14},
+ {"IRQ 15 (ATA 1)", 47, intr_entry_irq15_verify}
+};