42_KFS/headers/idt.h

24 lines
611 B
C

#pragma once
#include "types.h"
#include <stdint.h>
// 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);