ApertureOS
idt.h
Go to the documentation of this file.
1 #ifndef _IDT_H_
2 #define _IDT_H_
3 
4 #include "types.h"
5 
6 #define IDT_ENTRY_COUNT 256
7 #define IDT_ENTRY_HANDLER_SIZE 0x30
8 
9 
10 typedef struct
11 {
12  uint32_t ds; // Data segment selector
13  uint32_t edi, esi, ebp, unused, ebx, edx, ecx, eax; // Pushed by pusha.
14  uint32_t int_no, err_code; // Interrupt number and error code (if applicable)
15  uint32_t eip, cs, eflags, useresp, ss; // Pushed by the processor automatically.
16 } Registers;
17 
18 typedef void (*IDT_InterruptHandler)(Registers*);
19 
22 
23 void IDT_Initialize();
24 void IDT_SetEntry(uint8_t index, uint32_t base, uint16_t selector, uint8_t flags);
25 void IDT_MainHandler(Registers *regs);
26 void IDT_RegisterHandler(uint8_t intNum, void (*handler)(Registers*));
27 
28 #endif /* end of include guard: _IDT_H_ */
uint32_t useresp
Definition: idt.h:15
uint32_t edx
Definition: cpuid.c:3
uint32_t unused
Definition: idt.h:13
Definition: idt.h:10
uint32_t int_no
Definition: idt.h:14
void IDT_SetEntry(uint8_t index, uint32_t base, uint16_t selector, uint8_t flags)
Definition: idt.c:57
char idt_handlers[IDT_ENTRY_COUNT][IDT_ENTRY_HANDLER_SIZE]
Definition: idt.c:25
void IDT_Initialize()
Definition: idt.c:28
void IDT_MainHandler(Registers *regs)
Definition: idt.c:128
#define IDT_ENTRY_HANDLER_SIZE
Definition: idt.h:7
uint32_t ecx
Definition: cpuid.c:3
void(* idt_handler_calls[IDT_ENTRY_COUNT])(Registers *)
Definition: idt.c:26
void(* IDT_InterruptHandler)(Registers *)
Definition: idt.h:18
void IDT_RegisterHandler(uint8_t intNum, void(*handler)(Registers *))
Definition: idt.c:133
uint32_t ds
Definition: idt.h:12
#define IDT_ENTRY_COUNT
Definition: idt.h:6