summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2010-03-11 04:41:16 +0000
committer R. Belmont <rb6502@users.noreply.github.com>2010-03-11 04:41:16 +0000
commit98be8ed00d45cf6de6ab8c0439abbc6f90f32c75 (patch)
tree228218504292ed01bef8c9616a3a43085a636724 /src
parente5ac159fb7a80939d74a978eed17d734554a65da (diff)
m680x0: show FPU registers in the debugger for 030+
Diffstat (limited to 'src')
-rw-r--r--src/emu/cpu/m68000/m68000.h2
-rw-r--r--src/emu/cpu/m68000/m68kcpu.c63
2 files changed, 65 insertions, 0 deletions
diff --git a/src/emu/cpu/m68000/m68000.h b/src/emu/cpu/m68000/m68000.h
index 5105468cde4..79182dd389d 100644
--- a/src/emu/cpu/m68000/m68000.h
+++ b/src/emu/cpu/m68000/m68000.h
@@ -58,6 +58,8 @@ enum
M68K_SFC, M68K_DFC, M68K_CACR, M68K_CAAR, M68K_PREF_ADDR, M68K_PREF_DATA,
M68K_D0, M68K_D1, M68K_D2, M68K_D3, M68K_D4, M68K_D5, M68K_D6, M68K_D7,
M68K_A0, M68K_A1, M68K_A2, M68K_A3, M68K_A4, M68K_A5, M68K_A6, M68K_A7,
+ M68K_FP0, M68K_FP1, M68K_FP2, M68K_FP3, M68K_FP4, M68K_FP5, M68K_FP6, M68K_FP7,
+ M68K_FPSR, M68K_FPCR,
M68K_GENPC = REG_GENPC,
M68K_GENSP = REG_GENSP,
diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/emu/cpu/m68000/m68kcpu.c
index 54fb4ef7418..4c74baf443e 100644
--- a/src/emu/cpu/m68000/m68kcpu.c
+++ b/src/emu/cpu/m68000/m68kcpu.c
@@ -540,6 +540,17 @@ static const cpu_state_entry state_array[] =
M68K_STATE_ENTRY(CACR, "%08X", cacr, 0xffffffff, 0, MASK_020_OR_LATER)
M68K_STATE_ENTRY(CAAR, "%08X", caar, 0xffffffff, 0, MASK_020_OR_LATER)
+
+ M68K_STATE_ENTRY(FP0, "%s", iotemp, 0xffffffff, CPUSTATE_EXPORT, MASK_030_OR_LATER)
+ M68K_STATE_ENTRY(FP1, "%s", iotemp, 0xffffffff, CPUSTATE_EXPORT, MASK_030_OR_LATER)
+ M68K_STATE_ENTRY(FP2, "%s", iotemp, 0xffffffff, CPUSTATE_EXPORT, MASK_030_OR_LATER)
+ M68K_STATE_ENTRY(FP3, "%s", iotemp, 0xffffffff, CPUSTATE_EXPORT, MASK_030_OR_LATER)
+ M68K_STATE_ENTRY(FP4, "%s", iotemp, 0xffffffff, CPUSTATE_EXPORT, MASK_030_OR_LATER)
+ M68K_STATE_ENTRY(FP5, "%s", iotemp, 0xffffffff, CPUSTATE_EXPORT, MASK_030_OR_LATER)
+ M68K_STATE_ENTRY(FP6, "%s", iotemp, 0xffffffff, CPUSTATE_EXPORT, MASK_030_OR_LATER)
+ M68K_STATE_ENTRY(FP7, "%s", iotemp, 0xffffffff, CPUSTATE_EXPORT, MASK_030_OR_LATER)
+ M68K_STATE_ENTRY(FPSR, "%08X", fpsr, 0xffffffff, 0, MASK_040_OR_LATER)
+ M68K_STATE_ENTRY(FPCR, "%08X", fpcr, 0xffffffff, 0, MASK_040_OR_LATER)
};
static const cpu_state_table state_table_template =
@@ -847,6 +858,16 @@ static CPU_EXPORT_STATE( m68k )
m68k->iotemp = (m68k->s_flag && m68k->m_flag) ? REG_SP : REG_MSP;
break;
+ case M68K_FP0:
+ case M68K_FP1:
+ case M68K_FP2:
+ case M68K_FP3:
+ case M68K_FP4:
+ case M68K_FP5:
+ case M68K_FP6:
+ case M68K_FP7:
+ break;
+
default:
fatalerror("CPU_EXPORT_STATE(m68k) called for unexpected value\n");
break;
@@ -873,6 +894,47 @@ static CPU_SET_INFO( m68k )
}
}
+static CPU_EXPORT_STRING( m68k )
+{
+ m68ki_cpu_core *m68k = get_safe_token(device);
+
+ switch (entry->index)
+ {
+ case M68K_FP0:
+ sprintf(string, "%f", REG_FP[0].f);
+ break;
+
+ case M68K_FP1:
+ sprintf(string, "%f", REG_FP[1].f);
+ break;
+
+ case M68K_FP2:
+ sprintf(string, "%f", REG_FP[2].f);
+ break;
+
+ case M68K_FP3:
+ sprintf(string, "%f", REG_FP[3].f);
+ break;
+
+ case M68K_FP4:
+ sprintf(string, "%f", REG_FP[4].f);
+ break;
+
+ case M68K_FP5:
+ sprintf(string, "%f", REG_FP[5].f);
+ break;
+
+ case M68K_FP6:
+ sprintf(string, "%f", REG_FP[6].f);
+ break;
+
+ case M68K_FP7:
+ sprintf(string, "%f", REG_FP[7].f);
+ break;
+
+ }
+}
+
static CPU_GET_INFO( m68k )
{
m68ki_cpu_core *m68k = (device != NULL && device->token != NULL) ? get_safe_token(device) : NULL;
@@ -913,6 +975,7 @@ static CPU_GET_INFO( m68k )
case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(m68k); break;
case CPUINFO_FCT_IMPORT_STATE: info->import_state = CPU_IMPORT_STATE_NAME(m68k); break;
case CPUINFO_FCT_EXPORT_STATE: info->export_state = CPU_EXPORT_STATE_NAME(m68k); break;
+ case CPUINFO_FCT_EXPORT_STRING: info->export_string = CPU_EXPORT_STRING_NAME(m68k); break;
case CPUINFO_FCT_TRANSLATE: info->translate = CPU_TRANSLATE_NAME(m68k); break;
/* --- the following bits of info are returned as pointers --- */