m680x0: show FPU registers in the debugger for 030+

This commit is contained in:
R. Belmont 2010-03-11 04:41:16 +00:00
parent e5ac159fb7
commit 98be8ed00d
2 changed files with 65 additions and 0 deletions

View File

@ -58,6 +58,8 @@ enum
M68K_SFC, M68K_DFC, M68K_CACR, M68K_CAAR, M68K_PREF_ADDR, M68K_PREF_DATA, 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_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_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_GENPC = REG_GENPC,
M68K_GENSP = REG_GENSP, M68K_GENSP = REG_GENSP,

View File

@ -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(CACR, "%08X", cacr, 0xffffffff, 0, MASK_020_OR_LATER)
M68K_STATE_ENTRY(CAAR, "%08X", caar, 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 = 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; m68k->iotemp = (m68k->s_flag && m68k->m_flag) ? REG_SP : REG_MSP;
break; 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: default:
fatalerror("CPU_EXPORT_STATE(m68k) called for unexpected value\n"); fatalerror("CPU_EXPORT_STATE(m68k) called for unexpected value\n");
break; 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 ) static CPU_GET_INFO( m68k )
{ {
m68ki_cpu_core *m68k = (device != NULL && device->token != NULL) ? get_safe_token(device) : NULL; 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_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_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_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; case CPUINFO_FCT_TRANSLATE: info->translate = CPU_TRANSLATE_NAME(m68k); break;
/* --- the following bits of info are returned as pointers --- */ /* --- the following bits of info are returned as pointers --- */