#ifndef IDT_H #define IDT_H #include "types.h" typedef struct { uint16_t base_low; uint16_t segment; uint16_t flags; uint16_t base_high; } __attribute__((packed)) idt_entry; typedef struct { uint16_t limit; idt_entry* base; } __attribute__((packed)) idt_ptr; #define idt_entry_init(b, s, f) { \ .base_low = (b & 0xffff), \ .base_high = (b >> 16 & 0xffff), \ .segment = (s), \ .flags = (f)} #define idt_entry_null { \ .base_low = 0, \ .base_high = 0, \ .segment = 0, \ .flags = 0} void idt_init(); #endif