COBE 0.1 ALPHA
|
00001 #ifndef IDT_H 00002 #define IDT_H 00003 00004 #include <multitasking.h> 00005 #include <stdio.h> 00006 00007 #define ITR_GATE 0xE 00008 #define PRESENT_BIT 0x80 00009 #define RING0 0x00 00010 #define RING3 0x60 00011 00012 struct idt_entry_struct { 00013 uint16_t offset_1; 00014 uint16_t selector; 00015 uint8_t zero; 00016 uint8_t typ_attr; 00017 uint16_t offset_2; 00018 } __attribute((packed)); 00019 00020 struct idt_ptr_struct { 00021 uint16_t limit; 00022 uint32_t base; 00023 } __attribute((packed)); 00024 00025 typedef struct idt_entry_struct idt_entry_t; 00026 typedef struct idt_ptr_struct idt_ptr_t; 00027 00028 void init_idt(); 00029 void set_idt(uint8_t, void (*)(void), uint16_t, uint8_t); 00030 cpu_regs* itr_handler(cpu_regs *); 00031 00032 #endif