X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/4f966b9a6710d138d6e921bf2a1e40f2abc76f9a..9a7a9c079d0ab0366673beff73ffa710fe3b76c8:/lunaix-os/debug/sdbg.c diff --git a/lunaix-os/debug/sdbg.c b/lunaix-os/debug/sdbg.c index 537e9cd..3cc23cf 100644 --- a/lunaix-os/debug/sdbg.c +++ b/lunaix-os/debug/sdbg.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -10,6 +11,8 @@ // #define USE_LSDBG_BACKEND +LOG_MODULE("SDBG") + volatile int debug_mode = 0; void @@ -68,16 +71,40 @@ done: serial_enable_irq(SERIAL_COM1); } -extern uint8_t -ioapic_get_irq(acpi_context* acpi_ctx, uint8_t old_irq); - +void +sdbg_imm(const isr_param* param) +{ + kprintf(KDEBUG "Quick debug mode\n"); + kprintf(KDEBUG "cs=%p eip=%p eax=%p ebx=%p\n", + param->cs, + param->eip, + param->registers.eax, + param->registers.ebx); + kprintf(KDEBUG "ecx=%p edx=%p edi=%p esi=%p\n", + param->registers.ecx, + param->registers.edx, + param->registers.edi, + param->registers.esi); + kprintf(KDEBUG "u.esp=%p k.esp=%p ebp=%p ps=%p\n", + param->registers.esp, + param->esp, + param->registers.ebp, + param->eflags); + kprintf(KDEBUG "ss=%p ds=%p es=%p fs=%p gs=%p\n", + param->ss, + param->registers.ds, + param->registers.es, + param->registers.fs, + param->registers.gs); + console_flush(); + while (1) + ; +} void sdbg_init() { - intr_subscribe(UART_COM1, sdbg_loop); - intr_subscribe(INSTR_DEBUG, sdbg_loop); // #DB + isrm_bindiv(INSTR_DEBUG, sdbg_loop); // #DB + isrm_bindiv(INSTR_BREAK, sdbg_loop); // #BRK - acpi_context* acpi_ctx = acpi_get_context(); - uint8_t irq = ioapic_get_irq(acpi_ctx, COM1_IRQ); - ioapic_redirect(irq, UART_COM1, 0, IOAPIC_DELMOD_FIXED); + isrm_bindirq(COM1_IRQ, sdbg_loop); } \ No newline at end of file