#ifndef INTERRUPTS_H #define INTERRUPTS_H #include /** * @file * * Interrupts * ========== * * Exceptions * ---------- * * 0x00-0x12 Exceptions * * Legacy PIC * ---------- * * 0x20-0x27 disabled pic * * 0x28-0x36 disabled pic * * Hardware Interrupts * ------------------- * This interrupts are remapped by the IOAPIC * * * 0x0 PIT Timer -> 0x90 * * 0x1 Keyboard -> 0x91 * * 0xC Mouse -> 0x92 * * Local Interrupts from LAPICs * ---------------------- * * 0x8C APIC Timer * * Software Interrupts * ------------------- * * 0x80 System Call * * 0x81 IPI * * Usage * ----- * * Run interrupts_init() once first with the desired selector, usually 0x08. * After that you can install the interrupts on each cpu via interrupts_install. * interrupt_handler() and exception_handler() will be called accordingly from * the interrupt handlers this functionality is backed by. You can find them * in asm_int.h */ #define INTERRUPT_PIT_TIMER 0x90 #define INTERRUPT_KEYBOARD 0x91 #define INTERRUPT_MOUSE 0x92 #define INTERRUPT_APIC_TIMER 0x8C #define INTERRUPT_SYSCALL 0x80 #define INTERRUPT_IPI 0x81 // ipi1 more might folllow void interrupts_init(uint16_t sel); void interrupts_install(); uint32_t interrupt_handler(uint32_t esp, uint32_t irq); #endif