From bb1cb9f755ef77126bdfe3258c0f859bb6d2bf1a Mon Sep 17 00:00:00 2001 From: Oxore Date: Wed, 7 Sep 2022 23:51:19 +0300 Subject: Hacky breakpoint before instruction executes --- emulator.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'emulator.cpp') diff --git a/emulator.cpp b/emulator.cpp index 5228231..051c6db 100644 --- a/emulator.cpp +++ b/emulator.cpp @@ -40,7 +40,8 @@ static int set_socket_reuseaddr(int socket_fd) return setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (void*)&val, len); } -static inline struct sockaddr_in sockaddr_in_any_ip_with_port(uint16_t port) { +static inline struct sockaddr_in sockaddr_in_any_ip_with_port(uint16_t port) +{ struct sockaddr_in server{}; server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; @@ -207,7 +208,7 @@ static void make_hex(char* buff, unsigned int pc, unsigned int length) // TODO m68k_set_illg_instr_callback for true software breakpoint "4e4f" -void m68k_instr_callback(int pc) +int m68k_instr_callback(int pc) { const auto it = std::find_if( code_bkpts.begin(), @@ -217,8 +218,8 @@ void m68k_instr_callback(int pc) g_m68k_debug.SetRunning(false); g_m68k_debug.RaiseBreakpoint(); m68k_end_timeslice(); - printf("Breakpoint!\n"); - // TODO notify GDB somehow that breakpoint has been hit + printf("Breakpoint @ 0x%08x\n", pc); + return 1; } if (DEBUG_TRACE_INSTRUCTIONS) { char buff[100]; @@ -229,6 +230,7 @@ void m68k_instr_callback(int pc) printf(" %08X: %-20s: %s\n", pc, buff2, buff); fflush(stdout); } + return 0; } void ParseAndReact( -- cgit v1.2.3