On 5/25/26 08:26, Matt Turner wrote:
sh4_cpu_gdb_write_register() wrote the incoming FPSCR value straight
into env->fpscr, leaving the derived env->fp_status (rounding mode and
flush-to-zero) stale, so a gdb-initiated FPSCR change did not take
effect for subsequent FP operations. Use cpu_load_fpscr() instead, the
same way the adjacent case already uses cpu_write_sr() for SR.

Cc: [email protected]
---
  target/sh4/gdbstub.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git ./target/sh4/gdbstub.c ./target/sh4/gdbstub.c
index 4f36e800d2..bdc8c1d164 100644
--- ./target/sh4/gdbstub.c
+++ ./target/sh4/gdbstub.c
@@ -113,7 +113,7 @@ int superh_cpu_gdb_write_register(CPUState *cs, uint8_t 
*mem_buf, int n)
          env->fpul = ldl_p(mem_buf);
          break;
      case 24:
-        env->fpscr = ldl_p(mem_buf);
+        cpu_load_fpscr(env, ldl_p(mem_buf));
          break;
      case 25 ... 40:
          if (env->fpscr & FPSCR_FR) {


Reviewed-by: Richard Henderson <[email protected]>

r~

Reply via email to