73
75
void m68k_record_step(uaecptr pc)
75
for (int i = 0; i < 8; i++) {
76
log[log_ptr].d[i] = m68k_dreg(regs, i);
77
log[log_ptr].a[i] = m68k_areg(regs, i);
77
#if FLIGHT_RECORDER >= 2
78
/* XXX: if LSB is set, we are recording from generated code and we
79
don't support registers recording yet. */
81
for (int i = 0; i < 8; i++) {
82
log[log_ptr].d[i] = m68k_dreg(regs, i);
83
log[log_ptr].a[i] = m68k_areg(regs, i);
79
87
log[log_ptr].pc = pc;
80
88
log_ptr = (log_ptr + 1) % LOG_SIZE;
88
96
for (int i = 0; i < LOG_SIZE; i++) {
89
97
int j = (i + log_ptr) % LOG_SIZE;
90
fprintf(f, "pc %08x\n", log[j].pc);
91
fprintf(f, "d0 %08x d1 %08x d2 %08x d3 %08x\n", log[j].d[0], log[j].d[1], log[j].d[2], log[j].d[3]);
92
fprintf(f, "d4 %08x d5 %08x d6 %08x d7 %08x\n", log[j].d[4], log[j].d[5], log[j].d[6], log[j].d[7]);
93
fprintf(f, "a0 %08x a1 %08x a2 %08x a3 %08x\n", log[j].a[0], log[j].a[1], log[j].a[2], log[j].a[3]);
94
fprintf(f, "a4 %08x a5 %08x a6 %08x a7 %08x\n", log[j].a[4], log[j].a[5], log[j].a[6], log[j].a[7]);
98
uae_u32 pc = log[j].pc & ~1;
99
fprintf(f, "pc %08x", pc);
100
#if FLIGHT_RECORDER >= 2
102
if ((log[j].pc & 1) == 0) {
103
fprintf(f, "d0 %08x d1 %08x d2 %08x d3 %08x\n", log[j].d[0], log[j].d[1], log[j].d[2], log[j].d[3]);
104
fprintf(f, "d4 %08x d5 %08x d6 %08x d7 %08x\n", log[j].d[4], log[j].d[5], log[j].d[6], log[j].d[7]);
105
fprintf(f, "a0 %08x a1 %08x a2 %08x a3 %08x\n", log[j].a[0], log[j].a[1], log[j].a[2], log[j].a[3]);
106
fprintf(f, "a4 %08x a5 %08x a6 %08x a7 %08x\n", log[j].a[4], log[j].a[5], log[j].a[6], log[j].a[7]);
96
disass_68k(f, log[j].pc);
120
static void dump_regs(void)
122
m68k_dumpstate(NULL);
103
126
#define COUNT_INSTRS 0
1154
1177
#if FLIGHT_RECORDER
1179
memset(log, 0, sizeof(log));
1156
if (log_ptr == -1) {
1183
static bool first_time = true;
1186
mon_add_command("regs", dump_regs, "regs Dump m68k emulator registers\n");
1157
1188
// Install "log" command in mon
1158
1189
mon_add_command("log", dump_log, "log Dump m68k emulation log\n");
1162
memset(log, 0, sizeof(log));
1166
1195
void m68k_emulop_return(void)