[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 for-10.0 31/54] target/m68k: Init local float_status from env
From: |
Peter Maydell |
Subject: |
[PATCH v2 for-10.0 31/54] target/m68k: Init local float_status from env fp_status in gdb get/set reg |
Date: |
Mon, 2 Dec 2024 13:13:24 +0000 |
In cf_fpu_gdb_get_reg() and cf_fpu_gdb_set_reg() we do the conversion
from float64 to floatx80 using a scratch float_status, because we
don't want the conversion to affect the CPU's floating point exception
status. Currently we use a zero-initialized float_status. This will
get steadily more awkward as we add config knobs to float_status
that the target must initialize. Avoid having to add any of that
configuration here by instead initializing our local float_status
from the env->fp_status.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
target/m68k/helper.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/target/m68k/helper.c b/target/m68k/helper.c
index 9bfc6ae97c0..beefeb7069c 100644
--- a/target/m68k/helper.c
+++ b/target/m68k/helper.c
@@ -36,7 +36,8 @@ static int cf_fpu_gdb_get_reg(CPUState *cs, GByteArray
*mem_buf, int n)
CPUM68KState *env = &cpu->env;
if (n < 8) {
- float_status s = {};
+ /* Use scratch float_status so any exceptions don't change CPU state */
+ float_status s = env->fp_status;
return gdb_get_reg64(mem_buf, floatx80_to_float64(env->fregs[n].d,
&s));
}
switch (n) {
@@ -56,7 +57,8 @@ static int cf_fpu_gdb_set_reg(CPUState *cs, uint8_t *mem_buf,
int n)
CPUM68KState *env = &cpu->env;
if (n < 8) {
- float_status s = {};
+ /* Use scratch float_status so any exceptions don't change CPU state */
+ float_status s = env->fp_status;
env->fregs[n].d = float64_to_floatx80(ldq_be_p(mem_buf), &s);
return 8;
}
--
2.34.1
- [PATCH v2 for-10.0 11/54] target/x86: Set FloatInfZeroNaNRule explicitly, (continued)
- [PATCH v2 for-10.0 11/54] target/x86: Set FloatInfZeroNaNRule explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 36/54] target/microblaze: Set default NaN pattern explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 38/54] target/hppa: Set default NaN pattern explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 28/54] softfloat: Create floatx80 default NaN from parts64_default_nan, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 19/54] target/ppc: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 43/54] target/mips: Set default NaN pattern explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 13/54] target/hppa: Set FloatInfZeroNaNRule explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 16/54] tests/fp: Explicitly set 3-NaN propagation rule, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 48/54] target/s390x: Set default NaN pattern explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 07/54] target/ppc: Set FloatInfZeroNaNRule explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 31/54] target/m68k: Init local float_status from env fp_status in gdb get/set reg,
Peter Maydell <=
- [PATCH v2 for-10.0 39/54] target/alpha: Set default NaN pattern explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 18/54] target/loongarch: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 53/54] target/tricore: Set default NaN pattern explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 21/54] target/sparc: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 12/54] target/loongarch: Set FloatInfZeroNaNRule explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 42/54] target/m68k: Set default NaN pattern explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 24/54] target/i386: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 51/54] target/hexagon: Set default NaN pattern explicitly, Peter Maydell, 2024/12/02
- [PATCH v2 for-10.0 54/54] fpu: Remove default handling for dnan_pattern, Peter Maydell, 2024/12/02