mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
target/m68k: Init local float_status from env fp_status in gdb get/set reg
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> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20241202131347.498124-32-peter.maydell@linaro.org
This commit is contained in:
parent
b1969a5dd4
commit
ca81533e94
1 changed files with 4 additions and 2 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue