fixes issue with exceptions (im dumb)

This commit is contained in:
2025-06-01 20:24:05 -04:00
parent 89c02d6a93
commit ecc91fdc7d
3 changed files with 15 additions and 3 deletions

View File

@ -6,6 +6,7 @@
#endif #endif
#include <kernel/x86/idt.h> #include <kernel/x86/idt.h>
#include <kernel/x86/pic.h> #include <kernel/x86/pic.h>
#include <kernel/x86/io.h>
__attribute__((aligned(0x10))) __attribute__((aligned(0x10)))
static idt_entry_t idt[256]; static idt_entry_t idt[256];
@ -58,8 +59,8 @@ void idt_init(void)
__asm__ volatile("lidt %0" : : "m"(idtr)); // load the new IDT __asm__ volatile("lidt %0" : : "m"(idtr)); // load the new IDT
PIC_remap(0x20, 0x28); PIC_remap(0x20, 0x28);
//IRQ_set_mask(0xfd); // unmask IRQ1 pic_disable(); // mask everything
pic_disable(); //TODO: this is ending a timer interrupt even though its masked off.. IRQ_clear_mask(1);
__asm__ volatile("sti"); // set the interrupt flag __asm__ volatile("sti"); // set the interrupt flag
#ifdef __TESTING__ #ifdef __TESTING__

View File

@ -1,5 +1,6 @@
#ifdef __TESTING__ #ifdef __TESTING__
#include <kernel/_kernel.h> #include <kernel/_kernel.h>
#include <stdio.h>
#endif #endif
#include <kernel/x86/io.h> #include <kernel/x86/io.h>
#include <kernel/x86/pic.h> #include <kernel/x86/pic.h>
@ -71,6 +72,8 @@ void IRQ_set_mask(uint8_t IRQline) // Masked IRQlines are ignored by the PIC, ma
IRQline -= 8; IRQline -= 8;
} }
printf("%x %x\n", port, IRQline);
value = inb(port) | (1 << IRQline); value = inb(port) | (1 << IRQline);
outb(port, value); outb(port, value);
} }

View File

@ -25,7 +25,7 @@ void kmain(void)
/** /**
* The computer is now hanging on INTERRUPT 32, * The computer is now hanging on INTERRUPT 32,
* this is good because that means the PIC is working, its the timer interrupt * this is good because that means the PIC is working, its the timer interrupt, except... the PIT is masked off...
* we need to now implement the ISR routines in exception_handler, * we need to now implement the ISR routines in exception_handler,
* first i want to implement all of the code for the basic exceptions.. * first i want to implement all of the code for the basic exceptions..
* then i want to setup the PIC triggers * then i want to setup the PIC triggers
@ -33,4 +33,12 @@ void kmain(void)
* now for keyboard stuff, i believe i need to start looking into setting up a ps/2 driver before the interrupts will even start arriving.. * now for keyboard stuff, i believe i need to start looking into setting up a ps/2 driver before the interrupts will even start arriving..
* *
*/ */
printf("Entering loop...\n");
while (1) {
continue;
}
printf("Exiting loop...\n");
} }