mirror of
https://github.com/Tom-on64/kern.git
synced 2026-11-03 18:22:22 +00:00
28 lines
684 B
C
28 lines
684 B
C
#ifndef INTERRUPT_IDT_H
|
|
#define INTERRUPT_IDT_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define TRAP_GATE_FLAGS 0x8f // P = 1, DPL = 00, S = 0, Type = 1111 (32-bit Trap gate)
|
|
#define INT_GATE_FLAGS 0x8e // P = 1, DPL = 00, S = 0, Type = 1110 (32-bit Int gate)
|
|
#define USR_INT_GATE_FLAGS 0xee // P = 1, DPL = 11, S = 0, Type = 1110 (32-bit Int gate)
|
|
|
|
typedef struct {
|
|
uint16_t offsetLow;
|
|
uint16_t selector;
|
|
uint8_t zero;
|
|
uint8_t typeAttr;
|
|
uint16_t offsetHigh;
|
|
} __attribute__ ((packed)) idtEntry_t;
|
|
|
|
typedef struct {
|
|
uint16_t limit;
|
|
uint32_t base;
|
|
} __attribute__ ((packed)) idtp_t;
|
|
|
|
void idtSetGate(uint8_t i, void* handler, uint8_t flags);
|
|
void setupIdt();
|
|
|
|
#endif
|
|
|