On Tue, 26 May 2026 00:26:42 +0900,
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) {
> -- 
> 2.53.0
> 

Reviewed-by: Yoshinori Sato <[email protected]>

-- 
Yosinori Sato

Reply via email to