diff options
author | Maciej W. Rozycki <macro@codesourcery.com> | 2014-12-02 17:02:38 +0000 |
---|---|---|
committer | Leon Alrae <leon.alrae@imgtec.com> | 2014-12-16 12:45:20 +0000 |
commit | bb962386b82c1b0e9e12fdb6b9bb62106bf1f822 (patch) | |
tree | 3eeb6545f0a1f96fd22a448b14978a080e08d9b1 /target-mips/gdbstub.c | |
parent | 74797f40dc3e17633fea614f08c828020f755b28 (diff) |
target-mips: Add missing calls to synchronise SoftFloat status
Add missing calls to synchronise the SoftFloat status with the CP1.FSCR:
+ for the rounding and flush-to-zero modes upon processor reset,
+ for the flush-to-zero mode on FSCR updates through the GDB stub.
Refactor code accordingly and remove the redundant RESTORE_ROUNDING_MODE
macro.
Signed-off-by: Thomas Schwinge <thomas@codesourcery.com>
Signed-off-by: Maciej W. Rozycki <macro@codesourcery.com>
Reviewed-by: Leon Alrae <leon.alrae@imgtec.com>
Signed-off-by: Leon Alrae <leon.alrae@imgtec.com>
Diffstat (limited to 'target-mips/gdbstub.c')
-rw-r--r-- | target-mips/gdbstub.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/target-mips/gdbstub.c b/target-mips/gdbstub.c index 2f2ffd200d..9845d880ae 100644 --- a/target-mips/gdbstub.c +++ b/target-mips/gdbstub.c @@ -74,10 +74,6 @@ int mips_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n) return 0; } -#define RESTORE_ROUNDING_MODE \ - set_float_rounding_mode(ieee_rm[env->active_fpu.fcr31 & 3], \ - &env->active_fpu.fp_status) - int mips_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) { MIPSCPU *cpu = MIPS_CPU(cs); @@ -95,7 +91,9 @@ int mips_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) case 70: env->active_fpu.fcr31 = tmp & 0xFF83FFFF; /* set rounding mode */ - RESTORE_ROUNDING_MODE; + restore_rounding_mode(env); + /* set flush-to-zero mode */ + restore_flush_mode(env); break; case 71: /* FIR is read-only. Ignore writes. */ |