idt: add default handlers for all IRQs
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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";
|
||||||
|
|||||||
Reference in New Issue
Block a user