IDTの初期化
まぁ取り合えずIDTを初期化して割り込み有効にして割り込み受け取って画面に文字表示する位は出来た。
さて、こっから先はどうしようか。
#define IDT_SIZE 256 static descriptor_t idt[IDT_SIZE] = {{{0}}}; static inline void idt_load(descriptor_table_register_t *idtr) { asm volatile("lidt %0" :: "m"(idtr->limit)); } static inline void interrupt_enable(void) { asm volatile("sti"); } static void interrupt_handler(void) { printf("interrupt handled\n"); while(1) ; } void interrupt_init(void) { descriptor_table_register_t idtr; int i; for(i = 0; i < IDT_SIZE; i++) set_gate_descriptor(&idt[i].gate, (uint32_t)interrupt_handler, GLOBAL_32BIT_CODE, 0x0, GATE_TYPE_32BIT_TRAP, 0x0, 0x1); set_descriptor_table_register(&idtr, idt, IDT_SIZE); idt_load(&idtr); interrupt_enable(); }