diff options
author | dzwdz | 2021-07-09 16:49:59 +0200 |
---|---|---|
committer | dzwdz | 2021-07-09 16:49:59 +0200 |
commit | 5cfe5443e678e3354ed3488baea9c91cbb9e7697 (patch) | |
tree | fb545397520ceb2580aa9df3086444ea72e121e3 /kernel/idt.c | |
parent | 79dbeb367cc7b39e965c052ebb62076a2118c54c (diff) |
interrupt self-test
Diffstat (limited to 'kernel/idt.c')
-rw-r--r-- | kernel/idt.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/idt.c b/kernel/idt.c index e1d45b9..cd032d3 100644 --- a/kernel/idt.c +++ b/kernel/idt.c @@ -1,6 +1,7 @@ #include <kernel/gdt.h> #include <kernel/idt.h> #include <kernel/isr.h> +#include <kernel/tty.h> // used only for the selftest #include <stdbool.h> #include <stdint.h> @@ -51,7 +52,8 @@ static void idt_prepare() { for (int i = 0; i < 256; i++) IDT[i].present = 0; - idt_add(0x8, false, isr_double_fault); + idt_add(0x08, false, isr_double_fault); + idt_add(0x34, false, isr_test_interrupt); } static void idt_load() { @@ -62,6 +64,10 @@ static void idt_load() { static void idt_test() { asm("int $0x34" : : : "memory"); + if (!isr_test_interrupt_called) { + tty_const("IDT self test failed"); + for(;;); + } } void idt_init() { |