#ifndef INTERRUPT #define INTERRUPT extern uint8_t isr_base[]; typedef struct { uint16_t lo; uint16_t sel; uint8_t reserved; uint8_t flags; uint16_t hi; } __attribute__((packed)) idt_gate; typedef struct { uint16_t limit; idt_gate* base; } __attribute__((packed)) idtrc; typedef struct { uint32_t ds; uint32_t edi, esi, ebp, uesp, ebx, edx, ecx, eax; uint32_t ino, err; uint32_t eip, cs, eflags, esp, ss; } registers; extern idtrc idtr; extern idt_gate idt[256]; typedef void (*isr)(registers*); void regint(uint8_t ino, isr i); void set_idt(uint8_t n, uint32_t i); void lidt(); void isr_init(); void isr_handler(registers* r); void noint(registers* r); #endif