diff options
author | Greg Kurz <gkurz@linux.vnet.ibm.com> | 2016-01-15 16:00:25 +0100 |
---|---|---|
committer | Timothy Pearson <tpearson@raptorengineering.com> | 2019-11-29 19:30:22 -0600 |
commit | 752e133eb3b97d3739e1cec0df020622581c14d6 (patch) | |
tree | f851f896a0b9853e1452795b4456e1357c5fa97c | |
parent | eeb54543f3ec8e460ff4b8b6b6d8678d93b3ac9e (diff) | |
download | hqemu-752e133eb3b97d3739e1cec0df020622581c14d6.zip hqemu-752e133eb3b97d3739e1cec0df020622581c14d6.tar.gz |
target-ppc: gdbstub: fix float registers for little-endian guests
Let's reuse the ppc_maybe_bswap_register() helper, like we already do
with the general registers.
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r-- | target-ppc/translate_init.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 78c2811..031c71e 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -8754,10 +8754,12 @@ static int gdb_get_float_reg(CPUPPCState *env, uint8_t *mem_buf, int n) { if (n < 32) { stfq_p(mem_buf, env->fpr[n]); + ppc_maybe_bswap_register(env, mem_buf, 8); return 8; } if (n == 32) { stl_p(mem_buf, env->fpscr); + ppc_maybe_bswap_register(env, mem_buf, 4); return 4; } return 0; @@ -8766,10 +8768,12 @@ static int gdb_get_float_reg(CPUPPCState *env, uint8_t *mem_buf, int n) static int gdb_set_float_reg(CPUPPCState *env, uint8_t *mem_buf, int n) { if (n < 32) { + ppc_maybe_bswap_register(env, mem_buf, 8); env->fpr[n] = ldfq_p(mem_buf); return 8; } if (n == 32) { + ppc_maybe_bswap_register(env, mem_buf, 4); helper_store_fpscr(env, ldl_p(mem_buf), 0xffffffff); return 4; } |