#pragma once #include "types.h" #include // doc : https://wiki.osdev.org/Interrupt_Descriptor_Table#IDTR struct idt_descriptor { u16 size; u32 offset; } __attribute__((packed)); struct idt_entry { u16 isr_low; // The lower 16 bits of the ISR's address u16 kernel_cs; // The GDT segment selector that the CPU will load // into CS before calling the ISR u8 reserved; // Set to zero u8 attributes; // Type and attributes; see the IDT page u16 isr_high; // The higher 16 bits of the ISR's address } __attribute__((packed)); #define IDT_SIZE 256 void init_idt(void);