From 98be8ed00d45cf6de6ab8c0439abbc6f90f32c75 Mon Sep 17 00:00:00 2001 From: "R. Belmont" Date: Thu, 11 Mar 2010 04:41:16 +0000 Subject: [PATCH] m680x0: show FPU registers in the debugger for 030+ --- src/emu/cpu/m68000/m68000.h | 2 ++ src/emu/cpu/m68000/m68kcpu.c | 63 ++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) 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 --- */