1 #include <sys/gdbstub.h>
2 #include <sdbg/gdbstub.h>
5 arch_gdbstub_setup_state(struct gdb_state* state, struct hart_state* hstate)
7 /* Translate vector to signal */
8 switch (hstate->execp->vector) {
21 arch_gdbstub_save_regs(struct gdb_state* state, struct hart_state* hstate)
24 state->registers[GDB_CPU_I386_REG_EAX] = hstate->registers.eax;
25 state->registers[GDB_CPU_I386_REG_ECX] = hstate->registers.ecx;
26 state->registers[GDB_CPU_I386_REG_EDX] = hstate->registers.edx;
27 state->registers[GDB_CPU_I386_REG_EBX] = hstate->registers.ebx;
28 state->registers[GDB_CPU_I386_REG_ESP] = hstate->esp;
29 state->registers[GDB_CPU_I386_REG_EBP] = hstate->registers.ebp;
30 state->registers[GDB_CPU_I386_REG_ESI] = hstate->registers.esi;
31 state->registers[GDB_CPU_I386_REG_EDI] = hstate->registers.edi;
32 state->registers[GDB_CPU_I386_REG_PC] = hstate->execp->eip;
33 state->registers[GDB_CPU_I386_REG_CS] = hstate->execp->cs;
34 state->registers[GDB_CPU_I386_REG_PS] = hstate->execp->eflags;
35 state->registers[GDB_CPU_I386_REG_SS] = hstate->execp->ss;
36 state->registers[GDB_CPU_I386_REG_DS] = hstate->registers.ds;
37 state->registers[GDB_CPU_I386_REG_ES] = hstate->registers.es;
38 state->registers[GDB_CPU_I386_REG_FS] = hstate->registers.fs;
39 state->registers[GDB_CPU_I386_REG_GS] = hstate->registers.gs;
43 arch_gdbstub_restore_regs(struct gdb_state* state, struct hart_state* hstate)
45 /* Restore Registers */
46 hstate->registers.eax = state->registers[GDB_CPU_I386_REG_EAX];
47 hstate->registers.ecx = state->registers[GDB_CPU_I386_REG_ECX];
48 hstate->registers.edx = state->registers[GDB_CPU_I386_REG_EDX];
49 hstate->registers.ebx = state->registers[GDB_CPU_I386_REG_EBX];
50 hstate->esp = state->registers[GDB_CPU_I386_REG_ESP];
51 hstate->registers.ebp = state->registers[GDB_CPU_I386_REG_EBP];
52 hstate->registers.esi = state->registers[GDB_CPU_I386_REG_ESI];
53 hstate->registers.edi = state->registers[GDB_CPU_I386_REG_EDI];
54 hstate->execp->eip = state->registers[GDB_CPU_I386_REG_PC];
55 hstate->execp->cs = state->registers[GDB_CPU_I386_REG_CS];
56 hstate->execp->eflags = state->registers[GDB_CPU_I386_REG_PS];
57 hstate->execp->ss = state->registers[GDB_CPU_I386_REG_SS];
58 hstate->registers.ds = state->registers[GDB_CPU_I386_REG_DS];
59 hstate->registers.es = state->registers[GDB_CPU_I386_REG_ES];
60 hstate->registers.fs = state->registers[GDB_CPU_I386_REG_FS];
61 hstate->registers.gs = state->registers[GDB_CPU_I386_REG_GS];
66 gdb_sys_continue(struct gdb_state* state)
68 state->registers[GDB_CPU_I386_REG_PS] &= ~(1 << 8);
73 gdb_sys_step(struct gdb_state* state)
75 state->registers[GDB_CPU_I386_REG_PS] |= 1 << 8;