[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 22/39] target-ppc: gdbstub: introduce avr_need_swap()
From: |
David Gibson |
Subject: |
[Qemu-devel] [PULL 22/39] target-ppc: gdbstub: introduce avr_need_swap() |
Date: |
Fri, 29 Jan 2016 16:06:54 +1100 |
From: Greg Kurz <address@hidden>
This helper will be used to support Altivec registers in little-endian guests.
This patch does not change functionnality.
Note: I had to put the helper some lines away from the gdb_*_avr_reg()
routines to get a more readable patch.
Signed-off-by: Greg Kurz <address@hidden>
Signed-off-by: David Gibson <address@hidden>
---
target-ppc/translate_init.c | 37 +++++++++++++++++++++++--------------
1 file changed, 23 insertions(+), 14 deletions(-)
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 26b9b67..41308c3 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -8751,6 +8751,15 @@ static void dump_ppc_insns (CPUPPCState *env)
}
#endif
+static bool avr_need_swap(CPUPPCState *env)
+{
+#ifdef HOST_WORDS_BIGENDIAN
+ return false;
+#else
+ return true;
+#endif
+}
+
static int gdb_get_float_reg(CPUPPCState *env, uint8_t *mem_buf, int n)
{
if (n < 32) {
@@ -8784,13 +8793,13 @@ static int gdb_set_float_reg(CPUPPCState *env, uint8_t
*mem_buf, int n)
static int gdb_get_avr_reg(CPUPPCState *env, uint8_t *mem_buf, int n)
{
if (n < 32) {
-#ifdef HOST_WORDS_BIGENDIAN
- stq_p(mem_buf, env->avr[n].u64[0]);
- stq_p(mem_buf+8, env->avr[n].u64[1]);
-#else
- stq_p(mem_buf, env->avr[n].u64[1]);
- stq_p(mem_buf+8, env->avr[n].u64[0]);
-#endif
+ if (!avr_need_swap(env)) {
+ stq_p(mem_buf, env->avr[n].u64[0]);
+ stq_p(mem_buf+8, env->avr[n].u64[1]);
+ } else {
+ stq_p(mem_buf, env->avr[n].u64[1]);
+ stq_p(mem_buf+8, env->avr[n].u64[0]);
+ }
return 16;
}
if (n == 32) {
@@ -8807,13 +8816,13 @@ static int gdb_get_avr_reg(CPUPPCState *env, uint8_t
*mem_buf, int n)
static int gdb_set_avr_reg(CPUPPCState *env, uint8_t *mem_buf, int n)
{
if (n < 32) {
-#ifdef HOST_WORDS_BIGENDIAN
- env->avr[n].u64[0] = ldq_p(mem_buf);
- env->avr[n].u64[1] = ldq_p(mem_buf+8);
-#else
- env->avr[n].u64[1] = ldq_p(mem_buf);
- env->avr[n].u64[0] = ldq_p(mem_buf+8);
-#endif
+ if (!avr_need_swap(env)) {
+ env->avr[n].u64[0] = ldq_p(mem_buf);
+ env->avr[n].u64[1] = ldq_p(mem_buf+8);
+ } else {
+ env->avr[n].u64[1] = ldq_p(mem_buf);
+ env->avr[n].u64[0] = ldq_p(mem_buf+8);
+ }
return 16;
}
if (n == 32) {
--
2.5.0
- [Qemu-devel] [PULL 17/39] pseries: Clean up error reporting in ppc_spapr_init(), (continued)
- [Qemu-devel] [PULL 17/39] pseries: Clean up error reporting in ppc_spapr_init(), David Gibson, 2016/01/29
- [Qemu-devel] [PULL 33/39] target-ppc: Use actual page size encodings from HPTE, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 34/39] target-ppc: Remove unused mmu models from ppc_tlb_invalidate_one, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 06/39] cuda: add missing fields to VMStateDescription, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 15/39] pseries: Clean up error handling in spapr_rtas_register(), David Gibson, 2016/01/29
- [Qemu-devel] [PULL 10/39] spapr: Don't create ibm, dynamic-reconfiguration-memory w/o DR LMBs, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 07/39] spapr: Small fixes to rtas_ibm_get_system_parameter, remove rtas_st_buffer, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 16/39] pseries: Clean up error handling in xics_system_init(), David Gibson, 2016/01/29
- [Qemu-devel] [PULL 09/39] spapr: Remove abuse of rtas_ld() in h_client_architecture_support, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 13/39] pseries: Clean up error handling in spapr_validate_node_memory(), David Gibson, 2016/01/29
- [Qemu-devel] [PULL 22/39] target-ppc: gdbstub: introduce avr_need_swap(),
David Gibson <=
- [Qemu-devel] [PULL 29/39] target-ppc: Remove unused kvmppc_read_segment_page_sizes() stub, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 27/39] cuda.c: return error for unknown commands, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 28/39] uninorth.c: add support for UniNorth kMacRISCPCIAddressSelect (0x48) register, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 25/39] target-ppc: gdbstub: Add VSX support, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 08/39] spapr: Remove rtas_st_buffer_direct(), David Gibson, 2016/01/29
- [Qemu-devel] [PULL 20/39] target-ppc: rename and export maybe_bswap_register(), David Gibson, 2016/01/29
- [Qemu-devel] [PULL 19/39] target-ppc: kvm: fix floating point registers sync on little-endian hosts, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 21/39] target-ppc: gdbstub: fix float registers for little-endian guests, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 18/39] pseries: Clean up error reporting in htab migration functions, David Gibson, 2016/01/29
- [Qemu-devel] [PULL 24/39] target-ppc: gdbstub: fix spe registers for little-endian guests, David Gibson, 2016/01/29