aboutsummaryrefslogtreecommitdiff
path: root/target/sparc
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2024-11-05 10:09:55 +0000
committerPeter Maydell <peter.maydell@linaro.org>2024-11-05 10:09:55 +0000
commit65c1c039cdbcf66e9bc5b0366c8f7cc22284359a (patch)
tree8e15f35f06de303a9359a72405acd2c8afa3eb5c /target/sparc
parentad58ba13d04b85c141bca2d927fb9de6490bf0c1 (diff)
downloadqemu-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.c2
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) {