1 #include <klibc/stdio.h>
2 #include <lunaix/peripheral/serial.h>
3 #include <lunaix/syslog.h>
4 #include <sdbg/lsdbg.h>
6 #define COM SERIAL_COM1
10 static volatile sdbg_state = 0;
13 sdbg_printf(char* fmt, ...)
20 size_t len = __ksprintf_internal(buf, fmt, 256, l);
21 serial_tx_buffer(COM, buf, len);
27 lunaix_sdbg_loop(isr_param* param)
31 if (sdbg_state == SDBG_STATE_WAIT_BRK) {
32 (param)->eflags &= ~(1 << 8);
33 sdbg_state = SDBG_STATE_INSESSION;
34 sdbg_printf("[%p:%p] Break point reached.\n", param->cs, param->eip);
38 c = serial_rx_byte(SERIAL_COM1);
39 if (c == SDBG_CLNT_QUIT) {
40 sdbg_state = SDBG_STATE_START;
46 if (sdbg_state == SDBG_STATE_START) {
48 "[%p:%p] Session started.\n", param->cs, param->eip);
49 sdbg_state = SDBG_STATE_INSESSION;
52 "[%p:%p] Session resumed.\n", param->cs, param->eip);
57 serial_tx_buffer(SERIAL_COM1, (char*)param, sizeof(isr_param));
60 ((isr_param*)param)->eflags |= (1 << 8); // set TF flags
61 sdbg_state = SDBG_STATE_WAIT_BRK;
64 // the break point address
65 // serial_rx_buffer(SERIAL_COM1, buffer, sizeof(uintptr_t));
67 // asm("movl %0, %%dr0" ::"r"(*((uintptr_t*)buffer)));
69 sdbg_state = SDBG_STATE_WAIT_BRK;