46 lines
1.5 KiB
Diff
46 lines
1.5 KiB
Diff
From: Greg Kurz <gkurz@linux.vnet.ibm.com>
|
|
Date: Fri, 15 Jan 2016 16:00:25 +0100
|
|
Subject: [PATCH] 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>
|
|
(cherry picked from commit 385abeb3e356452eace44f3fe15e18c2532dcaa7)
|
|
---
|
|
target-ppc/translate_init.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
|
|
index d74f4f0..51fa03c 100644
|
|
--- a/target-ppc/translate_init.c
|
|
+++ b/target-ppc/translate_init.c
|
|
@@ -8758,10 +8758,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;
|
|
@@ -8770,10 +8772,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;
|
|
}
|