diff options
| author | Richard Henderson <richard.henderson@linaro.org> | 2023-11-03 10:38:35 -0700 |
|---|---|---|
| committer | Richard Henderson <richard.henderson@linaro.org> | 2024-02-03 16:46:10 +1000 |
| commit | 49bb972513ced00ac772c282246f3b46e3cd75c3 (patch) | |
| tree | 7e3b55f8459afd0567c91a5424b8a6cbe7fa46ee /target/sparc/fop_helper.c | |
| parent | 1ccd6e13ccc0913bd3750f47c697c3d7c31cd418 (diff) | |
| download | focaccia-qemu-49bb972513ced00ac772c282246f3b46e3cd75c3.tar.gz focaccia-qemu-49bb972513ced00ac772c282246f3b46e3cd75c3.zip | |
target/sparc: Split ver from env->fsr
This field is read-only. It is easier to store it separately and merge it only upon read. While we're at it, use FSR_VER_SHIFT to initialize fpu_version. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Message-Id: <20231103173841.33651-17-richard.henderson@linaro.org>
Diffstat (limited to '')
| -rw-r--r-- | target/sparc/fop_helper.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/target/sparc/fop_helper.c b/target/sparc/fop_helper.c index 70b38011d2..22b412adb5 100644 --- a/target/sparc/fop_helper.c +++ b/target/sparc/fop_helper.c @@ -349,7 +349,12 @@ GEN_FCMP(fcmpeq_fcc3, float128, 26, 1); target_ulong cpu_get_fsr(CPUSPARCState *env) { - return env->fsr; + target_ulong fsr = env->fsr; + + /* VER is kept completely separate until re-assembly. */ + fsr |= env->def.fpu_version; + + return fsr; } target_ulong helper_get_fsr(CPUSPARCState *env) @@ -361,7 +366,7 @@ static void set_fsr_nonsplit(CPUSPARCState *env, target_ulong fsr) { int rnd_mode; - env->fsr = fsr; + env->fsr = fsr & ~FSR_VER_MASK; switch (fsr & FSR_RD_MASK) { case FSR_RD_NEAREST: |