diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2024-11-05 10:09:55 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2024-11-05 10:09:55 +0000 |
commit | 65c1c039cdbcf66e9bc5b0366c8f7cc22284359a (patch) | |
tree | 8e15f35f06de303a9359a72405acd2c8afa3eb5c /target/sparc | |
parent | ad58ba13d04b85c141bca2d927fb9de6490bf0c1 (diff) | |
download | qemu-65c1c039cdbcf66e9bc5b0366c8f7cc22284359a.zip qemu-65c1c039cdbcf66e9bc5b0366c8f7cc22284359a.tar.gz qemu-65c1c039cdbcf66e9bc5b0366c8f7cc22284359a.tar.bz2 |
target/sparc: Move cpu_put_fsr(env, 0) call to reset
Currently we call cpu_put_fsr(0) in sparc_cpu_realizefn(), which
initializes various fields in the CPU struct:
* fsr_cexc_ftt
* fcc[]
* fsr_qne
* fsr
It also sets the rounding mode in env->fp_status.
This is largely pointless, because when we later reset the CPU
this will zero out all the fields up until the "end_reset_fields"
label, which includes all of these (but not fp_status!)
Move the cpu_put_fsr(env, 0) call to reset, because that expresses
the logical requirement: we want to reset FSR to 0 on every reset.
This isn't a behaviour change because the fields are all zero anyway.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20241025141254.2141506-12-peter.maydell@linaro.org
Diffstat (limited to 'target/sparc')
-rw-r--r-- | target/sparc/cpu.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c index 54cb269..e7f4068a 100644 --- a/target/sparc/cpu.c +++ b/target/sparc/cpu.c @@ -76,6 +76,7 @@ static void sparc_cpu_reset_hold(Object *obj, ResetType type) env->npc = env->pc + 4; #endif env->cache_control = 0; + cpu_put_fsr(env, 0); } #ifndef CONFIG_USER_ONLY @@ -805,7 +806,6 @@ static void sparc_cpu_realizefn(DeviceState *dev, Error **errp) env->version |= env->def.maxtl << 8; env->version |= env->def.nwindows - 1; #endif - cpu_put_fsr(env, 0); cpu_exec_realizefn(cs, &local_err); if (local_err != NULL) { |