#include #define cli() \ __asm__ volatile ("cli") #define sti() \ __asm__ volatile ("sti") #define irq_enable(n) \ __asm__ volatile ( \ "inb $0xA1, %%al\n" \ "shl $8, %%ax\n" \ "inb $0x21, %%al\n" \ "xor $0xFFFF, %%bx\n" \ "and %%bx, %%ax\n" \ "outb %%al, $0x21\n" \ "shr $8, %%ax\n" \ "outb %%al, $0xA1\n" \ :: "b" (n) \ ); #define irq_disable(n) \ __asm__ volatile ( \ "inb $0xA1, %%al\n" \ "shl $8, %%ax\n" \ "inb $0x21, %%al\n" \ "or %%bx, %%ax\n" \ "outb %%al, $0x21\n" \ "shr $8, %%ax\n" \ "outb %%al, $0xA1\n" \ :: "b" (n) \ ); void register_isr(uint8_t n, uint8_t dpl, void *handler); void register_trap(uint8_t n, uint8_t dpl, void *handler);