summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emulator.cpp10
-rw-r--r--m68kconf.h4
2 files changed, 8 insertions, 6 deletions
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(
diff --git a/m68kconf.h b/m68kconf.h
index 0b67f76..515a58f 100644
--- a/m68kconf.h
+++ b/m68kconf.h
@@ -160,7 +160,7 @@ extern "C" {
* instruction.
*/
#define M68K_INSTRUCTION_HOOK OPT_SPECIFY_HANDLER
-#define M68K_INSTRUCTION_CALLBACK(pc) m68k_instr_callback(pc)
+#define M68K_INSTRUCTION_CALLBACK(pc) if (m68k_instr_callback(pc)) break
/* If ON, the CPU will emulate the 4-byte prefetch queue of a real 68000 */
@@ -209,7 +209,7 @@ void m68k_write_memory_32(unsigned int address, unsigned int value);
void m68k_reset_callback(void);
int m68k_irq_ack(int level);
-void m68k_instr_callback(int pc);
+int m68k_instr_callback(int pc);
#endif /* M68K_COMPILE_FOR_MAME */