diff --git a/cpu/exception.c b/cpu/exception.c index 014408f..6639a4d 100644 --- a/cpu/exception.c +++ b/cpu/exception.c @@ -2,173 +2,172 @@ #include "std/std.h" #include "std/kstd.h" -void generic_exception_handler(struct interrupt_descriptor_32 *frame, uint8_t irq) { +void generic_exception_handler(struct interrupt_frame_32 *frame, uint8_t irq) { kprintf("\n\n"); kprintf("---- PANIC -------------\n"); kprintf("Kernel panic due to exception\n"); kprintf("IRQ %d\n", (int)irq); - kprintf("selector %d\n", (int)frame->selector); kprintf("------------------------\n"); kabort(); } __attribute__((interrupt)) -static void isr0(struct interrupt_descriptor_32 *frame) { +static void isr0(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 0); } __attribute__((interrupt)) -static void isr1(struct interrupt_descriptor_32 *frame) { +static void isr1(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 1); } __attribute__((interrupt)) -static void isr2(struct interrupt_descriptor_32 *frame) { +static void isr2(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 2); } __attribute__((interrupt)) -static void isr3(struct interrupt_descriptor_32 *frame) { +static void isr3(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 3); } __attribute__((interrupt)) -static void isr4(struct interrupt_descriptor_32 *frame) { +static void isr4(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 4); } __attribute__((interrupt)) -static void isr5(struct interrupt_descriptor_32 *frame) { +static void isr5(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 5); } __attribute__((interrupt)) -static void isr6(struct interrupt_descriptor_32 *frame) { +static void isr6(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 6); } __attribute__((interrupt)) -static void isr7(struct interrupt_descriptor_32 *frame) { +static void isr7(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 7); } __attribute__((interrupt)) -static void isr8(struct interrupt_descriptor_32 *frame) { +static void isr8(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 8); } __attribute__((interrupt)) -static void isr9(struct interrupt_descriptor_32 *frame) { +static void isr9(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 9); } __attribute__((interrupt)) -static void isr10(struct interrupt_descriptor_32 *frame) { +static void isr10(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 10); } __attribute__((interrupt)) -static void isr11(struct interrupt_descriptor_32 *frame) { +static void isr11(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 11); } __attribute__((interrupt)) -static void isr12(struct interrupt_descriptor_32 *frame) { +static void isr12(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 12); } __attribute__((interrupt)) -static void isr13(struct interrupt_descriptor_32 *frame) { +static void isr13(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 13); } __attribute__((interrupt)) -static void isr14(struct interrupt_descriptor_32 *frame) { +static void isr14(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 14); } __attribute__((interrupt)) -static void isr15(struct interrupt_descriptor_32 *frame) { +static void isr15(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 15); } __attribute__((interrupt)) -static void isr16(struct interrupt_descriptor_32 *frame) { +static void isr16(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 16); } __attribute__((interrupt)) -static void isr17(struct interrupt_descriptor_32 *frame) { +static void isr17(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 17); } __attribute__((interrupt)) -static void isr18(struct interrupt_descriptor_32 *frame) { +static void isr18(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 18); } __attribute__((interrupt)) -static void isr19(struct interrupt_descriptor_32 *frame) { +static void isr19(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 19); } __attribute__((interrupt)) -static void isr20(struct interrupt_descriptor_32 *frame) { +static void isr20(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 20); } __attribute__((interrupt)) -static void isr21(struct interrupt_descriptor_32 *frame) { +static void isr21(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 21); } __attribute__((interrupt)) -static void isr22(struct interrupt_descriptor_32 *frame) { +static void isr22(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 22); } __attribute__((interrupt)) -static void isr23(struct interrupt_descriptor_32 *frame) { +static void isr23(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 23); } __attribute__((interrupt)) -static void isr24(struct interrupt_descriptor_32 *frame) { +static void isr24(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 24); } __attribute__((interrupt)) -static void isr25(struct interrupt_descriptor_32 *frame) { +static void isr25(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 25); } __attribute__((interrupt)) -static void isr26(struct interrupt_descriptor_32 *frame) { +static void isr26(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 26); } __attribute__((interrupt)) -static void isr27(struct interrupt_descriptor_32 *frame) { +static void isr27(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 27); } __attribute__((interrupt)) -static void isr28(struct interrupt_descriptor_32 *frame) { +static void isr28(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 28); } __attribute__((interrupt)) -static void isr29(struct interrupt_descriptor_32 *frame) { +static void isr29(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 29); } __attribute__((interrupt)) -static void isr30(struct interrupt_descriptor_32 *frame) { +static void isr30(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 30); } __attribute__((interrupt)) -static void isr31(struct interrupt_descriptor_32 *frame) { +static void isr31(struct interrupt_frame_32 *frame) { generic_exception_handler(frame, 31); } diff --git a/cpu/idt.h b/cpu/idt.h index 149f34e..0c07cd0 100644 --- a/cpu/idt.h +++ b/cpu/idt.h @@ -16,6 +16,14 @@ struct interrupt_descriptor_32 { uint16_t offset_2; // offset bits 16..31 } __attribute__((__packed__)); +struct interrupt_frame_32 { + size_t ip; + size_t cs; + size_t flags; + size_t sp; + size_t ss; +} __attribute__((__packed__)); + void idt_init(void); void idt_register_handler(uint8_t interrupt, size_t address); diff --git a/ps2/keyboard.c b/ps2/keyboard.c index 1dad3f2..b723718 100644 --- a/ps2/keyboard.c +++ b/ps2/keyboard.c @@ -47,7 +47,7 @@ const char us_map[128] = { }; __attribute__((interrupt)) -static void irq(struct interrupt_descriptor_32 *frame) { +static void irq(struct interrupt_frame_32 *frame) { uint8_t scancode = inb(0x60); if (scancode & 128) {