mirror of https://github.com/xemu-project/xemu.git
target/mips: Turn printfpr() macro into a proper function
Turn printfpr() macro into a proper function: fpu_dump_fpr(). Suggested-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20210428170410.479308-8-f4bug@amsat.org>
This commit is contained in:
parent
4f14ce4bf4
commit
4d169b9cce
|
@ -145,33 +145,31 @@ void cpu_mips_store_cause(CPUMIPSState *env, target_ulong val)
|
|||
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
|
||||
static void fpu_dump_fpr(fpr_t *fpr, FILE *f, bool is_fpu64)
|
||||
{
|
||||
if (is_fpu64) {
|
||||
qemu_fprintf(f, "w:%08x d:%016" PRIx64 " fd:%13g fs:%13g psu: %13g\n",
|
||||
fpr->w[FP_ENDIAN_IDX], fpr->d,
|
||||
(double)fpr->fd,
|
||||
(double)fpr->fs[FP_ENDIAN_IDX],
|
||||
(double)fpr->fs[!FP_ENDIAN_IDX]);
|
||||
} else {
|
||||
fpr_t tmp;
|
||||
|
||||
tmp.w[FP_ENDIAN_IDX] = fpr->w[FP_ENDIAN_IDX];
|
||||
tmp.w[!FP_ENDIAN_IDX] = (fpr + 1)->w[FP_ENDIAN_IDX];
|
||||
qemu_fprintf(f, "w:%08x d:%016" PRIx64 " fd:%13g fs:%13g psu:%13g\n",
|
||||
tmp.w[FP_ENDIAN_IDX], tmp.d,
|
||||
(double)tmp.fd,
|
||||
(double)tmp.fs[FP_ENDIAN_IDX],
|
||||
(double)tmp.fs[!FP_ENDIAN_IDX]);
|
||||
}
|
||||
}
|
||||
|
||||
static void fpu_dump_state(CPUMIPSState *env, FILE *f, int flags)
|
||||
{
|
||||
int i;
|
||||
int is_fpu64 = !!(env->hflags & MIPS_HFLAG_F64);
|
||||
|
||||
#define printfpr(fp) \
|
||||
do { \
|
||||
if (is_fpu64) \
|
||||
qemu_fprintf(f, "w:%08x d:%016" PRIx64 \
|
||||
" fd:%13g fs:%13g psu: %13g\n", \
|
||||
(fp)->w[FP_ENDIAN_IDX], (fp)->d, \
|
||||
(double)(fp)->fd, \
|
||||
(double)(fp)->fs[FP_ENDIAN_IDX], \
|
||||
(double)(fp)->fs[!FP_ENDIAN_IDX]); \
|
||||
else { \
|
||||
fpr_t tmp; \
|
||||
tmp.w[FP_ENDIAN_IDX] = (fp)->w[FP_ENDIAN_IDX]; \
|
||||
tmp.w[!FP_ENDIAN_IDX] = ((fp) + 1)->w[FP_ENDIAN_IDX]; \
|
||||
qemu_fprintf(f, "w:%08x d:%016" PRIx64 \
|
||||
" fd:%13g fs:%13g psu:%13g\n", \
|
||||
tmp.w[FP_ENDIAN_IDX], tmp.d, \
|
||||
(double)tmp.fd, \
|
||||
(double)tmp.fs[FP_ENDIAN_IDX], \
|
||||
(double)tmp.fs[!FP_ENDIAN_IDX]); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
bool is_fpu64 = !!(env->hflags & MIPS_HFLAG_F64);
|
||||
|
||||
qemu_fprintf(f,
|
||||
"CP1 FCR0 0x%08x FCR31 0x%08x SR.FR %d fp_status 0x%02x\n",
|
||||
|
@ -179,10 +177,8 @@ static void fpu_dump_state(CPUMIPSState *env, FILE *f, int flags)
|
|||
get_float_exception_flags(&env->active_fpu.fp_status));
|
||||
for (i = 0; i < 32; (is_fpu64) ? i++ : (i += 2)) {
|
||||
qemu_fprintf(f, "%3s: ", fregnames[i]);
|
||||
printfpr(&env->active_fpu.fpr[i]);
|
||||
fpu_dump_fpr(&env->active_fpu.fpr[i], f, is_fpu64);
|
||||
}
|
||||
|
||||
#undef printfpr
|
||||
}
|
||||
|
||||
static void mips_cpu_dump_state(CPUState *cs, FILE *f, int flags)
|
||||
|
|
Loading…
Reference in New Issue