42_KFS/headers/idt.h

23 lines
627 B
C
Raw Permalink Normal View History

2024-09-30 07:01:56 -04:00
#pragma once
#include <stdint.h>
2024-09-30 07:01:56 -04:00
// doc : https://wiki.osdev.org/Interrupt_Descriptor_Table#IDTR
2024-09-30 09:44:34 -04:00
struct idt_descriptor {
2024-09-30 07:01:56 -04:00
uint16_t size;
uint32_t offset;
2024-09-30 09:44:34 -04:00
} __attribute__((packed));
2024-09-30 07:01:56 -04:00
2024-10-02 08:15:57 -04:00
struct idt_entry {
uint16_t isr_low; // The lower 16 bits of the ISR's address
uint16_t kernel_cs; // The GDT segment selector that the CPU will load
// into CS before calling the ISR
uint8_t reserved; // Set to zero
uint8_t attributes; // Type and attributes; see the IDT page
uint16_t isr_high; // The higher 16 bits of the ISR's address
} __attribute__((packed));
#define IDT_SIZE 256
void init_idt(void);