From 6cbdb8f7de04e144e8253173a7c12bb81855c396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Wed, 6 Dec 2017 21:20:33 +0100 Subject: [PATCH] Remove magic numbers --- src/kernel/include/interrupts.h | 8 ++++++-- src/kernel/interrupts/idt.c | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/kernel/include/interrupts.h b/src/kernel/include/interrupts.h index 02df4f5..763fdcf 100644 --- a/src/kernel/include/interrupts.h +++ b/src/kernel/include/interrupts.h @@ -1,6 +1,12 @@ #pragma once #include +#define IDT_INTERRUPT 0xE +#define IDT_DPL0 0x0 +#define IDT_PRESENT 0x80 + +#define NUM_INTERRUPTS 256 + struct int_gate_descriptor { uint16_t base_l; @@ -54,8 +60,6 @@ debug("R12=%016x R13=%016x R14=%016x R15=%016x\n", r->r12, r->r13, r->r14, r->r1 debug("RIP=%016x RFL=%016x\n", r->rip, r->rflags); \ debug("CS=%016x SS=%016x\n", r->cs, r->ss); - void load_idt(struct idtr *); -#define NUM_INTERRUPTS 256 void interrupt_init(); diff --git a/src/kernel/interrupts/idt.c b/src/kernel/interrupts/idt.c index 50b0a4a..d704d5e 100644 --- a/src/kernel/interrupts/idt.c +++ b/src/kernel/interrupts/idt.c @@ -24,7 +24,7 @@ void interrupt_init() for(int i=0; i < NUM_INTERRUPTS; i++) { - idt_set_gate(i, isr_table[i], 0x8, 0, 0x8E); + idt_set_gate(i, isr_table[i], 0x8, 0, IDT_PRESENT | IDT_DPL0 | IDT_INTERRUPT); } idtr.addr = idt;