idt: add default handlers for all IRQs

This commit is contained in:
2025-03-19 13:28:05 +03:00
parent 97598b96db
commit 9b308de99b
3 changed files with 17 additions and 2 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ void idt_set() {
idtr.base = (uint32) &idt; idtr.base = (uint32) &idt;
idtr.limit = sizeof(idt) * sizeof(idt_entry_t) - 1; idtr.limit = sizeof(idt) * sizeof(idt_entry_t) - 1;
__asm__ __volatile__("lidt %0" : : "m" (idtr)); __asm__ __volatile__("lidt %0" : : "m" (idtr));
// __asm__ __volatile__("sti"); //TODO: fixme, make this fucking stinking sti work __asm__ __volatile__("sti"); //TODO: fixme, make this fucking stinking sti work
} }
+11
View File
@@ -4,6 +4,7 @@
#include "../include/screen.h" #include "../include/screen.h"
void isr_custom(); void isr_custom();
void default_handler();
void isr_install() { void isr_install() {
idt_set_descriptor(0, (uint32)isr0, 0x8E); idt_set_descriptor(0, (uint32)isr0, 0x8E);
@@ -38,12 +39,22 @@ void isr_install() {
idt_set_descriptor(29, (uint32)isr29, 0x8E); idt_set_descriptor(29, (uint32)isr29, 0x8E);
idt_set_descriptor(30, (uint32)isr30, 0x8E); idt_set_descriptor(30, (uint32)isr30, 0x8E);
idt_set_descriptor(31, (uint32)isr31, 0x8E); idt_set_descriptor(31, (uint32)isr31, 0x8E);
for(int i = 32; i < 255; i++)
idt_set_descriptor(i, (uint32)default_handler, 0x8E);
idt_set_descriptor(0x21, (uint32)isr_custom, 0x8E); idt_set_descriptor(0x21, (uint32)isr_custom, 0x8E);
idt_set(); // Load with ASM idt_set(); // Load with ASM
terminal_writestring("isr_install done\n"); terminal_writestring("isr_install done\n");
} }
void default_handler()
{
}
void isr_custom() void isr_custom()
{ {
terminal_writestring("YOOOOO!!!!!! I LOVE KATYA!!!!"); terminal_writestring("YOOOOO!!!!!! I LOVE KATYA!!!!");
+5 -1
View File
@@ -12,8 +12,12 @@ void kmain()
{ {
terminal_initialize(); terminal_initialize();
printf("KatauOS booting up\n"); printf("KatauOS booting up\n");
pic_remap(0x20, 0x28);
isr_install(); isr_install();
pic_remap(0x20, 0x28);
//only enable keyboard IRQs
outb(0x21,0xfd);
outb(0xa1,0xff);
printf("Kernel init sequence completed\n"); printf("Kernel init sequence completed\n");
char yooo[256] = "heheh"; char yooo[256] = "heheh";