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 int 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)->execp->eflags &= ~(1 << 8);
33 sdbg_state = SDBG_STATE_INSESSION;
34 sdbg_printf("[%p:%p] Break point reached.\n",
40 c = (u8_t)serial_rx_byte(SERIAL_COM1);
41 if (c == SDBG_CLNT_QUIT) {
42 sdbg_state = SDBG_STATE_START;
48 if (sdbg_state == SDBG_STATE_START) {
49 sdbg_printf("[%p:%p] Session started.\n",
52 sdbg_state = SDBG_STATE_INSESSION;
54 sdbg_printf("[%p:%p] Session resumed.\n",
61 serial_tx_buffer(SERIAL_COM1, (char*)param, sizeof(isr_param));
64 ((isr_param*)param)->execp->eflags |= (1 << 8); // set TF flags
65 sdbg_state = SDBG_STATE_WAIT_BRK;
68 // the break point address
69 // serial_rx_buffer(SERIAL_COM1, buffer, sizeof(ptr_t));
71 // asm("movl %0, %%dr0" ::"r"(*((ptr_t*)buffer)));
73 sdbg_state = SDBG_STATE_WAIT_BRK;