Mark Wielaard 6f7ad2
From 4f0b04ae746ccb2a848292027defef48873b2598 Mon Sep 17 00:00:00 2001
Mark Wielaard 6f7ad2
From: Carl Love <carll@us.ibm.com>
Mark Wielaard 6f7ad2
Date: Tue, 8 Jul 2014 10:37:46 -0500
Mark Wielaard 6f7ad2
Subject: [PATCH] POWER PC, add initial Little Endian support
Mark Wielaard 6f7ad2
Mark Wielaard 6f7ad2
The IBM POWER processor now supports both Big Endian and Little Endian.
Mark Wielaard 6f7ad2
This patch renames the #defines with the name ppc64 to ppc64be for the BE
Mark Wielaard 6f7ad2
specific code.  This patch adds the Little Endian #define ppc64le to the
Mark Wielaard 6f7ad2
Mark Wielaard 6f7ad2
Additionally, a few functions are renamed to remove BE from the name if the
Mark Wielaard 6f7ad2
function is used by BE and LE. Functions that are BE specific have BE put
Mark Wielaard 6f7ad2
in the name.
Mark Wielaard 6f7ad2
Mark Wielaard 6f7ad2
The goals of this patch is to make sure #defines, function names and
Mark Wielaard 6f7ad2
variables consistently use PPC64/ppc64 if it refers to BE and LE,
Mark Wielaard 6f7ad2
PPC64BE/ppc64be if it is specific to BE, PPC64LE/ppc64le if it is LE
Mark Wielaard 6f7ad2
specific.  The patch does not break the code for PPC64 Big Endian.
Mark Wielaard 6f7ad2
Mark Wielaard 6f7ad2
The patch removes the BASH specific use of "BASH_SOURCE[0]" in
Mark Wielaard 6f7ad2
tests/check_isa-2_06_cap and tests/check_isa-2_07 as it is not portable
Mark Wielaard 6f7ad2
across other shells.
Mark Wielaard 6f7ad2
Mark Wielaard 6f7ad2
Signed-off-by: Carl Love <carll@us.ibm.com>
Mark Wielaard 6f7ad2
---
Mark Wielaard 6f7ad2
 Makefile.all.am                             |  23 +-
Mark Wielaard 6f7ad2
 Makefile.tool.am                            |  21 +-
Mark Wielaard 6f7ad2
 VEX/priv/guest_ppc_toIR.c                   | 356 ++++++++++++++--------------
Mark Wielaard 6f7ad2
 cachegrind/cg_arch.c                        |   2 +-
Mark Wielaard 6f7ad2
 cachegrind/cg_branchpred.c                  |   2 +-
Mark Wielaard 6f7ad2
 configure.ac                                |  57 ++++-
Mark Wielaard 6f7ad2
 coregrind/launcher-darwin.c                 |  10 +-
Mark Wielaard 6f7ad2
 coregrind/launcher-linux.c                  |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_aspacemgr/aspacemgr-common.c    |   3 +-
Mark Wielaard 6f7ad2
 coregrind/m_cache.c                         |   3 +-
Mark Wielaard 6f7ad2
 coregrind/m_coredump/coredump-elf.c         |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_debugger.c                      |   2 +-
Mark Wielaard 6f7ad2
 coregrind/m_debuginfo/d3basics.c            |   5 +-
Mark Wielaard 6f7ad2
 coregrind/m_debuginfo/debuginfo.c           |  15 +-
Mark Wielaard 6f7ad2
 coregrind/m_debuginfo/priv_storage.h        |   2 +-
Mark Wielaard 6f7ad2
 coregrind/m_debuginfo/readdwarf.c           |  15 +-
Mark Wielaard 6f7ad2
 coregrind/m_debuginfo/readelf.c             |  47 ++--
Mark Wielaard 6f7ad2
 coregrind/m_debuginfo/readmacho.c           |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_debuginfo/storage.c             |   2 +-
Mark Wielaard 6f7ad2
 coregrind/m_debuglog.c                      |   2 +-
Mark Wielaard 6f7ad2
 coregrind/m_dispatch/dispatch-ppc64-linux.S |   6 +-
Mark Wielaard 6f7ad2
 coregrind/m_gdbserver/target.c              |   2 +-
Mark Wielaard 6f7ad2
 coregrind/m_initimg/initimg-linux.c         |  18 +-
Mark Wielaard 6f7ad2
 coregrind/m_libcassert.c                    |   2 +-
Mark Wielaard 6f7ad2
 coregrind/m_libcfile.c                      |  25 +-
Mark Wielaard 6f7ad2
 coregrind/m_libcproc.c                      |   6 +-
Mark Wielaard 6f7ad2
 coregrind/m_libcsetjmp.c                    |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_machine.c                       |  26 +-
Mark Wielaard 6f7ad2
 coregrind/m_main.c                          |  19 +-
Mark Wielaard 6f7ad2
 coregrind/m_redir.c                         |   2 +-
Mark Wielaard 6f7ad2
 coregrind/m_scheduler/scheduler.c           |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_sigframe/sigframe-ppc64-linux.c |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_signals.c                       |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_stacktrace.c                    |  13 +-
Mark Wielaard 6f7ad2
 coregrind/m_syscall.c                       |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_syswrap/priv_types_n_macros.h   |   3 +-
Mark Wielaard 6f7ad2
 coregrind/m_syswrap/syscall-ppc64-linux.S   |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_syswrap/syswrap-linux.c         |   8 +-
Mark Wielaard 6f7ad2
 coregrind/m_syswrap/syswrap-main.c          |  12 +-
Mark Wielaard 6f7ad2
 coregrind/m_syswrap/syswrap-ppc64-linux.c   |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_trampoline.S                    |   2 +-
Mark Wielaard 6f7ad2
 coregrind/m_translate.c                     |  16 +-
Mark Wielaard 6f7ad2
 coregrind/m_ume/elf.c                       |   6 +-
Mark Wielaard 6f7ad2
 coregrind/m_ume/macho.c                     |   4 +-
Mark Wielaard 6f7ad2
 coregrind/m_vki.c                           |   4 +-
Mark Wielaard 6f7ad2
 coregrind/pub_core_aspacemgr.h              |   3 +-
Mark Wielaard 6f7ad2
 coregrind/pub_core_basics.h                 |   2 +-
Mark Wielaard 6f7ad2
 coregrind/pub_core_debuginfo.h              |   2 +-
Mark Wielaard 6f7ad2
 coregrind/pub_core_machine.h                |   8 +-
Mark Wielaard 6f7ad2
 coregrind/pub_core_mallocfree.h             |  15 +-
Mark Wielaard 6f7ad2
 coregrind/pub_core_threadstate.h            |   2 +-
Mark Wielaard 6f7ad2
 coregrind/pub_core_trampoline.h             |   2 +-
Mark Wielaard 6f7ad2
 coregrind/pub_core_transtab_asm.h           |   4 +-
Mark Wielaard 6f7ad2
 coregrind/vgdb-invoker-ptrace.c             |   6 +-
Mark Wielaard 6f7ad2
 drd/drd_bitmap.h                            |   4 +-
Mark Wielaard 6f7ad2
 drd/drd_load_store.c                        |   2 +-
Mark Wielaard 6f7ad2
 drd/tests/unit_bitmap.c                     |   3 +-
Mark Wielaard 6f7ad2
 helgrind/tests/annotate_hbefore.c           |   2 +-
Mark Wielaard 6f7ad2
 include/pub_tool_basics.h                   |   7 +-
Mark Wielaard 6f7ad2
 include/pub_tool_libcsetjmp.h               |   2 +-
Mark Wielaard 6f7ad2
 include/pub_tool_machine.h                  |   2 +-
Mark Wielaard 6f7ad2
 include/pub_tool_vkiscnums_asm.h            |   2 +-
Mark Wielaard 6f7ad2
 include/valgrind.h                          |  22 +-
Mark Wielaard 6f7ad2
 include/vki/vki-linux.h                     |   4 +-
Mark Wielaard 6f7ad2
 memcheck/mc_machine.c                       |   7 +-
Mark Wielaard 6f7ad2
 memcheck/tests/atomic_incs.c                |   8 +-
Mark Wielaard 6f7ad2
 memcheck/tests/unit_libcbase.c              |   3 +-
Mark Wielaard 6f7ad2
 tests/Makefile.am                           |   3 +-
Mark Wielaard 6f7ad2
 tests/arch_test.c                           |   2 +-
Mark Wielaard 6f7ad2
 tests/check_isa-2_06_cap                    |   2 +-
Mark Wielaard 6f7ad2
 tests/check_isa-2_07_cap                    |   2 +-
Mark Wielaard 6f7ad2
 tests/is_ppc64_BE.c                         |  14 ++
Mark Wielaard 6f7ad2
 tests/power_insn_available.c                |   6 +-
Mark Wielaard 6f7ad2
 73 files changed, 506 insertions(+), 416 deletions(-)
Mark Wielaard 6f7ad2
 create mode 100644 tests/is_ppc64_BE.c
Mark Wielaard 6f7ad2
Mark Wielaard 6f7ad2
diff --git a/Makefile.all.am b/Makefile.all.am
Mark Wielaard 6f7ad2
index 0d30ed5..f0b638d 100644
Mark Wielaard 6f7ad2
--- a/Makefile.all.am
Mark Wielaard 6f7ad2
+++ b/Makefile.all.am
Mark Wielaard 6f7ad2
@@ -229,15 +229,16 @@ if VGCONF_PLATVARIANT_IS_ANDROID
Mark Wielaard 6f7ad2
 PRELOAD_LDFLAGS_COMMON_LINUX += -nostdlib
Mark Wielaard 6f7ad2
 endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_X86_LINUX    = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_AMD64_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_PPC32_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_PPC64_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_ARM_LINUX    = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_ARM64_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_X86_DARWIN   = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_S390X_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
Mark Wielaard 6f7ad2
-PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_X86_LINUX      = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_AMD64_LINUX    = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_PPC32_LINUX    = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_PPC64BE_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_PPC64LE_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_ARM_LINUX      = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_ARM64_LINUX    = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_X86_DARWIN     = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_AMD64_DARWIN   = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_S390X_LINUX    = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_MIPS32_LINUX   = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
Mark Wielaard 6f7ad2
+PRELOAD_LDFLAGS_MIPS64_LINUX   = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
diff --git a/Makefile.tool.am b/Makefile.tool.am
Mark Wielaard 6f7ad2
index 6e15ce4..458d5ee 100644
Mark Wielaard 6f7ad2
--- a/Makefile.tool.am
Mark Wielaard 6f7ad2
+++ b/Makefile.tool.am
Mark Wielaard 6f7ad2
@@ -46,7 +46,10 @@ TOOL_LDFLAGS_AMD64_LINUX = \
Mark Wielaard 6f7ad2
 TOOL_LDFLAGS_PPC32_LINUX = \
Mark Wielaard 6f7ad2
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-TOOL_LDFLAGS_PPC64_LINUX = \
Mark Wielaard 6f7ad2
+TOOL_LDFLAGS_PPC64BE_LINUX = \
Mark Wielaard 6f7ad2
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
+
Mark Wielaard 6f7ad2
+TOOL_LDFLAGS_PPC64LE_LINUX = \
Mark Wielaard 6f7ad2
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 TOOL_LDFLAGS_ARM_LINUX = \
Mark Wielaard 6f7ad2
@@ -102,8 +105,11 @@ LIBREPLACEMALLOC_AMD64_LINUX = \
Mark Wielaard 6f7ad2
 LIBREPLACEMALLOC_PPC32_LINUX = \
Mark Wielaard 6f7ad2
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc32-linux.a
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-LIBREPLACEMALLOC_PPC64_LINUX = \
Mark Wielaard 6f7ad2
-	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64-linux.a
Mark Wielaard 6f7ad2
+LIBREPLACEMALLOC_PPC64BE_LINUX = \
Mark Wielaard 6f7ad2
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64be-linux.a
Mark Wielaard 6f7ad2
+
Mark Wielaard 6f7ad2
+LIBREPLACEMALLOC_PPC64LE_LINUX = \
Mark Wielaard 6f7ad2
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64le-linux.a
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 LIBREPLACEMALLOC_ARM_LINUX = \
Mark Wielaard 6f7ad2
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-arm-linux.a
Mark Wielaard 6f7ad2
@@ -141,9 +147,14 @@ LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX = \
Mark Wielaard 6f7ad2
 	$(LIBREPLACEMALLOC_PPC32_LINUX) \
Mark Wielaard 6f7ad2
 	-Wl,--no-whole-archive
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-LIBREPLACEMALLOC_LDFLAGS_PPC64_LINUX = \
Mark Wielaard 6f7ad2
+LIBREPLACEMALLOC_LDFLAGS_PPC64BE_LINUX = \
Mark Wielaard 6f7ad2
+	-Wl,--whole-archive \
Mark Wielaard 6f7ad2
+	$(LIBREPLACEMALLOC_PPC64BE_LINUX) \
Mark Wielaard 6f7ad2
+	-Wl,--no-whole-archive
Mark Wielaard 6f7ad2
+
Mark Wielaard 6f7ad2
+LIBREPLACEMALLOC_LDFLAGS_PPC64LE_LINUX = \
Mark Wielaard 6f7ad2
 	-Wl,--whole-archive \
Mark Wielaard 6f7ad2
-	$(LIBREPLACEMALLOC_PPC64_LINUX) \
Mark Wielaard 6f7ad2
+	$(LIBREPLACEMALLOC_PPC64LE_LINUX) \
Mark Wielaard 6f7ad2
 	-Wl,--no-whole-archive
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 LIBREPLACEMALLOC_LDFLAGS_ARM_LINUX = \
Mark Wielaard 6f7ad2
diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c
Mark Wielaard 6f7ad2
index d39debf..e0031a3 100644
Mark Wielaard 6f7ad2
--- a/VEX/priv/guest_ppc_toIR.c
Mark Wielaard 6f7ad2
+++ b/VEX/priv/guest_ppc_toIR.c
Mark Wielaard 6f7ad2
@@ -144,6 +144,7 @@
Mark Wielaard 6f7ad2
 #include "guest_ppc_defs.h"
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
+#define IENDIANESS   Iend_BE
Mark Wielaard 6f7ad2
 /*------------------------------------------------------------*/
Mark Wielaard 6f7ad2
 /*--- Globals                                              ---*/
Mark Wielaard 6f7ad2
 /*------------------------------------------------------------*/
Mark Wielaard 6f7ad2
@@ -503,9 +504,9 @@ static ULong extend_s_32to64 ( UInt x )
Mark Wielaard 6f7ad2
    return (ULong)((((Long)x) << 32) >> 32);
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-/* Do a big-endian load of a 32-bit word, regardless of the endianness
Mark Wielaard 6f7ad2
+/* Do a proper-endian load of a 32-bit word, regardless of the endianness
Mark Wielaard 6f7ad2
    of the underlying host. */
Mark Wielaard 6f7ad2
-static UInt getUIntBigendianly ( UChar* p )
Mark Wielaard 6f7ad2
+static UInt getUIntPPCendianly ( UChar* p )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
    UInt w = 0;
Mark Wielaard 6f7ad2
    w = (w << 8) | p[0];
Mark Wielaard 6f7ad2
@@ -526,11 +527,11 @@ static void assign ( IRTemp dst, IRExpr* e )
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* This generates a normal (non store-conditional) store. */
Mark Wielaard 6f7ad2
-static void storeBE ( IRExpr* addr, IRExpr* data )
Mark Wielaard 6f7ad2
+static void store ( IRExpr* addr, IRExpr* data )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
    IRType tyA = typeOfIRExpr(irsb->tyenv, addr);
Mark Wielaard 6f7ad2
    vassert(tyA == Ity_I32 || tyA == Ity_I64);
Mark Wielaard 6f7ad2
-   stmt( IRStmt_Store(Iend_BE, addr, data) );
Mark Wielaard 6f7ad2
+   stmt( IRStmt_Store(IENDIANESS, addr, data) );
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 static IRExpr* unop ( IROp op, IRExpr* a )
Mark Wielaard 6f7ad2
@@ -586,9 +587,9 @@ static IRExpr* mkV128 ( UShort i )
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* This generates a normal (non load-linked) load. */
Mark Wielaard 6f7ad2
-static IRExpr* loadBE ( IRType ty, IRExpr* addr )
Mark Wielaard 6f7ad2
+static IRExpr* load ( IRType ty, IRExpr* addr )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
-   return IRExpr_Load(Iend_BE, ty, addr);
Mark Wielaard 6f7ad2
+   return IRExpr_Load(IENDIANESS, ty, addr);
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 static IRExpr* mkOR1 ( IRExpr* arg1, IRExpr* arg2 )
Mark Wielaard 6f7ad2
@@ -4758,7 +4759,7 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
    switch (opc1) {
Mark Wielaard 6f7ad2
    case 0x22: // lbz (Load B & Zero, PPC32 p433)
Mark Wielaard 6f7ad2
       DIP("lbz r%u,%d(r%u)\n", rD_addr, (Int)simm16, rA_addr);
Mark Wielaard 6f7ad2
-      val = loadBE(Ity_I8, mkexpr(EA));
Mark Wielaard 6f7ad2
+      val = load(Ity_I8, mkexpr(EA));
Mark Wielaard 6f7ad2
       putIReg( rD_addr, mkWidenFrom8(ty, val, False) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
@@ -4768,14 +4769,14 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
          return False;
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       DIP("lbzu r%u,%d(r%u)\n", rD_addr, (Int)simm16, rA_addr);
Mark Wielaard 6f7ad2
-      val = loadBE(Ity_I8, mkexpr(EA));
Mark Wielaard 6f7ad2
+      val = load(Ity_I8, mkexpr(EA));
Mark Wielaard 6f7ad2
       putIReg( rD_addr, mkWidenFrom8(ty, val, False) );
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
    case 0x2A: // lha (Load HW Alg, PPC32 p445)
Mark Wielaard 6f7ad2
       DIP("lha r%u,%d(r%u)\n", rD_addr, (Int)simm16, rA_addr);
Mark Wielaard 6f7ad2
-      val = loadBE(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
+      val = load(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
       putIReg( rD_addr, mkWidenFrom16(ty, val, True) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -4785,14 +4786,14 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
          return False;
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       DIP("lhau r%u,%d(r%u)\n", rD_addr, (Int)simm16, rA_addr);
Mark Wielaard 6f7ad2
-      val = loadBE(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
+      val = load(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
       putIReg( rD_addr, mkWidenFrom16(ty, val, True) );
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
    case 0x28: // lhz (Load HW & Zero, PPC32 p450)
Mark Wielaard 6f7ad2
       DIP("lhz r%u,%d(r%u)\n", rD_addr, (Int)simm16, rA_addr);
Mark Wielaard 6f7ad2
-      val = loadBE(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
+      val = load(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
       putIReg( rD_addr, mkWidenFrom16(ty, val, False) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
@@ -4802,14 +4803,14 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
          return False;
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       DIP("lhzu r%u,%d(r%u)\n", rD_addr, (Int)simm16, rA_addr);
Mark Wielaard 6f7ad2
-      val = loadBE(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
+      val = load(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
       putIReg( rD_addr, mkWidenFrom16(ty, val, False) );
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x20: // lwz (Load W & Zero, PPC32 p460)
Mark Wielaard 6f7ad2
       DIP("lwz r%u,%d(r%u)\n", rD_addr, (Int)simm16, rA_addr);
Mark Wielaard 6f7ad2
-      val = loadBE(Ity_I32, mkexpr(EA));
Mark Wielaard 6f7ad2
+      val = load(Ity_I32, mkexpr(EA));
Mark Wielaard 6f7ad2
       putIReg( rD_addr, mkWidenFrom32(ty, val, False) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
@@ -4819,7 +4820,7 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
          return False;
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       DIP("lwzu r%u,%d(r%u)\n", rD_addr, (Int)simm16, rA_addr);
Mark Wielaard 6f7ad2
-      val = loadBE(Ity_I32, mkexpr(EA));
Mark Wielaard 6f7ad2
+      val = load(Ity_I32, mkexpr(EA));
Mark Wielaard 6f7ad2
       putIReg( rD_addr, mkWidenFrom32(ty, val, False) );
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
@@ -4838,14 +4839,14 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
             vex_printf("dis_int_load(ppc)(lwzux,rA_addr|rD_addr)\n");
Mark Wielaard 6f7ad2
             return False;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
-         val = loadBE(Ity_I8, mkexpr(EA));
Mark Wielaard 6f7ad2
+         val = load(Ity_I8, mkexpr(EA));
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom8(ty, val, False) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x057: // lbzx (Load B & Zero, Indexed, PPC32 p436)
Mark Wielaard 6f7ad2
          DIP("lbzx r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         val = loadBE(Ity_I8, mkexpr(EA));
Mark Wielaard 6f7ad2
+         val = load(Ity_I8, mkexpr(EA));
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom8(ty, val, False) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
@@ -4855,14 +4856,14 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
             return False;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("lhaux r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         val = loadBE(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
+         val = load(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom16(ty, val, True) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x157: // lhax (Load HW Alg, Indexed, PPC32 p448)
Mark Wielaard 6f7ad2
          DIP("lhax r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         val = loadBE(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
+         val = load(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom16(ty, val, True) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
@@ -4872,14 +4873,14 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
             return False;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("lhzux r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         val = loadBE(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
+         val = load(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom16(ty, val, False) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x117: // lhzx (Load HW & Zero, Indexed, PPC32 p453)
Mark Wielaard 6f7ad2
          DIP("lhzx r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         val = loadBE(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
+         val = load(Ity_I16, mkexpr(EA));
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom16(ty, val, False) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -4889,14 +4890,14 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
             return False;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("lwzux r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         val = loadBE(Ity_I32, mkexpr(EA));
Mark Wielaard 6f7ad2
+         val = load(Ity_I32, mkexpr(EA));
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom32(ty, val, False) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x017: // lwzx (Load W & Zero, Indexed, PPC32 p463)
Mark Wielaard 6f7ad2
          DIP("lwzx r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         val = loadBE(Ity_I32, mkexpr(EA));
Mark Wielaard 6f7ad2
+         val = load(Ity_I32, mkexpr(EA));
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom32(ty, val, False) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -4908,13 +4909,13 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
             return False;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("ldux r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         putIReg( rD_addr, loadBE(Ity_I64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+         putIReg( rD_addr, load(Ity_I64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x015: // ldx (Load DWord, Indexed, PPC64 p476)
Mark Wielaard 6f7ad2
          DIP("ldx r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         putIReg( rD_addr, loadBE(Ity_I64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+         putIReg( rD_addr, load(Ity_I64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x175: // lwaux (Load W Alg, Update Indexed, PPC64 p501)
Mark Wielaard 6f7ad2
@@ -4924,14 +4925,14 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("lwaux r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          putIReg( rD_addr,
Mark Wielaard 6f7ad2
-                  unop(Iop_32Sto64, loadBE(Ity_I32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
+                  unop(Iop_32Sto64, load(Ity_I32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x155: // lwax (Load W Alg, Indexed, PPC64 p502)
Mark Wielaard 6f7ad2
          DIP("lwax r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          putIReg( rD_addr,
Mark Wielaard 6f7ad2
-                  unop(Iop_32Sto64, loadBE(Ity_I32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
+                  unop(Iop_32Sto64, load(Ity_I32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       default:
Mark Wielaard 6f7ad2
@@ -4946,7 +4947,7 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
       switch ((b1<<1) | b0) {
Mark Wielaard 6f7ad2
       case 0x0: // ld (Load DWord, PPC64 p472)
Mark Wielaard 6f7ad2
          DIP("ld r%u,%d(r%u)\n", rD_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
-         putIReg( rD_addr, loadBE(Ity_I64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+         putIReg( rD_addr, load(Ity_I64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x1: // ldu (Load DWord, Update, PPC64 p474)
Mark Wielaard 6f7ad2
@@ -4955,14 +4956,14 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
             return False;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("ldu r%u,%d(r%u)\n", rD_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
-         putIReg( rD_addr, loadBE(Ity_I64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+         putIReg( rD_addr, load(Ity_I64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x2: // lwa (Load Word Alg, PPC64 p499)
Mark Wielaard 6f7ad2
          DIP("lwa r%u,%d(r%u)\n", rD_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
          putIReg( rD_addr,
Mark Wielaard 6f7ad2
-                  unop(Iop_32Sto64, loadBE(Ity_I32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
+                  unop(Iop_32Sto64, load(Ity_I32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       default:
Mark Wielaard 6f7ad2
@@ -4981,17 +4982,17 @@ static Bool dis_int_load ( UInt theInstr )
Mark Wielaard 6f7ad2
        */
Mark Wielaard 6f7ad2
       // trap if EA misaligned on 16 byte address
Mark Wielaard 6f7ad2
       if (mode64) {
Mark Wielaard 6f7ad2
-         assign(high, loadBE(ty, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
-         assign(low, loadBE(ty, binop( Iop_Add64,
Mark Wielaard 6f7ad2
-                                       mkexpr( EA ),
Mark Wielaard 6f7ad2
-                                       mkU64( 8 ) ) ) );
Mark Wielaard 6f7ad2
+         assign(high, load(ty, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
+         assign(low, load(ty, binop( Iop_Add64,
Mark Wielaard 6f7ad2
+                                     mkexpr( EA ),
Mark Wielaard 6f7ad2
+                                     mkU64( 8 ) ) ) );
Mark Wielaard 6f7ad2
       } else {
Mark Wielaard 6f7ad2
-         assign(high, loadBE(ty, binop( Iop_Add32,
Mark Wielaard 6f7ad2
-                                        mkexpr( EA ),
Mark Wielaard 6f7ad2
-                                        mkU32( 4 ) ) ) );
Mark Wielaard 6f7ad2
-         assign(low, loadBE(ty, binop( Iop_Add32,
Mark Wielaard 6f7ad2
-                                        mkexpr( EA ),
Mark Wielaard 6f7ad2
-                                        mkU32( 12 ) ) ) );
Mark Wielaard 6f7ad2
+         assign(high, load(ty, binop( Iop_Add32,
Mark Wielaard 6f7ad2
+                                      mkexpr( EA ),
Mark Wielaard 6f7ad2
+                                      mkU32( 4 ) ) ) );
Mark Wielaard 6f7ad2
+         assign(low, load(ty, binop( Iop_Add32,
Mark Wielaard 6f7ad2
+                                      mkexpr( EA ),
Mark Wielaard 6f7ad2
+                                      mkU32( 12 ) ) ) );
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       gen_SIGBUS_if_misaligned( EA, 16 );
Mark Wielaard 6f7ad2
       putIReg( rD_addr,  mkexpr( high) );
Mark Wielaard 6f7ad2
@@ -5046,7 +5047,7 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
    switch (opc1) {
Mark Wielaard 6f7ad2
    case 0x26: // stb (Store B, PPC32 p509)
Mark Wielaard 6f7ad2
       DIP("stb r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA), mkNarrowTo8(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), mkNarrowTo8(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
        
Mark Wielaard 6f7ad2
    case 0x27: // stbu (Store B, Update, PPC32 p510)
Mark Wielaard 6f7ad2
@@ -5056,12 +5057,12 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       DIP("stbu r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA), mkNarrowTo8(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), mkNarrowTo8(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x2C: // sth (Store HW, PPC32 p522)
Mark Wielaard 6f7ad2
       DIP("sth r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA), mkNarrowTo16(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), mkNarrowTo16(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
    case 0x2D: // sthu (Store HW, Update, PPC32 p524)
Mark Wielaard 6f7ad2
@@ -5071,12 +5072,12 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       DIP("sthu r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA), mkNarrowTo16(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), mkNarrowTo16(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x24: // stw (Store W, PPC32 p530)
Mark Wielaard 6f7ad2
       DIP("stw r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA), mkNarrowTo32(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), mkNarrowTo32(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x25: // stwu (Store W, Update, PPC32 p534)
Mark Wielaard 6f7ad2
@@ -5086,7 +5087,7 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       DIP("stwu r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA), mkNarrowTo32(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), mkNarrowTo32(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
    /* X Form : all these use EA_indexed */
Mark Wielaard 6f7ad2
@@ -5104,12 +5105,12 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("stbux r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkNarrowTo8(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkNarrowTo8(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x0D7: // stbx (Store B Indexed, PPC32 p512)
Mark Wielaard 6f7ad2
          DIP("stbx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkNarrowTo8(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkNarrowTo8(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x1B7: // sthux (Store HW, Update Indexed, PPC32 p525)
Mark Wielaard 6f7ad2
@@ -5119,12 +5120,12 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("sthux r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkNarrowTo16(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkNarrowTo16(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x197: // sthx (Store HW Indexed, PPC32 p526)
Mark Wielaard 6f7ad2
          DIP("sthx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkNarrowTo16(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkNarrowTo16(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x0B7: // stwux (Store W, Update Indexed, PPC32 p535)
Mark Wielaard 6f7ad2
@@ -5134,12 +5135,12 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("stwux r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkNarrowTo32(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkNarrowTo32(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x097: // stwx (Store W Indexed, PPC32 p536)
Mark Wielaard 6f7ad2
          DIP("stwx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkNarrowTo32(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkNarrowTo32(ty, mkexpr(rS)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -5151,12 +5152,12 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          DIP("stdux r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkexpr(rS) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkexpr(rS) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x095: // stdx (Store DWord Indexed, PPC64 p585)
Mark Wielaard 6f7ad2
          DIP("stdx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkexpr(rS) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkexpr(rS) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       default:
Mark Wielaard 6f7ad2
@@ -5174,7 +5175,7 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
             return False;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          DIP("std r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkexpr(rS) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkexpr(rS) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x1: // stdu (Store DWord, Update, PPC64 p583)
Mark Wielaard 6f7ad2
@@ -5183,7 +5184,7 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          DIP("stdu r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkexpr(rS) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkexpr(rS) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x2: { // stq (Store QuadWord, Update, PPC64 p583)
Mark Wielaard 6f7ad2
@@ -5205,9 +5206,9 @@ static Bool dis_int_store ( UInt theInstr, VexAbiInfo* vbi )
Mark Wielaard 6f7ad2
             assign( EA_lo, ea_rAor0_simm( rA_addr, simm16+12 ) );
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA_hi) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA_hi), mkexpr(rS) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA_hi), mkexpr(rS) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr( EA_lo) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA_lo), getIReg( rS_addr+1 ) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA_lo), getIReg( rS_addr+1 ) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       default:
Mark Wielaard 6f7ad2
@@ -5256,7 +5257,7 @@ static Bool dis_int_ldst_mult ( UInt theInstr )
Mark Wielaard 6f7ad2
       DIP("lmw r%u,%d(r%u)\n", rD_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       for (r = rD_addr; r <= 31; r++) {
Mark Wielaard 6f7ad2
          irx_addr = binop(mkAdd, mkexpr(EA), mode64 ? mkU64(ea_off) : mkU32(ea_off));
Mark Wielaard 6f7ad2
-         putIReg( r, mkWidenFrom32(ty, loadBE(Ity_I32, irx_addr ),
Mark Wielaard 6f7ad2
+         putIReg( r, mkWidenFrom32(ty, load(Ity_I32, irx_addr ),
Mark Wielaard 6f7ad2
                                        False) );
Mark Wielaard 6f7ad2
          ea_off += 4;
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
@@ -5266,7 +5267,7 @@ static Bool dis_int_ldst_mult ( UInt theInstr )
Mark Wielaard 6f7ad2
       DIP("stmw r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       for (r = rS_addr; r <= 31; r++) {
Mark Wielaard 6f7ad2
          irx_addr = binop(mkAdd, mkexpr(EA), mode64 ? mkU64(ea_off) : mkU32(ea_off));
Mark Wielaard 6f7ad2
-         storeBE( irx_addr, mkNarrowTo32(ty, getIReg(r)) );
Mark Wielaard 6f7ad2
+         store( irx_addr, mkNarrowTo32(ty, getIReg(r)) );
Mark Wielaard 6f7ad2
          ea_off += 4;
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
@@ -5321,8 +5322,9 @@ void generate_lsw_sequence ( IRTemp tNBytes,   // # bytes, :: Ity_I32
Mark Wielaard 6f7ad2
                   Iop_Shl32, 
Mark Wielaard 6f7ad2
                   unop(
Mark Wielaard 6f7ad2
                      Iop_8Uto32, 
Mark Wielaard 6f7ad2
-                     loadBE(Ity_I8, 
Mark Wielaard 6f7ad2
-                            binop(mkSzOp(ty,Iop_Add8), e_EA, mkSzImm(ty,i)))
Mark Wielaard 6f7ad2
+                     load( Ity_I8,
Mark Wielaard 6f7ad2
+                           binop( mkSzOp(ty,Iop_Add8),
Mark Wielaard 6f7ad2
+                                  e_EA, mkSzImm(ty,i)))
Mark Wielaard 6f7ad2
                   ), 
Mark Wielaard 6f7ad2
                   mkU8(toUChar(shift))
Mark Wielaard 6f7ad2
                )
Mark Wielaard 6f7ad2
@@ -5360,12 +5362,12 @@ void generate_stsw_sequence ( IRTemp tNBytes,   // # bytes, :: Ity_I32
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       /* *(EA+i) = 32to8(rS >> shift) */
Mark Wielaard 6f7ad2
       vassert(shift == 0 || shift == 8 || shift == 16 || shift == 24);
Mark Wielaard 6f7ad2
-      storeBE(
Mark Wielaard 6f7ad2
-         binop(mkSzOp(ty,Iop_Add8), e_EA, mkSzImm(ty,i)),
Mark Wielaard 6f7ad2
-         unop(Iop_32to8,
Mark Wielaard 6f7ad2
-              binop(Iop_Shr32,
Mark Wielaard 6f7ad2
-                    mkNarrowTo32(ty, getIReg(rS)),
Mark Wielaard 6f7ad2
-                    mkU8(toUChar(shift))))
Mark Wielaard 6f7ad2
+      store(
Mark Wielaard 6f7ad2
+            binop( mkSzOp(ty,Iop_Add8), e_EA, mkSzImm(ty,i)),
Mark Wielaard 6f7ad2
+            unop( Iop_32to8,
Mark Wielaard 6f7ad2
+                  binop( Iop_Shr32,
Mark Wielaard 6f7ad2
+                         mkNarrowTo32( ty, getIReg(rS) ),
Mark Wielaard 6f7ad2
+                         mkU8( toUChar(shift) )))
Mark Wielaard 6f7ad2
       );
Mark Wielaard 6f7ad2
       shift -= 8;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
@@ -5404,10 +5406,10 @@ static Bool dis_int_ldst_str ( UInt theInstr, /*OUT*/Bool* stopHere )
Mark Wielaard 6f7ad2
          /* Special case hack */
Mark Wielaard 6f7ad2
          /* rD = Mem[EA]; (rD+1)%32 = Mem[EA+4] */
Mark Wielaard 6f7ad2
          putIReg( rD_addr,          
Mark Wielaard 6f7ad2
-                  loadBE(Ity_I32, mkexpr(t_EA)) );
Mark Wielaard 6f7ad2
+                  load(Ity_I32, mkexpr(t_EA)) );
Mark Wielaard 6f7ad2
          putIReg( (rD_addr+1) % 32, 
Mark Wielaard 6f7ad2
-                  loadBE(Ity_I32,
Mark Wielaard 6f7ad2
-                         binop(Iop_Add32, mkexpr(t_EA), mkU32(4))) );
Mark Wielaard 6f7ad2
+                  load(Ity_I32,
Mark Wielaard 6f7ad2
+                       binop(Iop_Add32, mkexpr(t_EA), mkU32(4))) );
Mark Wielaard 6f7ad2
       } else {
Mark Wielaard 6f7ad2
          t_nbytes = newTemp(Ity_I32);
Mark Wielaard 6f7ad2
          assign( t_nbytes, mkU32(NumBytes==0 ? 32 : NumBytes) );
Mark Wielaard 6f7ad2
@@ -5439,10 +5441,10 @@ static Bool dis_int_ldst_str ( UInt theInstr, /*OUT*/Bool* stopHere )
Mark Wielaard 6f7ad2
       if (NumBytes == 8 && !mode64) {
Mark Wielaard 6f7ad2
          /* Special case hack */
Mark Wielaard 6f7ad2
          /* Mem[EA] = rD; Mem[EA+4] = (rD+1)%32 */
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(t_EA), 
Mark Wielaard 6f7ad2
-                  getIReg(rD_addr) );
Mark Wielaard 6f7ad2
-         storeBE( binop(Iop_Add32, mkexpr(t_EA), mkU32(4)), 
Mark Wielaard 6f7ad2
-                  getIReg((rD_addr+1) % 32) );
Mark Wielaard 6f7ad2
+         store( mkexpr(t_EA),
Mark Wielaard 6f7ad2
+                getIReg(rD_addr) );
Mark Wielaard 6f7ad2
+         store( binop(Iop_Add32, mkexpr(t_EA), mkU32(4)),
Mark Wielaard 6f7ad2
+                getIReg((rD_addr+1) % 32) );
Mark Wielaard 6f7ad2
       } else {
Mark Wielaard 6f7ad2
          t_nbytes = newTemp(Ity_I32);
Mark Wielaard 6f7ad2
          assign( t_nbytes, mkU32(NumBytes==0 ? 32 : NumBytes) );
Mark Wielaard 6f7ad2
@@ -6145,7 +6147,7 @@ static Bool dis_memsync ( UInt theInstr )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          // and actually do the load
Mark Wielaard 6f7ad2
          res = newTemp(Ity_I32);
Mark Wielaard 6f7ad2
-         stmt( IRStmt_LLSC(Iend_BE, res, mkexpr(EA), NULL/*this is a load*/) );
Mark Wielaard 6f7ad2
+         stmt( IRStmt_LLSC(IENDIANESS, res, mkexpr(EA), NULL/*this is a load*/) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom32(ty, mkexpr(res), False) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
@@ -6171,7 +6173,7 @@ static Bool dis_memsync ( UInt theInstr )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          // Do the store, and get success/failure bit into resSC
Mark Wielaard 6f7ad2
          resSC = newTemp(Ity_I1);
Mark Wielaard 6f7ad2
-         stmt( IRStmt_LLSC(Iend_BE, resSC, mkexpr(EA), mkexpr(rS)) );
Mark Wielaard 6f7ad2
+         stmt( IRStmt_LLSC(IENDIANESS, resSC, mkexpr(EA), mkexpr(rS)) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          // Set CR0[LT GT EQ S0] = 0b000 || XER[SO]  on failure
Mark Wielaard 6f7ad2
          // Set CR0[LT GT EQ S0] = 0b001 || XER[SO]  on success
Mark Wielaard 6f7ad2
@@ -6238,7 +6240,7 @@ static Bool dis_memsync ( UInt theInstr )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          // and actually do the load
Mark Wielaard 6f7ad2
          res = newTemp(Ity_I64);
Mark Wielaard 6f7ad2
-         stmt( IRStmt_LLSC(Iend_BE, res, mkexpr(EA), NULL/*this is a load*/) );
Mark Wielaard 6f7ad2
+         stmt( IRStmt_LLSC(IENDIANESS, res, mkexpr(EA), NULL/*this is a load*/) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkexpr(res) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
@@ -6264,7 +6266,7 @@ static Bool dis_memsync ( UInt theInstr )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          // Do the store, and get success/failure bit into resSC
Mark Wielaard 6f7ad2
          resSC = newTemp(Ity_I1);
Mark Wielaard 6f7ad2
-         stmt( IRStmt_LLSC(Iend_BE, resSC, mkexpr(EA), mkexpr(rS)) );
Mark Wielaard 6f7ad2
+         stmt( IRStmt_LLSC(IENDIANESS, resSC, mkexpr(EA), mkexpr(rS)) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          // Set CR0[LT GT EQ S0] = 0b000 || XER[SO]  on failure
Mark Wielaard 6f7ad2
          // Set CR0[LT GT EQ S0] = 0b001 || XER[SO]  on success
Mark Wielaard 6f7ad2
@@ -6294,16 +6296,16 @@ static Bool dis_memsync ( UInt theInstr )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          // and actually do the load
Mark Wielaard 6f7ad2
          if (mode64) {
Mark Wielaard 6f7ad2
-            stmt( IRStmt_LLSC( Iend_BE, res_hi,
Mark Wielaard 6f7ad2
+            stmt( IRStmt_LLSC( IENDIANESS, res_hi,
Mark Wielaard 6f7ad2
                                mkexpr(EA), NULL/*this is a load*/) );
Mark Wielaard 6f7ad2
-            stmt( IRStmt_LLSC( Iend_BE, res_lo,
Mark Wielaard 6f7ad2
+            stmt( IRStmt_LLSC( IENDIANESS, res_lo,
Mark Wielaard 6f7ad2
                                binop(Iop_Add64, mkexpr(EA), mkU64(8) ),
Mark Wielaard 6f7ad2
                                NULL/*this is a load*/) );
Mark Wielaard 6f7ad2
          } else {
Mark Wielaard 6f7ad2
-            stmt( IRStmt_LLSC( Iend_BE, res_hi,
Mark Wielaard 6f7ad2
+            stmt( IRStmt_LLSC( IENDIANESS, res_hi,
Mark Wielaard 6f7ad2
                                binop( Iop_Add32, mkexpr(EA), mkU32(4) ),
Mark Wielaard 6f7ad2
                                NULL/*this is a load*/) );
Mark Wielaard 6f7ad2
-            stmt( IRStmt_LLSC( Iend_BE, res_lo,
Mark Wielaard 6f7ad2
+            stmt( IRStmt_LLSC( IENDIANESS, res_lo,
Mark Wielaard 6f7ad2
                                binop( Iop_Add32, mkexpr(EA), mkU32(12) ),
Mark Wielaard 6f7ad2
                                NULL/*this is a load*/) );
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
@@ -6334,14 +6336,14 @@ static Bool dis_memsync ( UInt theInstr )
Mark Wielaard 6f7ad2
          resSC = newTemp(Ity_I1);
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          if (mode64) {
Mark Wielaard 6f7ad2
-            stmt( IRStmt_LLSC( Iend_BE, resSC, mkexpr(EA), mkexpr(rS_hi) ) );
Mark Wielaard 6f7ad2
-            storeBE(binop( Iop_Add64, mkexpr(EA), mkU64(8) ), mkexpr(rS_lo) );
Mark Wielaard 6f7ad2
+            stmt( IRStmt_LLSC( IENDIANESS, resSC, mkexpr(EA), mkexpr(rS_hi) ) );
Mark Wielaard 6f7ad2
+            store( binop( Iop_Add64, mkexpr(EA), mkU64(8) ), mkexpr(rS_lo) );
Mark Wielaard 6f7ad2
          } else {
Mark Wielaard 6f7ad2
-            stmt( IRStmt_LLSC( Iend_BE, resSC, binop( Iop_Add32,
Mark Wielaard 6f7ad2
-                                                      mkexpr(EA),
Mark Wielaard 6f7ad2
-                                                      mkU32(4) ),
Mark Wielaard 6f7ad2
-                                                      mkexpr(rS_hi) ) );
Mark Wielaard 6f7ad2
-            storeBE(binop(Iop_Add32, mkexpr(EA), mkU32(12) ), mkexpr(rS_lo) );
Mark Wielaard 6f7ad2
+            stmt( IRStmt_LLSC( IENDIANESS, resSC, binop( Iop_Add32,
Mark Wielaard 6f7ad2
+                                                         mkexpr(EA),
Mark Wielaard 6f7ad2
+                                                         mkU32(4) ),
Mark Wielaard 6f7ad2
+                                                         mkexpr(rS_hi) ) );
Mark Wielaard 6f7ad2
+            store( binop(Iop_Add32, mkexpr(EA), mkU32(12) ), mkexpr(rS_lo) );
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
          // Set CR0[LT GT EQ S0] = 0b000 || XER[SO]  on failure
Mark Wielaard 6f7ad2
@@ -6664,7 +6666,7 @@ static Bool dis_int_ldst_rev ( UInt theInstr )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x316: // lhbrx (Load Halfword Byte-Reverse Indexed, PPC32 p449)
Mark Wielaard 6f7ad2
          DIP("lhbrx r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         assign( w1, unop(Iop_16Uto32, loadBE(Ity_I16, mkexpr(EA))) );
Mark Wielaard 6f7ad2
+         assign( w1, unop(Iop_16Uto32, load(Ity_I16, mkexpr(EA))) );
Mark Wielaard 6f7ad2
          assign( w2, gen_byterev16(w1) );
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom32(ty, mkexpr(w2),
Mark Wielaard 6f7ad2
                                          /* Signed */False) );
Mark Wielaard 6f7ad2
@@ -6672,7 +6674,7 @@ static Bool dis_int_ldst_rev ( UInt theInstr )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x216: // lwbrx (Load Word Byte-Reverse Indexed, PPC32 p459)
Mark Wielaard 6f7ad2
          DIP("lwbrx r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         assign( w1, loadBE(Ity_I32, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+         assign( w1, load(Ity_I32, mkexpr(EA)) );
Mark Wielaard 6f7ad2
          assign( w2, gen_byterev32(w1) );
Mark Wielaard 6f7ad2
          putIReg( rD_addr, mkWidenFrom32(ty, mkexpr(w2),
Mark Wielaard 6f7ad2
                                          /* Signed */False) );
Mark Wielaard 6f7ad2
@@ -6684,11 +6686,11 @@ static Bool dis_int_ldst_rev ( UInt theInstr )
Mark Wielaard 6f7ad2
          IRTemp w3 = newTemp( Ity_I32 );
Mark Wielaard 6f7ad2
          IRTemp w4 = newTemp( Ity_I32 );
Mark Wielaard 6f7ad2
          DIP("ldbrx r%u,r%u,r%u\n", rD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-         assign( w1, loadBE( Ity_I32, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
+         assign( w1, load( Ity_I32, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
          assign( w2, gen_byterev32( w1 ) );
Mark Wielaard 6f7ad2
          nextAddr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
Mark Wielaard 6f7ad2
                            ty == Ity_I64 ? mkU64( 4 ) : mkU32( 4 ) );
Mark Wielaard 6f7ad2
-         assign( w3, loadBE( Ity_I32, nextAddr ) );
Mark Wielaard 6f7ad2
+         assign( w3, load( Ity_I32, nextAddr ) );
Mark Wielaard 6f7ad2
          assign( w4, gen_byterev32( w3 ) );
Mark Wielaard 6f7ad2
          putIReg( rD_addr, binop( Iop_32HLto64, mkexpr( w4 ), mkexpr( w2 ) ) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
@@ -6697,13 +6699,13 @@ static Bool dis_int_ldst_rev ( UInt theInstr )
Mark Wielaard 6f7ad2
       case 0x396: // sthbrx (Store Half Word Byte-Reverse Indexed, PPC32 p523)
Mark Wielaard 6f7ad2
          DIP("sthbrx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( w1, mkNarrowTo32(ty, getIReg(rS_addr)) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), unop(Iop_32to16, gen_byterev16(w1)) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), unop(Iop_32to16, gen_byterev16(w1)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
       case 0x296: // stwbrx (Store Word Byte-Reverse Indxd, PPC32 p531)
Mark Wielaard 6f7ad2
          DIP("stwbrx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( w1, mkNarrowTo32(ty, getIReg(rS_addr)) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), gen_byterev32(w1) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), gen_byterev32(w1) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x294: // stdbrx (Store Doubleword Byte-Reverse Indexed)
Mark Wielaard 6f7ad2
@@ -6715,8 +6717,9 @@ static Bool dis_int_ldst_rev ( UInt theInstr )
Mark Wielaard 6f7ad2
          DIP("stdbrx r%u,r%u,r%u\n", rS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign(lo, unop(Iop_64HIto32, mkexpr(rS)));
Mark Wielaard 6f7ad2
          assign(hi, unop(Iop_64to32, mkexpr(rS)));
Mark Wielaard 6f7ad2
-         storeBE( mkexpr( EA ),
Mark Wielaard 6f7ad2
-                  binop( Iop_32HLto64, gen_byterev32( hi ), gen_byterev32( lo ) ) );
Mark Wielaard 6f7ad2
+         store( mkexpr( EA ),
Mark Wielaard 6f7ad2
+                binop( Iop_32HLto64, gen_byterev32( hi ),
Mark Wielaard 6f7ad2
+                       gen_byterev32( lo ) ) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -7234,7 +7237,7 @@ static Bool dis_cache_manage ( UInt         theInstr,
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
          for (i = 0; i < clearszB / 8; i++) {
Mark Wielaard 6f7ad2
             irx_addr = binop( Iop_Add64, mkexpr(addr), mkU64(i*8) );
Mark Wielaard 6f7ad2
-            storeBE( irx_addr, mkU64(0) );
Mark Wielaard 6f7ad2
+            store( irx_addr, mkU64(0) );
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
       } else {
Mark Wielaard 6f7ad2
          /* Round EA down to the start of the containing block. */
Mark Wielaard 6f7ad2
@@ -7244,7 +7247,7 @@ static Bool dis_cache_manage ( UInt         theInstr,
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
          for (i = 0; i < clearszB / 4; i++) {
Mark Wielaard 6f7ad2
             irx_addr = binop( Iop_Add32, mkexpr(addr), mkU32(i*4) );
Mark Wielaard 6f7ad2
-            storeBE( irx_addr, mkU32(0) );
Mark Wielaard 6f7ad2
+            store( irx_addr, mkU32(0) );
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
@@ -7464,7 +7467,7 @@ static Bool dis_fp_load ( UInt theInstr )
Mark Wielaard 6f7ad2
       DIP("lfs fr%u,%d(r%u)\n", frD_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       assign( EA, ea_rAor0_simm(rA_addr, simm16) );
Mark Wielaard 6f7ad2
       putFReg( frD_addr,
Mark Wielaard 6f7ad2
-               unop(Iop_F32toF64, loadBE(Ity_F32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
+               unop(Iop_F32toF64, load(Ity_F32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x31: // lfsu (Load Float Single, Update, PPC32 p442)
Mark Wielaard 6f7ad2
@@ -7473,14 +7476,14 @@ static Bool dis_fp_load ( UInt theInstr )
Mark Wielaard 6f7ad2
       DIP("lfsu fr%u,%d(r%u)\n", frD_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       assign( EA, ea_rA_simm(rA_addr, simm16) );
Mark Wielaard 6f7ad2
       putFReg( frD_addr,
Mark Wielaard 6f7ad2
-               unop(Iop_F32toF64, loadBE(Ity_F32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
+               unop(Iop_F32toF64, load(Ity_F32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
    case 0x32: // lfd (Load Float Double, PPC32 p437)
Mark Wielaard 6f7ad2
       DIP("lfd fr%u,%d(r%u)\n", frD_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       assign( EA, ea_rAor0_simm(rA_addr, simm16) );
Mark Wielaard 6f7ad2
-      putFReg( frD_addr, loadBE(Ity_F64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+      putFReg( frD_addr, load(Ity_F64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x33: // lfdu (Load Float Double, Update, PPC32 p438)
Mark Wielaard 6f7ad2
@@ -7488,7 +7491,7 @@ static Bool dis_fp_load ( UInt theInstr )
Mark Wielaard 6f7ad2
          return False;
Mark Wielaard 6f7ad2
       DIP("lfdu fr%u,%d(r%u)\n", frD_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       assign( EA, ea_rA_simm(rA_addr, simm16) );
Mark Wielaard 6f7ad2
-      putFReg( frD_addr, loadBE(Ity_F64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+      putFReg( frD_addr, load(Ity_F64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -7503,7 +7506,7 @@ static Bool dis_fp_load ( UInt theInstr )
Mark Wielaard 6f7ad2
          DIP("lfsx fr%u,r%u,r%u\n", frD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rAor0_idxd(rA_addr, rB_addr) );
Mark Wielaard 6f7ad2
          putFReg( frD_addr, unop( Iop_F32toF64, 
Mark Wielaard 6f7ad2
-                                  loadBE(Ity_F32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
+                                  load(Ity_F32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x237: // lfsux (Load Float Single, Update Indxd, PPC32 p443)
Mark Wielaard 6f7ad2
@@ -7512,14 +7515,14 @@ static Bool dis_fp_load ( UInt theInstr )
Mark Wielaard 6f7ad2
          DIP("lfsux fr%u,r%u,r%u\n", frD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rA_idxd(rA_addr, rB_addr) );
Mark Wielaard 6f7ad2
          putFReg( frD_addr,
Mark Wielaard 6f7ad2
-                  unop(Iop_F32toF64, loadBE(Ity_F32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
+                  unop(Iop_F32toF64, load(Ity_F32, mkexpr(EA))) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x257: // lfdx (Load Float Double Indexed, PPC32 p440)
Mark Wielaard 6f7ad2
          DIP("lfdx fr%u,r%u,r%u\n", frD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rAor0_idxd(rA_addr, rB_addr) );
Mark Wielaard 6f7ad2
-         putFReg( frD_addr, loadBE(Ity_F64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+         putFReg( frD_addr, load(Ity_F64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x277: // lfdux (Load Float Double, Update Indxd, PPC32 p439)
Mark Wielaard 6f7ad2
@@ -7527,14 +7530,14 @@ static Bool dis_fp_load ( UInt theInstr )
Mark Wielaard 6f7ad2
             return False;
Mark Wielaard 6f7ad2
          DIP("lfdux fr%u,r%u,r%u\n", frD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rA_idxd(rA_addr, rB_addr) );
Mark Wielaard 6f7ad2
-         putFReg( frD_addr, loadBE(Ity_F64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+         putFReg( frD_addr, load(Ity_F64, mkexpr(EA)) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x357: // lfiwax (Load Float As Integer, Indxd, ISA 2.05 p120)
Mark Wielaard 6f7ad2
          DIP("lfiwax fr%u,r%u,r%u\n", frD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rAor0_idxd( rA_addr, rB_addr ) );
Mark Wielaard 6f7ad2
-         assign( iLo, loadBE(Ity_I32, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+         assign( iLo, load(Ity_I32, mkexpr(EA)) );
Mark Wielaard 6f7ad2
          assign( iHi, binop(Iop_Sub32,
Mark Wielaard 6f7ad2
                             mkU32(0),
Mark Wielaard 6f7ad2
                             binop(Iop_Shr32, mkexpr(iLo), mkU8(31)))  );
Mark Wielaard 6f7ad2
@@ -7547,7 +7550,7 @@ static Bool dis_fp_load ( UInt theInstr )
Mark Wielaard 6f7ad2
          IRTemp dw = newTemp( Ity_I64 );
Mark Wielaard 6f7ad2
          DIP("lfiwzx fr%u,r%u,r%u\n", frD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rAor0_idxd( rA_addr, rB_addr ) );
Mark Wielaard 6f7ad2
-         assign( iLo, loadBE(Ity_I32, mkexpr(EA)) );
Mark Wielaard 6f7ad2
+         assign( iLo, load(Ity_I32, mkexpr(EA)) );
Mark Wielaard 6f7ad2
          assign( dw, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( iLo ) ) );
Mark Wielaard 6f7ad2
          putFReg( frD_addr, unop( Iop_ReinterpI64asF64, mkexpr( dw ) ) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
@@ -7606,8 +7609,7 @@ static Bool dis_fp_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       /* Use Iop_TruncF64asF32 to truncate and possible denormalise
Mark Wielaard 6f7ad2
          the value to be stored in the correct way, without any
Mark Wielaard 6f7ad2
          rounding. */
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA),
Mark Wielaard 6f7ad2
-               unop(Iop_TruncF64asF32, mkexpr(frS)) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), unop(Iop_TruncF64asF32, mkexpr(frS)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x35: // stfsu (Store Float Single, Update, PPC32 p519)
Mark Wielaard 6f7ad2
@@ -7616,15 +7618,14 @@ static Bool dis_fp_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       DIP("stfsu fr%u,%d(r%u)\n", frS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       assign( EA, ea_rA_simm(rA_addr, simm16) );
Mark Wielaard 6f7ad2
       /* See comment for stfs */
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA),
Mark Wielaard 6f7ad2
-               unop(Iop_TruncF64asF32, mkexpr(frS)) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), unop(Iop_TruncF64asF32, mkexpr(frS)) );
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x36: // stfd (Store Float Double, PPC32 p513)
Mark Wielaard 6f7ad2
       DIP("stfd fr%u,%d(r%u)\n", frS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       assign( EA, ea_rAor0_simm(rA_addr, simm16) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA), mkexpr(frS) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), mkexpr(frS) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x37: // stfdu (Store Float Double, Update, PPC32 p514)
Mark Wielaard 6f7ad2
@@ -7632,7 +7633,7 @@ static Bool dis_fp_store ( UInt theInstr )
Mark Wielaard 6f7ad2
          return False;
Mark Wielaard 6f7ad2
       DIP("stfdu fr%u,%d(r%u)\n", frS_addr, simm16, rA_addr);
Mark Wielaard 6f7ad2
       assign( EA, ea_rA_simm(rA_addr, simm16) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA), mkexpr(frS) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA), mkexpr(frS) );
Mark Wielaard 6f7ad2
       putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -7646,8 +7647,8 @@ static Bool dis_fp_store ( UInt theInstr )
Mark Wielaard 6f7ad2
          DIP("stfsx fr%u,r%u,r%u\n", frS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rAor0_idxd(rA_addr, rB_addr) );
Mark Wielaard 6f7ad2
          /* See note for stfs */
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), 
Mark Wielaard 6f7ad2
-                  unop(Iop_TruncF64asF32, mkexpr(frS)) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA),
Mark Wielaard 6f7ad2
+                unop(Iop_TruncF64asF32, mkexpr(frS)) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x2B7: // stfsux (Store Float Sgl, Update Indxd, PPC32 p520)
Mark Wielaard 6f7ad2
@@ -7656,15 +7657,14 @@ static Bool dis_fp_store ( UInt theInstr )
Mark Wielaard 6f7ad2
          DIP("stfsux fr%u,r%u,r%u\n", frS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rA_idxd(rA_addr, rB_addr) );
Mark Wielaard 6f7ad2
          /* See note for stfs */
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), 
Mark Wielaard 6f7ad2
-                  unop(Iop_TruncF64asF32, mkexpr(frS)) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), unop(Iop_TruncF64asF32, mkexpr(frS)) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       case 0x2D7: // stfdx (Store Float Double Indexed, PPC32 p516)
Mark Wielaard 6f7ad2
          DIP("stfdx fr%u,r%u,r%u\n", frS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rAor0_idxd(rA_addr, rB_addr) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkexpr(frS) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkexpr(frS) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
          
Mark Wielaard 6f7ad2
       case 0x2F7: // stfdux (Store Float Dbl, Update Indxd, PPC32 p515)
Mark Wielaard 6f7ad2
@@ -7672,7 +7672,7 @@ static Bool dis_fp_store ( UInt theInstr )
Mark Wielaard 6f7ad2
             return False;
Mark Wielaard 6f7ad2
          DIP("stfdux fr%u,r%u,r%u\n", frS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rA_idxd(rA_addr, rB_addr) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA), mkexpr(frS) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA), mkexpr(frS) );
Mark Wielaard 6f7ad2
          putIReg( rA_addr, mkexpr(EA) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -7680,8 +7680,8 @@ static Bool dis_fp_store ( UInt theInstr )
Mark Wielaard 6f7ad2
          // NOTE: POWERPC OPTIONAL, "Graphics Group" (PPC32_GX)
Mark Wielaard 6f7ad2
          DIP("stfiwx fr%u,r%u,r%u\n", frS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
          assign( EA, ea_rAor0_idxd(rA_addr, rB_addr) );
Mark Wielaard 6f7ad2
-         storeBE( mkexpr(EA),
Mark Wielaard 6f7ad2
-                  unop(Iop_64to32, unop(Iop_ReinterpF64asI64, mkexpr(frS))) );
Mark Wielaard 6f7ad2
+         store( mkexpr(EA),
Mark Wielaard 6f7ad2
+                unop(Iop_64to32, unop(Iop_ReinterpF64asI64, mkexpr(frS))) );
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       default:
Mark Wielaard 6f7ad2
@@ -8867,11 +8867,11 @@ static Bool dis_fp_pair ( UInt theInstr )
Mark Wielaard 6f7ad2
    assign( frT_lo, getFReg(frT_lo_addr) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    if (is_load) {
Mark Wielaard 6f7ad2
-      putFReg( frT_hi_addr, loadBE(Ity_F64, mkexpr(EA_hi)) );
Mark Wielaard 6f7ad2
-      putFReg( frT_lo_addr, loadBE(Ity_F64, mkexpr(EA_lo)) );
Mark Wielaard 6f7ad2
+      putFReg( frT_hi_addr, load(Ity_F64, mkexpr(EA_hi)) );
Mark Wielaard 6f7ad2
+      putFReg( frT_lo_addr, load(Ity_F64, mkexpr(EA_lo)) );
Mark Wielaard 6f7ad2
    } else {
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA_hi), mkexpr(frT_hi) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA_lo), mkexpr(frT_lo) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA_hi), mkexpr(frT_hi) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA_lo), mkexpr(frT_lo) );
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    return True;
Mark Wielaard 6f7ad2
@@ -15072,7 +15072,7 @@ dis_vx_load ( UInt theInstr )
Mark Wielaard 6f7ad2
    {
Mark Wielaard 6f7ad2
       IRExpr * exp;
Mark Wielaard 6f7ad2
       DIP("lxsiwzx %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      exp = unop( Iop_64HIto32, loadBE( Ity_I64, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
+      exp = unop( Iop_64HIto32, load( Ity_I64, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
       putVSReg( XT, binop( Iop_64HLtoV128,
Mark Wielaard 6f7ad2
                            unop( Iop_32Uto64, exp),
Mark Wielaard 6f7ad2
                            mkU64(0) ) );
Mark Wielaard 6f7ad2
@@ -15082,7 +15082,7 @@ dis_vx_load ( UInt theInstr )
Mark Wielaard 6f7ad2
    {
Mark Wielaard 6f7ad2
       IRExpr * exp;
Mark Wielaard 6f7ad2
       DIP("lxsiwax %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      exp = unop( Iop_64HIto32, loadBE( Ity_I64, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
+      exp = unop( Iop_64HIto32, load( Ity_I64, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
       putVSReg( XT, binop( Iop_64HLtoV128,
Mark Wielaard 6f7ad2
                            unop( Iop_32Sto64, exp),
Mark Wielaard 6f7ad2
                            mkU64(0) ) );
Mark Wielaard 6f7ad2
@@ -15099,8 +15099,7 @@ dis_vx_load ( UInt theInstr )
Mark Wielaard 6f7ad2
       exp = unop( Iop_ReinterpF64asI64,
Mark Wielaard 6f7ad2
                   unop( Iop_F32toF64,
Mark Wielaard 6f7ad2
                         unop( Iop_ReinterpI32asF32,
Mark Wielaard 6f7ad2
-                              unop( Iop_64HIto32,
Mark Wielaard 6f7ad2
-                                    loadBE( Ity_I64, mkexpr( EA ) ) ) ) ) );
Mark Wielaard 6f7ad2
+                              load( Ity_I32, mkexpr( EA ) ) ) ) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       putVSReg( XT, binop( Iop_64HLtoV128, exp, mkU64( 0 ) ) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
@@ -15109,7 +15108,7 @@ dis_vx_load ( UInt theInstr )
Mark Wielaard 6f7ad2
    {
Mark Wielaard 6f7ad2
       IRExpr * exp;
Mark Wielaard 6f7ad2
       DIP("lxsdx %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      exp = loadBE( Ity_I64, mkexpr( EA ) );
Mark Wielaard 6f7ad2
+      exp = load( Ity_I64, mkexpr( EA ) );
Mark Wielaard 6f7ad2
       // We need to pass an expression of type Ity_V128 with putVSReg, but the load
Mark Wielaard 6f7ad2
       // we just performed is only a DW.  But since the contents of VSR[XT] element 1
Mark Wielaard 6f7ad2
       // are undefined after this operation, we can just do a splat op.
Mark Wielaard 6f7ad2
@@ -15123,10 +15122,10 @@ dis_vx_load ( UInt theInstr )
Mark Wielaard 6f7ad2
       ULong ea_off = 8;
Mark Wielaard 6f7ad2
       IRExpr* high_addr;
Mark Wielaard 6f7ad2
       DIP("lxvd2x %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      high = loadBE( Ity_I64, mkexpr( EA ) );
Mark Wielaard 6f7ad2
+      high = load( Ity_I64, mkexpr( EA ) );
Mark Wielaard 6f7ad2
       high_addr = binop( addOp, mkexpr( EA ), ty == Ity_I64 ? mkU64( ea_off )
Mark Wielaard 6f7ad2
             : mkU32( ea_off ) );
Mark Wielaard 6f7ad2
-      low = loadBE( Ity_I64, high_addr );
Mark Wielaard 6f7ad2
+      low = load( Ity_I64, high_addr );
Mark Wielaard 6f7ad2
       putVSReg( XT, binop( Iop_64HLtoV128, high, low ) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
@@ -15134,7 +15133,7 @@ dis_vx_load ( UInt theInstr )
Mark Wielaard 6f7ad2
    {
Mark Wielaard 6f7ad2
       IRTemp data = newTemp(Ity_I64);
Mark Wielaard 6f7ad2
       DIP("lxvdsx %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      assign( data, loadBE( Ity_I64, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
+      assign( data, load( Ity_I64, mkexpr( EA ) ) );
Mark Wielaard 6f7ad2
       putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( data ), mkexpr( data ) ) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
@@ -15145,19 +15144,19 @@ dis_vx_load ( UInt theInstr )
Mark Wielaard 6f7ad2
       IRExpr* irx_addr;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       DIP("lxvw4x %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      t3 = loadBE( Ity_I32,  mkexpr( EA ) );
Mark Wielaard 6f7ad2
+      t3 = load( Ity_I32,  mkexpr( EA ) );
Mark Wielaard 6f7ad2
       ea_off += 4;
Mark Wielaard 6f7ad2
       irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
Mark Wielaard 6f7ad2
                         ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
Mark Wielaard 6f7ad2
-      t2 = loadBE( Ity_I32, irx_addr );
Mark Wielaard 6f7ad2
+      t2 = load( Ity_I32, irx_addr );
Mark Wielaard 6f7ad2
       ea_off += 4;
Mark Wielaard 6f7ad2
       irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
Mark Wielaard 6f7ad2
                         ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
Mark Wielaard 6f7ad2
-      t1 = loadBE( Ity_I32, irx_addr );
Mark Wielaard 6f7ad2
+      t1 = load( Ity_I32, irx_addr );
Mark Wielaard 6f7ad2
       ea_off += 4;
Mark Wielaard 6f7ad2
       irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
Mark Wielaard 6f7ad2
                         ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
Mark Wielaard 6f7ad2
-      t0 = loadBE( Ity_I32, irx_addr );
Mark Wielaard 6f7ad2
+      t0 = load( Ity_I32, irx_addr );
Mark Wielaard 6f7ad2
       putVSReg( XT, binop( Iop_64HLtoV128, binop( Iop_32HLto64, t3, t2 ),
Mark Wielaard 6f7ad2
                            binop( Iop_32HLto64, t1, t0 ) ) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
@@ -15205,7 +15204,7 @@ dis_vx_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       DIP("stxsiwx %d,r%u,r%u\n", (UInt)XS, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
       high64 = unop( Iop_V128HIto64, mkexpr( vS ) );
Mark Wielaard 6f7ad2
       low32  = unop( Iop_64to32, high64 );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr( EA ), low32 );
Mark Wielaard 6f7ad2
+      store( mkexpr( EA ), low32 );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
    case 0x28C:
Mark Wielaard 6f7ad2
@@ -15218,7 +15217,7 @@ dis_vx_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       assign(val32, unop( Iop_ReinterpF32asI32,
Mark Wielaard 6f7ad2
                           unop( Iop_TruncF64asF32,
Mark Wielaard 6f7ad2
                                 mkexpr(high64) ) ) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr( EA ), mkexpr( val32 ) );
Mark Wielaard 6f7ad2
+      store( mkexpr( EA ), mkexpr( val32 ) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
    case 0x2CC:
Mark Wielaard 6f7ad2
@@ -15226,7 +15225,7 @@ dis_vx_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       IRExpr * high64;
Mark Wielaard 6f7ad2
       DIP("stxsdx %d,r%u,r%u\n", (UInt)XS, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
       high64 = unop( Iop_V128HIto64, mkexpr( vS ) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr( EA ), high64 );
Mark Wielaard 6f7ad2
+      store( mkexpr( EA ), high64 );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
    case 0x3CC:
Mark Wielaard 6f7ad2
@@ -15235,9 +15234,9 @@ dis_vx_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       DIP("stxvd2x %d,r%u,r%u\n", (UInt)XS, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
       high64 = unop( Iop_V128HIto64, mkexpr( vS ) );
Mark Wielaard 6f7ad2
       low64 = unop( Iop_V128to64, mkexpr( vS ) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr( EA ), high64 );
Mark Wielaard 6f7ad2
-      storeBE( binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ), ty == Ity_I64 ? mkU64( 8 )
Mark Wielaard 6f7ad2
-            : mkU32( 8 ) ), low64 );
Mark Wielaard 6f7ad2
+      store( mkexpr( EA ), high64 );
Mark Wielaard 6f7ad2
+      store( binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
Mark Wielaard 6f7ad2
+                    ty == Ity_I64 ? mkU64( 8 ) : mkU32( 8 ) ), low64 );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
    case 0x38C:
Mark Wielaard 6f7ad2
@@ -15253,20 +15252,19 @@ dis_vx_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       // quad-word aligned.  Therefore, do 4 individual word-size stores.
Mark Wielaard 6f7ad2
       assign( hi64, unop( Iop_V128HIto64, mkexpr( vS ) ) );
Mark Wielaard 6f7ad2
       assign( lo64, unop( Iop_V128to64, mkexpr( vS ) ) );
Mark Wielaard 6f7ad2
-
Mark Wielaard 6f7ad2
-      storeBE( mkexpr( EA ), unop( Iop_64HIto32, mkexpr( hi64 ) ) );
Mark Wielaard 6f7ad2
+      store( mkexpr( EA ), unop( Iop_64HIto32, mkexpr( hi64 ) ) );
Mark Wielaard 6f7ad2
       ea_off += 4;
Mark Wielaard 6f7ad2
       irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
Mark Wielaard 6f7ad2
                         ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
Mark Wielaard 6f7ad2
-      storeBE( irx_addr, unop( Iop_64to32, mkexpr( hi64 ) ) );
Mark Wielaard 6f7ad2
+      store( irx_addr, unop( Iop_64to32, mkexpr( hi64 ) ) );
Mark Wielaard 6f7ad2
       ea_off += 4;
Mark Wielaard 6f7ad2
       irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
Mark Wielaard 6f7ad2
                         ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
Mark Wielaard 6f7ad2
-      storeBE( irx_addr, unop( Iop_64HIto32, mkexpr( lo64 ) ) );
Mark Wielaard 6f7ad2
+      store( irx_addr, unop( Iop_64HIto32, mkexpr( lo64 ) ) );
Mark Wielaard 6f7ad2
       ea_off += 4;
Mark Wielaard 6f7ad2
       irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
Mark Wielaard 6f7ad2
                         ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
Mark Wielaard 6f7ad2
-      storeBE( irx_addr, unop( Iop_64to32, mkexpr( lo64 ) ) );
Mark Wielaard 6f7ad2
+      store( irx_addr, unop( Iop_64to32, mkexpr( lo64 ) ) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
@@ -15498,29 +15496,29 @@ static Bool dis_av_load ( VexAbiInfo* vbi, UInt theInstr )
Mark Wielaard 6f7ad2
       /* loads addressed byte into vector[EA[0:3]
Mark Wielaard 6f7ad2
          since all other destination bytes are undefined,
Mark Wielaard 6f7ad2
          can simply load entire vector from 16-aligned EA */
Mark Wielaard 6f7ad2
-      putVReg( vD_addr, loadBE(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
+      putVReg( vD_addr, load(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x027: // lvehx (Load Vector Element Half Word Indexed, AV p121)
Mark Wielaard 6f7ad2
       DIP("lvehx v%d,r%u,r%u\n", vD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
       /* see note for lvebx */
Mark Wielaard 6f7ad2
-      putVReg( vD_addr, loadBE(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
+      putVReg( vD_addr, load(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x047: // lvewx (Load Vector Element Word Indexed, AV p122)
Mark Wielaard 6f7ad2
       DIP("lvewx v%d,r%u,r%u\n", vD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
       /* see note for lvebx */
Mark Wielaard 6f7ad2
-      putVReg( vD_addr, loadBE(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
+      putVReg( vD_addr, load(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x067: // lvx (Load Vector Indexed, AV p127)
Mark Wielaard 6f7ad2
       DIP("lvx v%d,r%u,r%u\n", vD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      putVReg( vD_addr, loadBE(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
+      putVReg( vD_addr, load(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x167: // lvxl (Load Vector Indexed LRU, AV p128)
Mark Wielaard 6f7ad2
       DIP("lvxl v%d,r%u,r%u\n", vD_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      putVReg( vD_addr, loadBE(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
+      putVReg( vD_addr, load(Ity_V128, mkexpr(EA_align16)) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    default:
Mark Wielaard 6f7ad2
@@ -15567,9 +15565,9 @@ static Bool dis_av_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       assign( idx, binop(Iop_Shl8,
Mark Wielaard 6f7ad2
                          binop(Iop_Sub8, mkU8(15), mkexpr(eb)),
Mark Wielaard 6f7ad2
                          mkU8(3)) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(EA),
Mark Wielaard 6f7ad2
-               unop(Iop_32to8, unop(Iop_V128to32,
Mark Wielaard 6f7ad2
-                    binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx)))) );
Mark Wielaard 6f7ad2
+      store( mkexpr(EA),
Mark Wielaard 6f7ad2
+             unop( Iop_32to8, unop(Iop_V128to32,
Mark Wielaard 6f7ad2
+                   binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx)))) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
    case 0x0A7: { // stvehx (Store Vector Half Word Indexed, AV p132)
Mark Wielaard 6f7ad2
@@ -15580,9 +15578,9 @@ static Bool dis_av_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       assign( idx, binop(Iop_Shl8,
Mark Wielaard 6f7ad2
                          binop(Iop_Sub8, mkU8(14), mkexpr(eb)),
Mark Wielaard 6f7ad2
                          mkU8(3)) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(addr_aligned),
Mark Wielaard 6f7ad2
-               unop(Iop_32to16, unop(Iop_V128to32,
Mark Wielaard 6f7ad2
-                    binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx)))) );
Mark Wielaard 6f7ad2
+      store( mkexpr(addr_aligned),
Mark Wielaard 6f7ad2
+             unop( Iop_32to16, unop(Iop_V128to32,
Mark Wielaard 6f7ad2
+                   binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx)))) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
    case 0x0C7: { // stvewx (Store Vector Word Indexed, AV p133)
Mark Wielaard 6f7ad2
@@ -15593,20 +15591,20 @@ static Bool dis_av_store ( UInt theInstr )
Mark Wielaard 6f7ad2
       assign( idx, binop(Iop_Shl8,
Mark Wielaard 6f7ad2
                          binop(Iop_Sub8, mkU8(12), mkexpr(eb)),
Mark Wielaard 6f7ad2
                          mkU8(3)) );
Mark Wielaard 6f7ad2
-      storeBE( mkexpr(addr_aligned),
Mark Wielaard 6f7ad2
-               unop(Iop_V128to32,
Mark Wielaard 6f7ad2
-                    binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx))) );
Mark Wielaard 6f7ad2
+      store( mkexpr( addr_aligned),
Mark Wielaard 6f7ad2
+             unop( Iop_V128to32,
Mark Wielaard 6f7ad2
+                   binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx))) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x0E7: // stvx (Store Vector Indexed, AV p134)
Mark Wielaard 6f7ad2
       DIP("stvx v%d,r%u,r%u\n", vS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      storeBE( addr_align( mkexpr(EA), 16 ), mkexpr(vS) );
Mark Wielaard 6f7ad2
+      store( addr_align( mkexpr(EA), 16 ), mkexpr(vS) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    case 0x1E7: // stvxl (Store Vector Indexed LRU, AV p135)
Mark Wielaard 6f7ad2
       DIP("stvxl v%d,r%u,r%u\n", vS_addr, rA_addr, rB_addr);
Mark Wielaard 6f7ad2
-      storeBE( addr_align( mkexpr(EA), 16 ), mkexpr(vS) );
Mark Wielaard 6f7ad2
+      store( addr_align( mkexpr(EA), 16 ), mkexpr(vS) );
Mark Wielaard 6f7ad2
       break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    default:
Mark Wielaard 6f7ad2
@@ -18535,7 +18533,7 @@ DisResult disInstr_PPC_WRK (
Mark Wielaard 6f7ad2
    /* At least this is simple on PPC32: insns are all 4 bytes long, and
Mark Wielaard 6f7ad2
       4-aligned.  So just fish the whole thing out of memory right now
Mark Wielaard 6f7ad2
       and have done. */
Mark Wielaard 6f7ad2
-   theInstr = getUIntBigendianly( (UChar*)(&guest_code[delta]) );
Mark Wielaard 6f7ad2
+   theInstr = getUIntPPCendianly( (UChar*)(&guest_code[delta]) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    if (0) vex_printf("insn: 0x%x\n", theInstr);
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -18560,12 +18558,12 @@ DisResult disInstr_PPC_WRK (
Mark Wielaard 6f7ad2
       UInt word2 = mode64 ? 0x78006800 : 0x5400683E;
Mark Wielaard 6f7ad2
       UInt word3 = mode64 ? 0x7800E802 : 0x5400E83E;
Mark Wielaard 6f7ad2
       UInt word4 = mode64 ? 0x78009802 : 0x5400983E;
Mark Wielaard 6f7ad2
-      if (getUIntBigendianly(code+ 0) == word1 &&
Mark Wielaard 6f7ad2
-          getUIntBigendianly(code+ 4) == word2 &&
Mark Wielaard 6f7ad2
-          getUIntBigendianly(code+ 8) == word3 &&
Mark Wielaard 6f7ad2
-          getUIntBigendianly(code+12) == word4) {
Mark Wielaard 6f7ad2
+      if (getUIntPPCendianly(code+ 0) == word1 &&
Mark Wielaard 6f7ad2
+          getUIntPPCendianly(code+ 4) == word2 &&
Mark Wielaard 6f7ad2
+          getUIntPPCendianly(code+ 8) == word3 &&
Mark Wielaard 6f7ad2
+          getUIntPPCendianly(code+12) == word4) {
Mark Wielaard 6f7ad2
          /* Got a "Special" instruction preamble.  Which one is it? */
Mark Wielaard 6f7ad2
-         if (getUIntBigendianly(code+16) == 0x7C210B78 /* or 1,1,1 */) {
Mark Wielaard 6f7ad2
+         if (getUIntPPCendianly(code+16) == 0x7C210B78 /* or 1,1,1 */) {
Mark Wielaard 6f7ad2
             /* %R3 = client_request ( %R4 ) */
Mark Wielaard 6f7ad2
             DIP("r3 = client_request ( %%r4 )\n");
Mark Wielaard 6f7ad2
             delta += 20;
Mark Wielaard 6f7ad2
@@ -18575,7 +18573,7 @@ DisResult disInstr_PPC_WRK (
Mark Wielaard 6f7ad2
             goto decode_success;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          else
Mark Wielaard 6f7ad2
-         if (getUIntBigendianly(code+16) == 0x7C421378 /* or 2,2,2 */) {
Mark Wielaard 6f7ad2
+         if (getUIntPPCendianly(code+16) == 0x7C421378 /* or 2,2,2 */) {
Mark Wielaard 6f7ad2
             /* %R3 = guest_NRADDR */
Mark Wielaard 6f7ad2
             DIP("r3 = guest_NRADDR\n");
Mark Wielaard 6f7ad2
             delta += 20;
Mark Wielaard 6f7ad2
@@ -18584,7 +18582,7 @@ DisResult disInstr_PPC_WRK (
Mark Wielaard 6f7ad2
             goto decode_success;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          else
Mark Wielaard 6f7ad2
-         if (getUIntBigendianly(code+16) == 0x7C631B78 /* or 3,3,3 */) {
Mark Wielaard 6f7ad2
+         if (getUIntPPCendianly(code+16) == 0x7C631B78 /* or 3,3,3 */) {
Mark Wielaard 6f7ad2
             /*  branch-and-link-to-noredir %R11 */
Mark Wielaard 6f7ad2
             DIP("branch-and-link-to-noredir r11\n");
Mark Wielaard 6f7ad2
             delta += 20;
Mark Wielaard 6f7ad2
@@ -18595,7 +18593,7 @@ DisResult disInstr_PPC_WRK (
Mark Wielaard 6f7ad2
             goto decode_success;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          else
Mark Wielaard 6f7ad2
-         if (getUIntBigendianly(code+16) == 0x7C842378 /* or 4,4,4 */) {
Mark Wielaard 6f7ad2
+         if (getUIntPPCendianly(code+16) == 0x7C842378 /* or 4,4,4 */) {
Mark Wielaard 6f7ad2
             /* %R3 = guest_NRADDR_GPR2 */
Mark Wielaard 6f7ad2
             DIP("r3 = guest_NRADDR_GPR2\n");
Mark Wielaard 6f7ad2
             delta += 20;
Mark Wielaard 6f7ad2
@@ -18604,10 +18602,10 @@ DisResult disInstr_PPC_WRK (
Mark Wielaard 6f7ad2
             goto decode_success;
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          else
Mark Wielaard 6f7ad2
-         if (getUIntBigendianly(code+16) == 0x7CA52B78 /* or 5,5,5 */) {
Mark Wielaard 6f7ad2
+         if (getUIntPPCendianly(code+16) == 0x7CA52B78 /* or 5,5,5 */) {
Mark Wielaard 6f7ad2
             DIP("IR injection\n");
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-            vex_inject_ir(irsb, Iend_BE);
Mark Wielaard 6f7ad2
+            vex_inject_ir(irsb, IENDIANESS);
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
             delta += 20;
Mark Wielaard 6f7ad2
             dres.len = 20;
Mark Wielaard 6f7ad2
@@ -18627,7 +18625,7 @@ DisResult disInstr_PPC_WRK (
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
          /* We don't know what it is.  Set opc1/opc2 so decode_failure
Mark Wielaard 6f7ad2
             can print the insn following the Special-insn preamble. */
Mark Wielaard 6f7ad2
-         theInstr = getUIntBigendianly(code+16);
Mark Wielaard 6f7ad2
+         theInstr = getUIntPPCendianly(code+16);
Mark Wielaard 6f7ad2
          opc1     = ifieldOPC(theInstr);
Mark Wielaard 6f7ad2
          opc2     = ifieldOPClo10(theInstr);
Mark Wielaard 6f7ad2
          goto decode_failure;
Mark Wielaard 6f7ad2
@@ -19323,7 +19321,7 @@ DisResult disInstr_PPC_WRK (
Mark Wielaard 6f7ad2
       case 0x32E: case 0x34E: case 0x36E: // tabortdc., tabortwci., tabortdci.
Mark Wielaard 6f7ad2
       case 0x38E: case 0x3AE: case 0x3EE: // tabort., treclaim., trechkpt.
Mark Wielaard 6f7ad2
       if (dis_transactional_memory( theInstr,
Mark Wielaard 6f7ad2
-                                    getUIntBigendianly( (UChar*)(&guest_code[delta + 4])),
Mark Wielaard 6f7ad2
+                                    getUIntPPCendianly( (UChar*)(&guest_code[delta + 4])),
Mark Wielaard 6f7ad2
                                     abiinfo, &dres,
Mark Wielaard 6f7ad2
                                     resteerOkFn, callback_opaque))
Mark Wielaard 6f7ad2
             goto decode_success;
Mark Wielaard 6f7ad2
diff --git a/cachegrind/cg_arch.c b/cachegrind/cg_arch.c
Mark Wielaard 6f7ad2
index 0b39c52..170e4cc 100644
Mark Wielaard 6f7ad2
--- a/cachegrind/cg_arch.c
Mark Wielaard 6f7ad2
+++ b/cachegrind/cg_arch.c
Mark Wielaard 6f7ad2
@@ -353,7 +353,7 @@ configure_caches(cache_t *I1c, cache_t *D1c, cache_t *LLc,
Mark Wielaard 6f7ad2
    *D1c = (cache_t) {  65536, 2, 64 };
Mark Wielaard 6f7ad2
    *LLc = (cache_t) { 262144, 8, 64 };
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    // Default cache configuration
Mark Wielaard 6f7ad2
    *I1c = (cache_t) {  65536, 2, 64 };
Mark Wielaard 6f7ad2
diff --git a/cachegrind/cg_branchpred.c b/cachegrind/cg_branchpred.c
Mark Wielaard 6f7ad2
index b385f66..9ee5c62 100644
Mark Wielaard 6f7ad2
--- a/cachegrind/cg_branchpred.c
Mark Wielaard 6f7ad2
+++ b/cachegrind/cg_branchpred.c
Mark Wielaard 6f7ad2
@@ -44,7 +44,7 @@
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* How many bits at the bottom of an instruction address are
Mark Wielaard 6f7ad2
    guaranteed to be zero? */
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc32) || defined(VGA_ppc64) \
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc32) || defined(VGA_ppc64be)  || defined(VGA_ppc64le) \
Mark Wielaard 6f7ad2
     || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_arm64)
Mark Wielaard 6f7ad2
 #  define N_IADDR_LO_ZERO_BITS 2
Mark Wielaard 6f7ad2
 #elif defined(VGA_x86) || defined(VGA_amd64)
Mark Wielaard 6f7ad2
diff --git a/configure.ac b/configure.ac
Mark Wielaard 6f7ad2
index c91ea94..5b65439 100644
Mark Wielaard 6f7ad2
--- a/configure.ac
Mark Wielaard 6f7ad2
+++ b/configure.ac
Mark Wielaard 6f7ad2
@@ -163,6 +163,18 @@ AC_MSG_CHECKING([for a supported CPU])
Mark Wielaard 6f7ad2
 # is a 64-bit capable PowerPC, then it must be set to ppc64 and not ppc32.
Mark Wielaard 6f7ad2
 # Ditto for amd64.  It is used for more configuration below, but is not used
Mark Wielaard 6f7ad2
 # outside this file.
Mark Wielaard 6f7ad2
+#
Mark Wielaard 6f7ad2
+# Power PC returns powerpc for Big Endian.  This was not changed when Little
Mark Wielaard 6f7ad2
+# Endian support was added to the 64-bit architecture.  The 64-bit Little
Mark Wielaard 6f7ad2
+# Endian systems explicitly state le in the host_cpu.  For clarity in the
Mark Wielaard 6f7ad2
+# Valgrind code, the ARCH_MAX name will state LE or BE for the endianess of
Mark Wielaard 6f7ad2
+# the 64-bit system.  Big Endian is the only mode supported on 32-bit Power PC.
Mark Wielaard 6f7ad2
+# The abreviation PPC or ppc refers to 32-bit and 64-bit systems with either
Mark Wielaard 6f7ad2
+# Endianess.  The name PPC64 or ppc64 to 64-bit systems of either Endianess.
Mark Wielaard 6f7ad2
+# The names ppc64be or PPC64BE refer to only 64-bit systems that are Big
Mark Wielaard 6f7ad2
+# Endian.  Similarly, ppc64le or PPC64LE refer to only 64-bit systems that are
Mark Wielaard 6f7ad2
+# Little Endian.
Mark Wielaard 6f7ad2
+
Mark Wielaard 6f7ad2
 case "${host_cpu}" in
Mark Wielaard 6f7ad2
      i?86) 
Mark Wielaard 6f7ad2
 	AC_MSG_RESULT([ok (${host_cpu})])
Mark Wielaard 6f7ad2
@@ -175,8 +187,15 @@ case "${host_cpu}" in
Mark Wielaard 6f7ad2
         ;;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
      powerpc64)
Mark Wielaard 6f7ad2
+     # this only referrs to 64-bit Big Endian
Mark Wielaard 6f7ad2
         AC_MSG_RESULT([ok (${host_cpu})])
Mark Wielaard 6f7ad2
-        ARCH_MAX="ppc64"
Mark Wielaard 6f7ad2
+        ARCH_MAX="ppc64be"
Mark Wielaard 6f7ad2
+        ;;
Mark Wielaard 6f7ad2
+
Mark Wielaard 6f7ad2
+     powerpc64le)
Mark Wielaard 6f7ad2
+     # this only referrs to 64-bit Little Endian
Mark Wielaard 6f7ad2
+        AC_MSG_RESULT([ok (${host_cpu})])
Mark Wielaard 6f7ad2
+        ARCH_MAX="ppc64le"
Mark Wielaard 6f7ad2
         ;;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
      powerpc)
Mark Wielaard 6f7ad2
@@ -378,7 +397,7 @@ esac
Mark Wielaard 6f7ad2
 # does not support building 32 bit programs
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 case "$ARCH_MAX-$VGCONF_OS" in
Mark Wielaard 6f7ad2
-     amd64-linux|ppc64-linux)
Mark Wielaard 6f7ad2
+     amd64-linux|ppc64be-linux)
Mark Wielaard 6f7ad2
         AC_MSG_CHECKING([for 32 bit build support])
Mark Wielaard 6f7ad2
         safe_CFLAGS=$CFLAGS
Mark Wielaard 6f7ad2
         CFLAGS="-m32"
Mark Wielaard 6f7ad2
@@ -496,13 +515,13 @@ case "$ARCH_MAX-$VGCONF_OS" in
Mark Wielaard 6f7ad2
         valt_load_address_sec_inner="0xUNSET"
Mark Wielaard 6f7ad2
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
Mark Wielaard 6f7ad2
 	;;
Mark Wielaard 6f7ad2
-     ppc64-linux)
Mark Wielaard 6f7ad2
+     ppc64be-linux)
Mark Wielaard 6f7ad2
         valt_load_address_sec_norml="0xUNSET"
Mark Wielaard 6f7ad2
         valt_load_address_sec_inner="0xUNSET"
Mark Wielaard 6f7ad2
 	if test x$vg_cv_only64bit = xyes; then
Mark Wielaard 6f7ad2
-	   VGCONF_ARCH_PRI="ppc64"
Mark Wielaard 6f7ad2
+	   VGCONF_ARCH_PRI="ppc64be"
Mark Wielaard 6f7ad2
            VGCONF_ARCH_SEC=""
Mark Wielaard 6f7ad2
-	   VGCONF_PLATFORM_PRI_CAPS="PPC64_LINUX"
Mark Wielaard 6f7ad2
+	   VGCONF_PLATFORM_PRI_CAPS="PPC64BE_LINUX"
Mark Wielaard 6f7ad2
 	   VGCONF_PLATFORM_SEC_CAPS=""
Mark Wielaard 6f7ad2
            valt_load_address_pri_norml="0x38000000"
Mark Wielaard 6f7ad2
            valt_load_address_pri_inner="0x28000000"
Mark Wielaard 6f7ad2
@@ -514,9 +533,9 @@ case "$ARCH_MAX-$VGCONF_OS" in
Mark Wielaard 6f7ad2
            valt_load_address_pri_norml="0x38000000"
Mark Wielaard 6f7ad2
            valt_load_address_pri_inner="0x28000000"
Mark Wielaard 6f7ad2
 	else
Mark Wielaard 6f7ad2
-	   VGCONF_ARCH_PRI="ppc64"
Mark Wielaard 6f7ad2
+	   VGCONF_ARCH_PRI="ppc64be"
Mark Wielaard 6f7ad2
            VGCONF_ARCH_SEC="ppc32"
Mark Wielaard 6f7ad2
-	   VGCONF_PLATFORM_PRI_CAPS="PPC64_LINUX"
Mark Wielaard 6f7ad2
+	   VGCONF_PLATFORM_PRI_CAPS="PPC64BE_LINUX"
Mark Wielaard 6f7ad2
 	   VGCONF_PLATFORM_SEC_CAPS="PPC32_LINUX"
Mark Wielaard 6f7ad2
            valt_load_address_pri_norml="0x38000000"
Mark Wielaard 6f7ad2
            valt_load_address_pri_inner="0x28000000"
Mark Wielaard 6f7ad2
@@ -525,6 +544,18 @@ case "$ARCH_MAX-$VGCONF_OS" in
Mark Wielaard 6f7ad2
 	fi
Mark Wielaard 6f7ad2
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
Mark Wielaard 6f7ad2
 	;;
Mark Wielaard 6f7ad2
+     ppc64le-linux)
Mark Wielaard 6f7ad2
+        # Little Endian is only supported on PPC64
Mark Wielaard 6f7ad2
+        valt_load_address_sec_norml="0xUNSET"
Mark Wielaard 6f7ad2
+        valt_load_address_sec_inner="0xUNSET"
Mark Wielaard 6f7ad2
+        VGCONF_ARCH_PRI="ppc64le"
Mark Wielaard 6f7ad2
+        VGCONF_ARCH_SEC=""
Mark Wielaard 6f7ad2
+        VGCONF_PLATFORM_PRI_CAPS="PPC64LE_LINUX"
Mark Wielaard 6f7ad2
+        VGCONF_PLATFORM_SEC_CAPS=""
Mark Wielaard 6f7ad2
+        valt_load_address_pri_norml="0x38000000"
Mark Wielaard 6f7ad2
+        valt_load_address_pri_inner="0x28000000"
Mark Wielaard 6f7ad2
+        AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
Mark Wielaard 6f7ad2
+       ;;
Mark Wielaard 6f7ad2
      # Darwin gets identified as 32-bit even when it supports 64-bit.
Mark Wielaard 6f7ad2
      # (Not sure why, possibly because 'uname' returns "i386"?)  Just about
Mark Wielaard 6f7ad2
      # all Macs support both 32-bit and 64-bit, so we just build both.  If
Mark Wielaard 6f7ad2
@@ -663,7 +694,8 @@ AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_PPC32,
Mark Wielaard 6f7ad2
                test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \ 
Mark Wielaard 6f7ad2
                  -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_LINUX )
Mark Wielaard 6f7ad2
 AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_PPC64, 
Mark Wielaard 6f7ad2
-               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX )
Mark Wielaard 6f7ad2
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64BE_LINUX \
Mark Wielaard 6f7ad2
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64LE_LINUX )
Mark Wielaard 6f7ad2
 AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_ARM,   
Mark Wielaard 6f7ad2
                test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX \
Mark Wielaard 6f7ad2
                  -o x$VGCONF_PLATFORM_SEC_CAPS = xARM_LINUX )
Mark Wielaard 6f7ad2
@@ -686,8 +718,10 @@ AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX,
Mark Wielaard 6f7ad2
 AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC32_LINUX, 
Mark Wielaard 6f7ad2
                test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \ 
Mark Wielaard 6f7ad2
                  -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_LINUX)
Mark Wielaard 6f7ad2
-AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX, 
Mark Wielaard 6f7ad2
-               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX)
Mark Wielaard 6f7ad2
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC64BE_LINUX,
Mark Wielaard 6f7ad2
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64BE_LINUX)
Mark Wielaard 6f7ad2
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC64LE_LINUX,
Mark Wielaard 6f7ad2
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64LE_LINUX)
Mark Wielaard 6f7ad2
 AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_ARM_LINUX, 
Mark Wielaard 6f7ad2
                test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX \
Mark Wielaard 6f7ad2
                  -o x$VGCONF_PLATFORM_SEC_CAPS = xARM_LINUX)
Mark Wielaard 6f7ad2
@@ -714,7 +748,8 @@ AM_CONDITIONAL(VGCONF_OS_IS_LINUX,
Mark Wielaard 6f7ad2
                test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
Mark Wielaard 6f7ad2
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
Mark Wielaard 6f7ad2
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
Mark Wielaard 6f7ad2
-                 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
Mark Wielaard 6f7ad2
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64BE_LINUX \
Mark Wielaard 6f7ad2
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64LE_LINUX \
Mark Wielaard 6f7ad2
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX \
Mark Wielaard 6f7ad2
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xARM64_LINUX \
Mark Wielaard 6f7ad2
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \
Mark Wielaard 6f7ad2
diff --git a/coregrind/launcher-darwin.c b/coregrind/launcher-darwin.c
Mark Wielaard 6f7ad2
index 8e3d63e..1f99026 100644
Mark Wielaard 6f7ad2
--- a/coregrind/launcher-darwin.c
Mark Wielaard 6f7ad2
+++ b/coregrind/launcher-darwin.c
Mark Wielaard 6f7ad2
@@ -59,11 +59,11 @@ static struct {
Mark Wielaard 6f7ad2
    const char *apple_name;     // e.g. x86_64
Mark Wielaard 6f7ad2
    const char *valgrind_name;  // e.g. amd64
Mark Wielaard 6f7ad2
 } valid_archs[] = {
Mark Wielaard 6f7ad2
-   { CPU_TYPE_X86,       "i386",   "x86" }, 
Mark Wielaard 6f7ad2
-   { CPU_TYPE_X86_64,    "x86_64", "amd64" }, 
Mark Wielaard 6f7ad2
-   { CPU_TYPE_ARM,       "arm",    "arm" }, 
Mark Wielaard 6f7ad2
-   { CPU_TYPE_POWERPC,   "ppc",    "ppc32" }, 
Mark Wielaard 6f7ad2
-   { CPU_TYPE_POWERPC64, "ppc64",  "ppc64" }, 
Mark Wielaard 6f7ad2
+   { CPU_TYPE_X86,         "i386",    "x86" },
Mark Wielaard 6f7ad2
+   { CPU_TYPE_X86_64,      "x86_64",  "amd64" },
Mark Wielaard 6f7ad2
+   { CPU_TYPE_ARM,         "arm",     "arm" },
Mark Wielaard 6f7ad2
+   { CPU_TYPE_POWERPC,     "ppc",     "ppc32" },
Mark Wielaard 6f7ad2
+   { CPU_TYPE_POWERPC64BE, "ppc64be", "ppc64be" },
Mark Wielaard 6f7ad2
 };
Mark Wielaard 6f7ad2
 static int valid_archs_count = sizeof(valid_archs)/sizeof(valid_archs[0]);
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
diff --git a/coregrind/launcher-linux.c b/coregrind/launcher-linux.c
Mark Wielaard 6f7ad2
index 83035ea..38e4857 100644
Mark Wielaard 6f7ad2
--- a/coregrind/launcher-linux.c
Mark Wielaard 6f7ad2
+++ b/coregrind/launcher-linux.c
Mark Wielaard 6f7ad2
@@ -236,7 +236,7 @@ static const char *select_platform(const char *clientname)
Mark Wielaard 6f7ad2
             if (ehdr->e_machine == EM_PPC64 &&
Mark Wielaard 6f7ad2
                 (ehdr->e_ident[EI_OSABI] == ELFOSABI_SYSV ||
Mark Wielaard 6f7ad2
                  ehdr->e_ident[EI_OSABI] == ELFOSABI_LINUX)) {
Mark Wielaard 6f7ad2
-               platform = "ppc64-linux";
Mark Wielaard 6f7ad2
+               platform = "ppc64be-linux";
Mark Wielaard 6f7ad2
             } 
Mark Wielaard 6f7ad2
             else 
Mark Wielaard 6f7ad2
             if (ehdr->e_machine == EM_S390 &&
Mark Wielaard 6f7ad2
@@ -320,7 +320,7 @@ int main(int argc, char** argv, char** envp)
Mark Wielaard 6f7ad2
    if ((0==strcmp(VG_PLATFORM,"x86-linux"))    ||
Mark Wielaard 6f7ad2
        (0==strcmp(VG_PLATFORM,"amd64-linux"))  ||
Mark Wielaard 6f7ad2
        (0==strcmp(VG_PLATFORM,"ppc32-linux"))  ||
Mark Wielaard 6f7ad2
-       (0==strcmp(VG_PLATFORM,"ppc64-linux"))  ||
Mark Wielaard 6f7ad2
+       (0==strcmp(VG_PLATFORM,"ppc64be-linux"))  ||
Mark Wielaard 6f7ad2
        (0==strcmp(VG_PLATFORM,"arm-linux"))    ||
Mark Wielaard 6f7ad2
        (0==strcmp(VG_PLATFORM,"arm64-linux"))  ||
Mark Wielaard 6f7ad2
        (0==strcmp(VG_PLATFORM,"s390x-linux"))  ||
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_aspacemgr/aspacemgr-common.c b/coregrind/m_aspacemgr/aspacemgr-common.c
Mark Wielaard 6f7ad2
index b8d694d..903f924 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_aspacemgr/aspacemgr-common.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_aspacemgr/aspacemgr-common.c
Mark Wielaard 6f7ad2
@@ -162,7 +162,8 @@ SysRes VG_(am_do_mmap_NO_NOTIFY)( Addr start, SizeT length, UInt prot,
Mark Wielaard 6f7ad2
    aspacem_assert((offset % 4096) == 0);
Mark Wielaard 6f7ad2
    res = VG_(do_syscall6)(__NR_mmap2, (UWord)start, length,
Mark Wielaard 6f7ad2
                           prot, flags, fd, offset / 4096);
Mark Wielaard 6f7ad2
-#  elif defined(VGP_amd64_linux) || defined(VGP_ppc64_linux) \
Mark Wielaard 6f7ad2
+#  elif defined(VGP_amd64_linux) \
Mark Wielaard 6f7ad2
+        || defined(VGP_ppc64be_linux)  || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
         || defined(VGP_s390x_linux) || defined(VGP_mips32_linux) \
Mark Wielaard 6f7ad2
         || defined(VGP_mips64_linux) || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
    res = VG_(do_syscall6)(__NR_mmap, (UWord)start, length, 
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_cache.c b/coregrind/m_cache.c
Mark Wielaard 6f7ad2
index 0321db4..d208a53 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_cache.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_cache.c
Mark Wielaard 6f7ad2
@@ -538,7 +538,8 @@ get_cache_info(VexArchInfo *vai)
Mark Wielaard 6f7ad2
    return ret == 0 ? True : False;
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGA_arm) || defined(VGA_ppc32) || defined(VGA_ppc64) || \
Mark Wielaard 6f7ad2
+#elif defined(VGA_arm) || defined(VGA_ppc32)    || \
Mark Wielaard 6f7ad2
+   defined(VGA_ppc64be) || defined(VGA_ppc64le) || \
Mark Wielaard 6f7ad2
    defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_arm64)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 static Bool
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_coredump/coredump-elf.c b/coregrind/m_coredump/coredump-elf.c
Mark Wielaard 6f7ad2
index fcc16ec..08ddddd 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_coredump/coredump-elf.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_coredump/coredump-elf.c
Mark Wielaard 6f7ad2
@@ -322,7 +322,7 @@ static void fill_prstatus(const ThreadState *tst,
Mark Wielaard 6f7ad2
    regs->dsisr = 0;
Mark Wielaard 6f7ad2
    regs->result = 0;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
 #  define DO(n)  regs->gpr[n] = arch->vex.guest_GPR##n
Mark Wielaard 6f7ad2
    DO(0);  DO(1);  DO(2);  DO(3);  DO(4);  DO(5);  DO(6);  DO(7);
Mark Wielaard 6f7ad2
    DO(8);  DO(9);  DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
Mark Wielaard 6f7ad2
@@ -458,7 +458,7 @@ static void fill_fpu(const ThreadState *tst, vki_elf_fpregset_t *fpu)
Mark Wielaard 6f7ad2
    DO(24); DO(25); DO(26); DO(27); DO(28); DO(29); DO(30); DO(31);
Mark Wielaard 6f7ad2
 #  undef DO
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    /* The guest state has the FPR fields declared as ULongs, so need
Mark Wielaard 6f7ad2
       to fish out the values without converting them.
Mark Wielaard 6f7ad2
       NOTE: The 32 FP registers map to the first 32 VSX registers.*/
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_debugger.c b/coregrind/m_debugger.c
Mark Wielaard 6f7ad2
index 3a61361..4af8f18 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_debugger.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_debugger.c
Mark Wielaard 6f7ad2
@@ -152,7 +152,7 @@ static Int ptrace_setregs(Int pid, VexGuestArchState* vex)
Mark Wielaard 6f7ad2
                      (void*)LibVEX_GuestPPC32_get_XER(vex));
Mark Wielaard 6f7ad2
    return rc;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    Int rc = 0; 
Mark Wielaard 6f7ad2
    /* FRJ: copied nearly verbatim from the ppc32 case. I compared the 
Mark Wielaard 6f7ad2
       vki-ppc64-linux.h with its ppc32 counterpart and saw no 
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_debuginfo/d3basics.c b/coregrind/m_debuginfo/d3basics.c
Mark Wielaard 6f7ad2
index 3999533..02e8dad 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_debuginfo/d3basics.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_debuginfo/d3basics.c
Mark Wielaard 6f7ad2
@@ -406,7 +406,7 @@ static Bool get_Dwarf_Reg( /*OUT*/Addr* a, Word regno, RegSummary* regs )
Mark Wielaard 6f7ad2
    if (regno == 7/*RSP*/) { *a = regs->sp; return True; }
Mark Wielaard 6f7ad2
 #  elif defined(VGP_ppc32_linux)
Mark Wielaard 6f7ad2
    if (regno == 1/*SP*/) { *a = regs->sp; return True; }
Mark Wielaard 6f7ad2
-#  elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    if (regno == 1/*SP*/) { *a = regs->sp; return True; }
Mark Wielaard 6f7ad2
 #  elif defined(VGP_arm_linux)
Mark Wielaard 6f7ad2
    if (regno == 13) { *a = regs->sp; return True; }
Mark Wielaard 6f7ad2
@@ -863,7 +863,8 @@ GXResult ML_(evaluate_Dwarf3_Expr) ( UChar* expr, UWord exprszB,
Mark Wielaard 6f7ad2
             if (!regs)
Mark Wielaard 6f7ad2
                FAIL("evaluate_Dwarf3_Expr: "
Mark Wielaard 6f7ad2
                     "DW_OP_call_frame_cfa but no reg info");
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+    || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
             /* Valgrind on ppc32/ppc64 currently doesn't use unwind info. */
Mark Wielaard 6f7ad2
             uw1 = ML_(read_Addr)((UChar*)regs->sp);
Mark Wielaard 6f7ad2
 #else
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c
Mark Wielaard 6f7ad2
index 13d27f0..90b6f0c 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_debuginfo/debuginfo.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_debuginfo/debuginfo.c
Mark Wielaard 6f7ad2
@@ -833,8 +833,8 @@ ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV, Int use_fd )
Mark Wielaard 6f7ad2
       || defined(VGA_mips64)
Mark Wielaard 6f7ad2
    is_rx_map = seg->hasR && seg->hasX;
Mark Wielaard 6f7ad2
    is_rw_map = seg->hasR && seg->hasW;
Mark Wielaard 6f7ad2
-#  elif defined(VGA_amd64) || defined(VGA_ppc64) || defined(VGA_arm) \
Mark Wielaard 6f7ad2
-        || defined(VGA_arm64)
Mark Wielaard 6f7ad2
+#  elif defined(VGA_amd64) || defined(VGA_ppc64be) || defined(VGA_ppc64le)  \
Mark Wielaard 6f7ad2
+        || defined(VGA_arm) || defined(VGA_arm64)
Mark Wielaard 6f7ad2
    is_rx_map = seg->hasR && seg->hasX && !seg->hasW;
Mark Wielaard 6f7ad2
    is_rw_map = seg->hasR && seg->hasW && !seg->hasX;
Mark Wielaard 6f7ad2
 #  elif defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
@@ -1675,7 +1675,7 @@ Bool get_sym_name ( Bool do_cxx_demangling, Bool do_z_demangling,
Mark Wielaard 6f7ad2
    return True;
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-/* ppc64-linux only: find the TOC pointer (R2 value) that should be in
Mark Wielaard 6f7ad2
+/* ppc64be-linux only: find the TOC pointer (R2 value) that should be in
Mark Wielaard 6f7ad2
    force at the entry point address of the function containing
Mark Wielaard 6f7ad2
    guest_code_addr.  Returns 0 if not known. */
Mark Wielaard 6f7ad2
 Addr VG_(get_tocptr) ( Addr guest_code_addr )
Mark Wielaard 6f7ad2
@@ -2370,7 +2370,8 @@ UWord evalCfiExpr ( XArray* exprs, Int ix,
Mark Wielaard 6f7ad2
             case Creg_IA_SP: return eec->uregs->sp;
Mark Wielaard 6f7ad2
             case Creg_IA_BP: return eec->uregs->fp;
Mark Wielaard 6f7ad2
             case Creg_MIPS_RA: return eec->uregs->ra;
Mark Wielaard 6f7ad2
-#           elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#           elif defined(VGA_ppc32) || defined(VGA_ppc64be) \
Mark Wielaard 6f7ad2
+               || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #           elif defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
             case Creg_ARM64_X30: return eec->uregs->x30;
Mark Wielaard 6f7ad2
 #           else
Mark Wielaard 6f7ad2
@@ -2620,7 +2621,7 @@ static Addr compute_cfa ( D3UnwindRegs* uregs,
Mark Wielaard 6f7ad2
       case CFIC_IA_BPREL:
Mark Wielaard 6f7ad2
          cfa = cfsi_m->cfa_off + uregs->fp;
Mark Wielaard 6f7ad2
          break;
Mark Wielaard 6f7ad2
-#     elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#     elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #     elif defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
       case CFIC_ARM64_SPREL: 
Mark Wielaard 6f7ad2
          cfa = cfsi_m->cfa_off + uregs->sp;
Mark Wielaard 6f7ad2
@@ -2728,7 +2729,7 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere,
Mark Wielaard 6f7ad2
    ipHere = uregsHere->ia;
Mark Wielaard 6f7ad2
 #  elif defined(VGA_mips32) || defined(VGA_mips64)
Mark Wielaard 6f7ad2
    ipHere = uregsHere->pc;
Mark Wielaard 6f7ad2
-#  elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #  elif defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
    ipHere = uregsHere->pc;
Mark Wielaard 6f7ad2
 #  else
Mark Wielaard 6f7ad2
@@ -2810,7 +2811,7 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere,
Mark Wielaard 6f7ad2
    COMPUTE(uregsPrev.pc, uregsHere->pc, cfsi_m->ra_how, cfsi_m->ra_off);
Mark Wielaard 6f7ad2
    COMPUTE(uregsPrev.sp, uregsHere->sp, cfsi_m->sp_how, cfsi_m->sp_off);
Mark Wielaard 6f7ad2
    COMPUTE(uregsPrev.fp, uregsHere->fp, cfsi_m->fp_how, cfsi_m->fp_off);
Mark Wielaard 6f7ad2
-#  elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) 
Mark Wielaard 6f7ad2
 #  elif defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
    COMPUTE(uregsPrev.pc,  uregsHere->pc,  cfsi_m->ra_how,  cfsi_m->ra_off);
Mark Wielaard 6f7ad2
    COMPUTE(uregsPrev.sp,  uregsHere->sp,  cfsi_m->sp_how,  cfsi_m->sp_off);
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_debuginfo/priv_storage.h b/coregrind/m_debuginfo/priv_storage.h
Mark Wielaard 6f7ad2
index 000d5f1..f002878 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_debuginfo/priv_storage.h
Mark Wielaard 6f7ad2
+++ b/coregrind/m_debuginfo/priv_storage.h
Mark Wielaard 6f7ad2
@@ -285,7 +285,7 @@ typedef
Mark Wielaard 6f7ad2
       Int   x29_off;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
    DiCfSI_m;
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 /* Just have a struct with the common fields in, so that code that
Mark Wielaard 6f7ad2
    processes the common fields doesn't have to be ifdef'd against
Mark Wielaard 6f7ad2
    VGP_/VGA_ symbols.  These are not used in any way on ppc32/64-linux
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_debuginfo/readdwarf.c b/coregrind/m_debuginfo/readdwarf.c
Mark Wielaard 6f7ad2
index c6e9ebe..158f614 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_debuginfo/readdwarf.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_debuginfo/readdwarf.c
Mark Wielaard 6f7ad2
@@ -1833,7 +1833,7 @@ void ML_(read_debuginfo_dwarf1) (
Mark Wielaard 6f7ad2
 #  define FP_REG         1
Mark Wielaard 6f7ad2
 #  define SP_REG         1
Mark Wielaard 6f7ad2
 #  define RA_REG_DEFAULT 65
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 #  define FP_REG         1
Mark Wielaard 6f7ad2
 #  define SP_REG         1
Mark Wielaard 6f7ad2
 #  define RA_REG_DEFAULT 65
Mark Wielaard 6f7ad2
@@ -1873,8 +1873,9 @@ void ML_(read_debuginfo_dwarf1) (
Mark Wielaard 6f7ad2
    arm-linux (320) seems ludicrously high, but the ARM IHI 0040A page
Mark Wielaard 6f7ad2
    7 (DWARF for the ARM Architecture) specifies that values up to 320
Mark Wielaard 6f7ad2
    might exist, for Neon/VFP-v3. */
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux) \
Mark Wielaard 6f7ad2
-    || defined(VGP_mips32_linux) || defined(VGP_mips64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+     || defined(VGP_ppc64le_linux) || defined(VGP_mips32_linux) \
Mark Wielaard 6f7ad2
+     || defined(VGP_mips64_linux)
Mark Wielaard 6f7ad2
 # define N_CFI_REGS 72
Mark Wielaard 6f7ad2
 #elif defined(VGP_arm_linux)
Mark Wielaard 6f7ad2
 # define N_CFI_REGS 320
Mark Wielaard 6f7ad2
@@ -2491,7 +2492,7 @@ static Bool summarise_context(/*OUT*/Addr* base,
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    return True;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    /* These don't use CFI based unwinding (is that really true?) */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #  else
Mark Wielaard 6f7ad2
@@ -2585,7 +2586,8 @@ static Int copy_convert_CfiExpr_tree ( XArray*        dstxa,
Mark Wielaard 6f7ad2
             return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_IP );
Mark Wielaard 6f7ad2
 #        elif defined(VGA_arm64)
Mark Wielaard 6f7ad2
          I_die_here;
Mark Wielaard 6f7ad2
-#        elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#        elif defined(VGA_ppc32) || defined(VGA_ppc64be) \
Mark Wielaard 6f7ad2
+            || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #        else
Mark Wielaard 6f7ad2
 #           error "Unknown arch"
Mark Wielaard 6f7ad2
 #        endif
Mark Wielaard 6f7ad2
@@ -3756,7 +3758,8 @@ void ML_(read_callframe_info_dwarf3)
Mark Wielaard 6f7ad2
    if (!is_ehframe)
Mark Wielaard 6f7ad2
       vg_assert(frame_avma == 0);
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    /* These targets don't use CFI-based stack unwinding.  */
Mark Wielaard 6f7ad2
    return;
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c
Mark Wielaard 6f7ad2
index c57ac22..732ca0a 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_debuginfo/readelf.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_debuginfo/readelf.c
Mark Wielaard 6f7ad2
@@ -204,19 +204,19 @@ void show_raw_elf_symbol ( DiImage* strtab_img,
Mark Wielaard 6f7ad2
    .data, size of .data + size of .bss).  I don't know if this is
Mark Wielaard 6f7ad2
    really correct/justifiable, or not.
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-   For ppc64-linux it's more complex.  If the symbol is seen to be in
Mark Wielaard 6f7ad2
+   For ppc64be-linux it's more complex.  If the symbol is seen to be in
Mark Wielaard 6f7ad2
    the .opd section, it is taken to be a function descriptor, and so
Mark Wielaard 6f7ad2
    a dereference is attempted, in order to get hold of the real entry
Mark Wielaard 6f7ad2
    point address.  Also as part of the dereference, there is an attempt
Mark Wielaard 6f7ad2
    to calculate the TOC pointer (R2 value) associated with the symbol.
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-   To support the ppc64-linux pre-"dotless" ABI (prior to gcc 4.0.0),
Mark Wielaard 6f7ad2
+   To support the ppc64be-linux pre-"dotless" ABI (prior to gcc 4.0.0),
Mark Wielaard 6f7ad2
    if the symbol is seen to be outside the .opd section and its name
Mark Wielaard 6f7ad2
    starts with a dot, an .opd deference is not attempted, and no TOC
Mark Wielaard 6f7ad2
    pointer is calculated, but the the leading dot is removed from the
Mark Wielaard 6f7ad2
    name.
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-   As a result, on ppc64-linux, the caller of this function may have
Mark Wielaard 6f7ad2
+   As a result, on ppc64be-linux, the caller of this function may have
Mark Wielaard 6f7ad2
    to piece together the real size, address, name of the symbol from
Mark Wielaard 6f7ad2
    multiple calls to this function.  Ugly and confusing.
Mark Wielaard 6f7ad2
 */
Mark Wielaard 6f7ad2
@@ -229,22 +229,22 @@ Bool get_elf_symbol_info (
Mark Wielaard 6f7ad2
         DiSlice*   escn_strtab,   /* holds the name */
Mark Wielaard 6f7ad2
         Addr       sym_svma,   /* address as stated in the object file */
Mark Wielaard 6f7ad2
         Bool       symtab_in_debug, /* symbol table is in the debug file */
Mark Wielaard 6f7ad2
-        DiSlice*   escn_opd,   /* the .opd (ppc64-linux only) */
Mark Wielaard 6f7ad2
+        DiSlice*   escn_opd,   /* the .opd (ppc64be-linux only) */
Mark Wielaard 6f7ad2
         PtrdiffT   opd_bias,   /* for biasing AVMAs found in .opd */
Mark Wielaard 6f7ad2
         /* OUTPUTS */
Mark Wielaard 6f7ad2
         DiOffT* sym_name_out_ioff, /* name (in strtab) we should record */
Mark Wielaard 6f7ad2
         Addr*   sym_avma_out,   /* addr we should record */
Mark Wielaard 6f7ad2
         Int*    sym_size_out,   /* symbol size */
Mark Wielaard 6f7ad2
-        Addr*   sym_tocptr_out, /* ppc64-linux only: R2 value to be
Mark Wielaard 6f7ad2
+        Addr*   sym_tocptr_out, /* ppc64be-linux only: R2 value to be
Mark Wielaard 6f7ad2
                                    used on entry */
Mark Wielaard 6f7ad2
-        Bool*   from_opd_out,   /* ppc64-linux only: did we deref an
Mark Wielaard 6f7ad2
+        Bool*   from_opd_out,   /* ppc64be-linux only: did we deref an
Mark Wielaard 6f7ad2
                                   .opd entry? */
Mark Wielaard 6f7ad2
         Bool*   is_text_out,    /* is this a text symbol? */
Mark Wielaard 6f7ad2
         Bool*   is_ifunc        /* is this a  STT_GNU_IFUNC function ?*/
Mark Wielaard 6f7ad2
      )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
    Bool plausible;
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    Bool is_in_opd;
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
    Bool in_text, in_data, in_sdata, in_rodata, in_bss, in_sbss;
Mark Wielaard 6f7ad2
@@ -374,9 +374,9 @@ Bool get_elf_symbol_info (
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    /* Allow STT_NOTYPE in the very special case where we're running on
Mark Wielaard 6f7ad2
-      ppc64-linux and the symbol is one which the .opd-chasing hack
Mark Wielaard 6f7ad2
+      ppc64be-linux and the symbol is one which the .opd-chasing hack
Mark Wielaard 6f7ad2
       below will chase. */
Mark Wielaard 6f7ad2
    if (!plausible
Mark Wielaard 6f7ad2
        && *is_text_out
Mark Wielaard 6f7ad2
@@ -473,7 +473,7 @@ Bool get_elf_symbol_info (
Mark Wielaard 6f7ad2
       return False;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-   /* ppc64-linux nasty hack: if the symbol is in an .opd section,
Mark Wielaard 6f7ad2
+   /* ppc64be-linux nasty hack: if the symbol is in an .opd section,
Mark Wielaard 6f7ad2
       then really what we have is the address of a function
Mark Wielaard 6f7ad2
       descriptor.  So use the first word of that as the function's
Mark Wielaard 6f7ad2
       text.
Mark Wielaard 6f7ad2
@@ -481,7 +481,8 @@ Bool get_elf_symbol_info (
Mark Wielaard 6f7ad2
       See thread starting at
Mark Wielaard 6f7ad2
       http://gcc.gnu.org/ml/gcc-patches/2004-08/msg00557.html
Mark Wielaard 6f7ad2
    */
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
+   /* Host and guest may have different Endianess, used by BE only */
Mark Wielaard 6f7ad2
    is_in_opd = False;
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -489,7 +490,7 @@ Bool get_elf_symbol_info (
Mark Wielaard 6f7ad2
        && di->opd_size > 0
Mark Wielaard 6f7ad2
        && *sym_avma_out >= di->opd_avma
Mark Wielaard 6f7ad2
        && *sym_avma_out <  di->opd_avma + di->opd_size) {
Mark Wielaard 6f7ad2
-#     if !defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#     if !defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
       if (TRACE_SYMTAB_ENABLED) {
Mark Wielaard 6f7ad2
          HChar* sym_name = ML_(img_strdup)(escn_strtab->img,
Mark Wielaard 6f7ad2
                                            "di.gesi.6", sym_name_ioff);
Mark Wielaard 6f7ad2
@@ -584,7 +585,7 @@ Bool get_elf_symbol_info (
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    /* Here's yet another ppc64-linux hack.  Get rid of leading dot if
Mark Wielaard 6f7ad2
       the symbol is outside .opd. */
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    if (di->opd_size > 0
Mark Wielaard 6f7ad2
        && !is_in_opd
Mark Wielaard 6f7ad2
        && *sym_name_out_ioff != DiOffT_INVALID
Mark Wielaard 6f7ad2
@@ -668,7 +669,7 @@ Bool get_elf_symbol_info (
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    /* It's crucial that we never add symbol addresses in the .opd
Mark Wielaard 6f7ad2
       section.  This would completely mess up function redirection and
Mark Wielaard 6f7ad2
       intercepting.  This assert ensures that any symbols that make it
Mark Wielaard 6f7ad2
@@ -692,7 +693,7 @@ void read_elf_symtab__normal(
Mark Wielaard 6f7ad2
         struct _DebugInfo* di, const HChar* tab_name,
Mark Wielaard 6f7ad2
         DiSlice*   escn_symtab,
Mark Wielaard 6f7ad2
         DiSlice*   escn_strtab,
Mark Wielaard 6f7ad2
-        DiSlice*   escn_opd, /* ppc64-linux only */ 
Mark Wielaard 6f7ad2
+        DiSlice*   escn_opd, /* ppc64be-linux only */
Mark Wielaard 6f7ad2
         Bool       symtab_in_debug
Mark Wielaard 6f7ad2
      )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
@@ -768,7 +769,7 @@ void read_elf_symtab__normal(
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* Read an ELF symbol table (normal or dynamic).  This one is for
Mark Wielaard 6f7ad2
-   ppc64-linux, which requires special treatment. */
Mark Wielaard 6f7ad2
+   ppc64be-linux, which requires special treatment. */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 typedef
Mark Wielaard 6f7ad2
    struct { 
Mark Wielaard 6f7ad2
@@ -806,7 +807,7 @@ static Word cmp_TempSymKey ( TempSymKey* key1, TempSym* elem2 )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 static
Mark Wielaard 6f7ad2
 __attribute__((unused)) /* not referred to on all targets */
Mark Wielaard 6f7ad2
-void read_elf_symtab__ppc64_linux( 
Mark Wielaard 6f7ad2
+void read_elf_symtab__ppc64be_linux(
Mark Wielaard 6f7ad2
         struct _DebugInfo* di, const HChar* tab_name,
Mark Wielaard 6f7ad2
         DiSlice*   escn_symtab,
Mark Wielaard 6f7ad2
         DiSlice*   escn_strtab,
Mark Wielaard 6f7ad2
@@ -830,7 +831,7 @@ void read_elf_symtab__ppc64_linux(
Mark Wielaard 6f7ad2
       return;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-   TRACE_SYMTAB("\n--- Reading (ELF, ppc64-linux) %s (%lld entries) ---\n",
Mark Wielaard 6f7ad2
+   TRACE_SYMTAB("\n--- Reading (ELF, ppc64be-linux) %s (%lld entries) ---\n",
Mark Wielaard 6f7ad2
                 tab_name, escn_symtab->szB/sizeof(ElfXX_Sym) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    oset = VG_(OSetGen_Create)( offsetof(TempSym,key), 
Mark Wielaard 6f7ad2
@@ -2116,7 +2117,7 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
Mark Wielaard 6f7ad2
             BAD(".plt");
Mark Wielaard 6f7ad2
          }
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
-#     elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#     elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
       /* Accept .plt where mapped as rw (data), or unmapped */
Mark Wielaard 6f7ad2
       if (0 == VG_(strcmp)(name, ".plt")) {
Mark Wielaard 6f7ad2
          if (inrw && !di->plt_present) {
Mark Wielaard 6f7ad2
@@ -2229,7 +2230,7 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
Mark Wielaard 6f7ad2
       DiSlice dwarf1d_escn        = DiSlice_INVALID; // .debug        (dwarf1)
Mark Wielaard 6f7ad2
       DiSlice dwarf1l_escn        = DiSlice_INVALID; // .line         (dwarf1)
Mark Wielaard 6f7ad2
       DiSlice opd_escn            = DiSlice_INVALID; // .opd (dwarf2, 
Mark Wielaard 6f7ad2
-                                                     //       ppc64-linux)
Mark Wielaard 6f7ad2
+                                                     //       ppc64be-linux)
Mark Wielaard 6f7ad2
       DiSlice ehframe_escn[N_EHFRAME_SECTS];         // .eh_frame (dwarf2)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
       for (i = 0; i < N_EHFRAME_SECTS; i++)
Mark Wielaard 6f7ad2
@@ -2733,8 +2734,8 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
Mark Wielaard 6f7ad2
          void (*read_elf_symtab)(struct _DebugInfo*, const HChar*,
Mark Wielaard 6f7ad2
                                  DiSlice*, DiSlice*, DiSlice*, Bool);
Mark Wielaard 6f7ad2
          Bool symtab_in_debug;
Mark Wielaard 6f7ad2
-#        if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
-         read_elf_symtab = read_elf_symtab__ppc64_linux;
Mark Wielaard 6f7ad2
+#        if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
+         read_elf_symtab = read_elf_symtab__ppc64be_linux;
Mark Wielaard 6f7ad2
 #        else
Mark Wielaard 6f7ad2
          read_elf_symtab = read_elf_symtab__normal;
Mark Wielaard 6f7ad2
 #        endif
Mark Wielaard 6f7ad2
@@ -2776,7 +2777,7 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
Mark Wielaard 6f7ad2
          seems OK though.  Also skip on Android. */
Mark Wielaard 6f7ad2
 #     if !defined(VGP_amd64_linux) \
Mark Wielaard 6f7ad2
          && !defined(VGP_s390x_linux) \
Mark Wielaard 6f7ad2
-         && !defined(VGP_ppc64_linux) \
Mark Wielaard 6f7ad2
+         && !defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
          && !defined(VGPV_arm_linux_android) \
Mark Wielaard 6f7ad2
          && !defined(VGPV_x86_linux_android) \
Mark Wielaard 6f7ad2
          && !defined(VGP_mips64_linux)
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_debuginfo/readmacho.c b/coregrind/m_debuginfo/readmacho.c
Mark Wielaard 6f7ad2
index d20a464..9926237 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_debuginfo/readmacho.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_debuginfo/readmacho.c
Mark Wielaard 6f7ad2
@@ -197,8 +197,8 @@ static DiSlice map_image_aboard ( DebugInfo* di, /* only for err msgs */
Mark Wielaard 6f7ad2
            f++, arch_be_ioff += sizeof(struct fat_arch)) {
Mark Wielaard 6f7ad2
 #        if defined(VGA_ppc)
Mark Wielaard 6f7ad2
          Int cputype = CPU_TYPE_POWERPC;
Mark Wielaard 6f7ad2
-#        elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
-         Int cputype = CPU_TYPE_POWERPC64;
Mark Wielaard 6f7ad2
+#        elif defined(VGA_ppc64be)
Mark Wielaard 6f7ad2
+         Int cputype = CPU_TYPE_POWERPC64BE;
Mark Wielaard 6f7ad2
 #        elif defined(VGA_x86)
Mark Wielaard 6f7ad2
          Int cputype = CPU_TYPE_X86;
Mark Wielaard 6f7ad2
 #        elif defined(VGA_amd64)
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_debuginfo/storage.c b/coregrind/m_debuginfo/storage.c
Mark Wielaard 6f7ad2
index 78bcdf6..c6a17ca 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_debuginfo/storage.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_debuginfo/storage.c
Mark Wielaard 6f7ad2
@@ -199,7 +199,7 @@ void ML_(ppDiCfSI) ( XArray* /* of CfiExpr */ exprs,
Mark Wielaard 6f7ad2
    SHOW_HOW(si_m->r11_how, si_m->r11_off);
Mark Wielaard 6f7ad2
    VG_(printf)(" R7=");
Mark Wielaard 6f7ad2
    SHOW_HOW(si_m->r7_how, si_m->r7_off);
Mark Wielaard 6f7ad2
-#  elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #  elif defined(VGA_s390x) || defined(VGA_mips32) || defined(VGA_mips64)
Mark Wielaard 6f7ad2
    VG_(printf)(" SP=");
Mark Wielaard 6f7ad2
    SHOW_HOW(si_m->sp_how, si_m->sp_off);
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_debuglog.c b/coregrind/m_debuglog.c
Mark Wielaard 6f7ad2
index 2657c3a..8a22ca2 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_debuglog.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_debuglog.c
Mark Wielaard 6f7ad2
@@ -189,7 +189,7 @@ static UInt local_sys_getpid ( void )
Mark Wielaard 6f7ad2
    return __res;
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 static UInt local_sys_write_stderr ( const HChar* buf, Int n )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_dispatch/dispatch-ppc64-linux.S b/coregrind/m_dispatch/dispatch-ppc64-linux.S
Mark Wielaard 6f7ad2
index ac1c4cb..35cefdf 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_dispatch/dispatch-ppc64-linux.S
Mark Wielaard 6f7ad2
+++ b/coregrind/m_dispatch/dispatch-ppc64-linux.S
Mark Wielaard 6f7ad2
@@ -28,7 +28,7 @@
Mark Wielaard 6f7ad2
   The GNU General Public License is contained in the file COPYING.
Mark Wielaard 6f7ad2
 */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #include "pub_core_basics_asm.h"
Mark Wielaard 6f7ad2
 #include "pub_core_dispatch_asm.h"
Mark Wielaard 6f7ad2
@@ -193,7 +193,7 @@ VG_(disp_run_translations):
Mark Wielaard 6f7ad2
         /* 88(sp) used later to load fpscr with zero */
Mark Wielaard 6f7ad2
 	/* 48:87(sp) free */
Mark Wielaard 6f7ad2
 	
Mark Wielaard 6f7ad2
-        /* Linkage Area (reserved)
Mark Wielaard 6f7ad2
+        /* Linkage Area (reserved)  BE ABI
Mark Wielaard 6f7ad2
            40(sp) : TOC
Mark Wielaard 6f7ad2
            32(sp) : link editor doubleword
Mark Wielaard 6f7ad2
            24(sp) : compiler doubleword
Mark Wielaard 6f7ad2
@@ -530,7 +530,7 @@ VG_(disp_cp_evcheck_fail):
Mark Wielaard 6f7ad2
 /* Let the linker know we don't need an executable stack */
Mark Wielaard 6f7ad2
 .section .note.GNU-stack,"",@progbits
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#endif // defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#endif // defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /*--------------------------------------------------------------------*/
Mark Wielaard 6f7ad2
 /*--- end                                                          ---*/
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_gdbserver/target.c b/coregrind/m_gdbserver/target.c
Mark Wielaard 6f7ad2
index 4c4c1b5..2fde954 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_gdbserver/target.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_gdbserver/target.c
Mark Wielaard 6f7ad2
@@ -657,7 +657,7 @@ void valgrind_initialize_target(void)
Mark Wielaard 6f7ad2
    arm64_init_architecture(&the_low_target);
Mark Wielaard 6f7ad2
 #elif defined(VGA_ppc32)
Mark Wielaard 6f7ad2
    ppc32_init_architecture(&the_low_target);
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    ppc64_init_architecture(&the_low_target);
Mark Wielaard 6f7ad2
 #elif defined(VGA_s390x)
Mark Wielaard 6f7ad2
    s390x_init_architecture(&the_low_target);
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c
Mark Wielaard 6f7ad2
index 54efdea..b4c6d92 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_initimg/initimg-linux.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_initimg/initimg-linux.c
Mark Wielaard 6f7ad2
@@ -366,7 +366,7 @@ struct auxv *find_auxv(UWord* sp)
Mark Wielaard 6f7ad2
       sp++;
Mark Wielaard 6f7ad2
    sp++;
Mark Wielaard 6f7ad2
    
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 # if defined AT_IGNOREPPC
Mark Wielaard 6f7ad2
    while (*sp == AT_IGNOREPPC)        // skip AT_IGNOREPPC entries
Mark Wielaard 6f7ad2
       sp += 2;
Mark Wielaard 6f7ad2
@@ -457,7 +457,8 @@ Addr setup_client_stack( void*  init_sp,
Mark Wielaard 6f7ad2
       auxsize += sizeof(*cauxv);
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    auxsize += 2 * sizeof(*cauxv);
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -614,7 +615,8 @@ Addr setup_client_stack( void*  init_sp,
Mark Wielaard 6f7ad2
    // We do not take ULong* (as ULong 8 bytes on a 32 bits),
Mark Wielaard 6f7ad2
    // => we take UWord*
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    auxv[0].a_type  = AT_IGNOREPPC;
Mark Wielaard 6f7ad2
    auxv[0].u.a_val = AT_IGNOREPPC;
Mark Wielaard 6f7ad2
    auxv[1].a_type  = AT_IGNOREPPC;
Mark Wielaard 6f7ad2
@@ -707,7 +709,7 @@ Addr setup_client_stack( void*  init_sp,
Mark Wielaard 6f7ad2
                                 "PPC32 icache line size %u (type %u)\n", 
Mark Wielaard 6f7ad2
                                 (UInt)auxv->u.a_val, (UInt)auxv->a_type );
Mark Wielaard 6f7ad2
             }
Mark Wielaard 6f7ad2
-#           elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#           elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
             /* acquire cache info */
Mark Wielaard 6f7ad2
             if (auxv->u.a_val > 0) {
Mark Wielaard 6f7ad2
                VG_(machine_ppc64_set_clszB)( auxv->u.a_val );
Mark Wielaard 6f7ad2
@@ -718,7 +720,8 @@ Addr setup_client_stack( void*  init_sp,
Mark Wielaard 6f7ad2
 #           endif
Mark Wielaard 6f7ad2
             break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#        if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#        if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+            || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
          case AT_IGNOREPPC:
Mark Wielaard 6f7ad2
             break;
Mark Wielaard 6f7ad2
 #        endif
Mark Wielaard 6f7ad2
@@ -738,7 +741,8 @@ Addr setup_client_stack( void*  init_sp,
Mark Wielaard 6f7ad2
             auxv->a_type = AT_IGNORE;
Mark Wielaard 6f7ad2
             break;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#        if !defined(VGP_ppc32_linux) && !defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#        if !defined(VGP_ppc32_linux) && !defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+            && !defined(VGP_ppc64le)
Mark Wielaard 6f7ad2
          case AT_SYSINFO_EHDR: {
Mark Wielaard 6f7ad2
             /* Trash this, because we don't reproduce it */
Mark Wielaard 6f7ad2
             const NSegment* ehdrseg = VG_(am_find_nsegment)((Addr)auxv->u.a_ptr);
Mark Wielaard 6f7ad2
@@ -1024,7 +1028,7 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii )
Mark Wielaard 6f7ad2
    arch->vex.guest_GPR1 = iifii.initial_client_SP;
Mark Wielaard 6f7ad2
    arch->vex.guest_CIA  = iifii.initial_client_IP;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    vg_assert(0 == sizeof(VexGuestPPC64State) % 16);
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    /* Zero out the initial state, and set up the simulated FPU in a
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_libcassert.c b/coregrind/m_libcassert.c
Mark Wielaard 6f7ad2
index f8a957b..5e77f9f 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_libcassert.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_libcassert.c
Mark Wielaard 6f7ad2
@@ -98,7 +98,7 @@
Mark Wielaard 6f7ad2
         (srP)->r_sp = (ULong)r1;                          \
Mark Wielaard 6f7ad2
         (srP)->misc.PPC32.r_lr = lr;                      \
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 #  define GET_STARTREGS(srP)                              \
Mark Wielaard 6f7ad2
       { ULong cia, r1, lr;                                \
Mark Wielaard 6f7ad2
         __asm__ __volatile__(                             \
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_libcfile.c b/coregrind/m_libcfile.c
Mark Wielaard 6f7ad2
index 0688bbb..9ff6b61 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_libcfile.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_libcfile.c
Mark Wielaard 6f7ad2
@@ -677,8 +677,8 @@ SysRes VG_(pread) ( Int fd, void* buf, Int count, OffT offset )
Mark Wielaard 6f7ad2
    res = VG_(do_syscall6)(__NR_pread64, fd, (UWord)buf, count, 
Mark Wielaard 6f7ad2
                           0, 0, offset);
Mark Wielaard 6f7ad2
    return res;
Mark Wielaard 6f7ad2
-#  elif defined(VGP_amd64_linux) \
Mark Wielaard 6f7ad2
-      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux) \
Mark Wielaard 6f7ad2
+#  elif defined(VGP_amd64_linux) || defined(VGP_s390x_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64be_linux)  || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
       || defined(VGP_mips64_linux) \
Mark Wielaard 6f7ad2
       || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
    res = VG_(do_syscall4)(__NR_pread64, fd, (UWord)buf, count, offset);
Mark Wielaard 6f7ad2
@@ -923,7 +923,8 @@ static Int parse_inet_addr_and_port ( const HChar* str, UInt* ip_addr, UShort* p
Mark Wielaard 6f7ad2
 Int VG_(socket) ( Int domain, Int type, Int protocol )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
-      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
    SysRes res;
Mark Wielaard 6f7ad2
    UWord  args[3];
Mark Wielaard 6f7ad2
    args[0] = domain;
Mark Wielaard 6f7ad2
@@ -963,7 +964,8 @@ static
Mark Wielaard 6f7ad2
 Int my_connect ( Int sockfd, struct vki_sockaddr_in* serv_addr, Int addrlen )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
-      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
    SysRes res;
Mark Wielaard 6f7ad2
    UWord  args[3];
Mark Wielaard 6f7ad2
    args[0] = sockfd;
Mark Wielaard 6f7ad2
@@ -1002,7 +1004,8 @@ Int VG_(write_socket)( Int sd, const void *msg, Int count )
Mark Wielaard 6f7ad2
       SIGPIPE */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
-      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
    SysRes res;
Mark Wielaard 6f7ad2
    UWord  args[4];
Mark Wielaard 6f7ad2
    args[0] = sd;
Mark Wielaard 6f7ad2
@@ -1033,7 +1036,8 @@ Int VG_(write_socket)( Int sd, const void *msg, Int count )
Mark Wielaard 6f7ad2
 Int VG_(getsockname) ( Int sd, struct vki_sockaddr *name, Int *namelen)
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
-      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_s390x_linux) \
Mark Wielaard 6f7ad2
       || defined(VGP_mips32_linux)
Mark Wielaard 6f7ad2
    SysRes res;
Mark Wielaard 6f7ad2
    UWord  args[3];
Mark Wielaard 6f7ad2
@@ -1064,7 +1068,8 @@ Int VG_(getsockname) ( Int sd, struct vki_sockaddr *name, Int *namelen)
Mark Wielaard 6f7ad2
 Int VG_(getpeername) ( Int sd, struct vki_sockaddr *name, Int *namelen)
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
-      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_s390x_linux) \
Mark Wielaard 6f7ad2
       || defined(VGP_mips32_linux)
Mark Wielaard 6f7ad2
    SysRes res;
Mark Wielaard 6f7ad2
    UWord  args[3];
Mark Wielaard 6f7ad2
@@ -1096,7 +1101,8 @@ Int VG_(getsockopt) ( Int sd, Int level, Int optname, void *optval,
Mark Wielaard 6f7ad2
                       Int *optlen)
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
-      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
    SysRes res;
Mark Wielaard 6f7ad2
    UWord  args[5];
Mark Wielaard 6f7ad2
    args[0] = sd;
Mark Wielaard 6f7ad2
@@ -1133,7 +1139,8 @@ Int VG_(setsockopt) ( Int sd, Int level, Int optname, void *optval,
Mark Wielaard 6f7ad2
                       Int optlen)
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
-      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
    SysRes res;
Mark Wielaard 6f7ad2
    UWord  args[5];
Mark Wielaard 6f7ad2
    args[0] = sd;
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_libcproc.c b/coregrind/m_libcproc.c
Mark Wielaard 6f7ad2
index 25b295c..41bca83 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_libcproc.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_libcproc.c
Mark Wielaard 6f7ad2
@@ -555,8 +555,8 @@ Int VG_(getgroups)( Int size, UInt* list )
Mark Wielaard 6f7ad2
       list[i] = (UInt)list16[i];
Mark Wielaard 6f7ad2
    return sr_Res(sres);
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  elif defined(VGP_amd64_linux) || defined(VGP_ppc64_linux)  \
Mark Wielaard 6f7ad2
-        || defined(VGP_arm_linux)                             \
Mark Wielaard 6f7ad2
+#  elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \
Mark Wielaard 6f7ad2
+        || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)  \
Mark Wielaard 6f7ad2
         || defined(VGO_darwin) || defined(VGP_s390x_linux)    \
Mark Wielaard 6f7ad2
         || defined(VGP_mips32_linux) || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
    SysRes sres;
Mark Wielaard 6f7ad2
@@ -741,7 +741,7 @@ void VG_(invalidate_icache) ( void *ptr, SizeT nbytes )
Mark Wielaard 6f7ad2
    // If I-caches are coherent, nothing needs to be done here
Mark Wielaard 6f7ad2
    if (vai.hwcache_info.icaches_maintain_coherence) return;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    Addr startaddr = (Addr) ptr;
Mark Wielaard 6f7ad2
    Addr endaddr   = startaddr + nbytes;
Mark Wielaard 6f7ad2
    Addr cls;
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_libcsetjmp.c b/coregrind/m_libcsetjmp.c
Mark Wielaard 6f7ad2
index 5b72182..488e8e8 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_libcsetjmp.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_libcsetjmp.c
Mark Wielaard 6f7ad2
@@ -149,7 +149,7 @@ __asm__(
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* ------------ ppc64-linux ------------ */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 __asm__(
Mark Wielaard 6f7ad2
 ".section \".toc\",\"aw\""          "\n"
Mark Wielaard 6f7ad2
@@ -270,7 +270,7 @@ __asm__(
Mark Wielaard 6f7ad2
 ".previous"  "\n"
Mark Wielaard 6f7ad2
 );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#endif /* VGP_ppc64_linux */
Mark Wielaard 6f7ad2
+#endif /* VGP_ppc64be_linux */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* ------------ amd64-{linux,darwin} ------------ */
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c
Mark Wielaard 6f7ad2
index c09d528..45b0fa7 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_machine.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_machine.c
Mark Wielaard 6f7ad2
@@ -81,7 +81,7 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs,
Mark Wielaard 6f7ad2
    regs->r_sp = (ULong)VG_(threads)[tid].arch.vex.guest_GPR1;
Mark Wielaard 6f7ad2
    regs->misc.PPC32.r_lr
Mark Wielaard 6f7ad2
       = VG_(threads)[tid].arch.vex.guest_LR;
Mark Wielaard 6f7ad2
-#  elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    regs->r_pc = VG_(threads)[tid].arch.vex.guest_CIA;
Mark Wielaard 6f7ad2
    regs->r_sp = VG_(threads)[tid].arch.vex.guest_GPR1;
Mark Wielaard 6f7ad2
    regs->misc.PPC64.r_lr
Mark Wielaard 6f7ad2
@@ -212,7 +212,7 @@ static void apply_to_GPs_of_tid(ThreadId tid, void (*f)(ThreadId,
Mark Wielaard 6f7ad2
    (*f)(tid, "R13", vex->guest_R13);
Mark Wielaard 6f7ad2
    (*f)(tid, "R14", vex->guest_R14);
Mark Wielaard 6f7ad2
    (*f)(tid, "R15", vex->guest_R15);
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    (*f)(tid, "GPR0" , vex->guest_GPR0 );
Mark Wielaard 6f7ad2
    (*f)(tid, "GPR1" , vex->guest_GPR1 );
Mark Wielaard 6f7ad2
    (*f)(tid, "GPR2" , vex->guest_GPR2 );
Mark Wielaard 6f7ad2
@@ -442,7 +442,7 @@ UInt VG_(machine_x86_have_mxcsr) = 0;
Mark Wielaard 6f7ad2
 UInt VG_(machine_ppc32_has_FP)  = 0;
Mark Wielaard 6f7ad2
 UInt VG_(machine_ppc32_has_VMX) = 0;
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 ULong VG_(machine_ppc64_has_VMX) = 0;
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
 #if defined(VGA_arm)
Mark Wielaard 6f7ad2
@@ -452,7 +452,7 @@ Int VG_(machine_arm_archlevel) = 4;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* For hwcaps detection on ppc32/64, s390x, and arm we'll need to do SIGILL
Mark Wielaard 6f7ad2
    testing, so we need a VG_MINIMAL_JMP_BUF. */
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc32) || defined(VGA_ppc64) \
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \
Mark Wielaard 6f7ad2
     || defined(VGA_arm) || defined(VGA_s390x) || defined(VGA_mips32)
Mark Wielaard 6f7ad2
 #include "pub_core_libcsetjmp.h"
Mark Wielaard 6f7ad2
 static VG_MINIMAL_JMP_BUF(env_unsup_insn);
Mark Wielaard 6f7ad2
@@ -470,7 +470,7 @@ static void handler_unsup_insn ( Int x ) {
Mark Wielaard 6f7ad2
  * Not very defensive: assumes that as long as the dcbz/dcbzl
Mark Wielaard 6f7ad2
  * instructions don't raise a SIGILL, that they will zero an aligned,
Mark Wielaard 6f7ad2
  * contiguous block of memory of a sensible size. */
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 static void find_ppc_dcbz_sz(VexArchInfo *arch_info)
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
    Int dcbz_szB = 0;
Mark Wielaard 6f7ad2
@@ -523,7 +523,7 @@ static void find_ppc_dcbz_sz(VexArchInfo *arch_info)
Mark Wielaard 6f7ad2
                  dcbz_szB, dcbzl_szB);
Mark Wielaard 6f7ad2
 #  undef MAX_DCBZL_SZB
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
-#endif /* defined(VGA_ppc32) || defined(VGA_ppc64) */
Mark Wielaard 6f7ad2
+#endif /* defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #ifdef VGA_s390x
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -1064,7 +1064,7 @@ Bool VG_(machine_get_hwcaps)( void )
Mark Wielaard 6f7ad2
      return True;
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be)|| defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    {
Mark Wielaard 6f7ad2
      /* Same instruction set detection algorithm as for ppc32. */
Mark Wielaard 6f7ad2
      vki_sigset_t          saved_set, tmp_set;
Mark Wielaard 6f7ad2
@@ -1178,7 +1178,7 @@ Bool VG_(machine_get_hwcaps)( void )
Mark Wielaard 6f7ad2
                     (Int)have_F, (Int)have_V, (Int)have_FX,
Mark Wielaard 6f7ad2
                     (Int)have_GX, (Int)have_VX, (Int)have_DFP,
Mark Wielaard 6f7ad2
                     (Int)have_isa_2_07);
Mark Wielaard 6f7ad2
-     /* on ppc64, if we don't even have FP, just give up. */
Mark Wielaard 6f7ad2
+     /* on ppc64be, if we don't even have FP, just give up. */
Mark Wielaard 6f7ad2
      if (!have_F)
Mark Wielaard 6f7ad2
         return False;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -1599,7 +1599,7 @@ void VG_(machine_ppc32_set_clszB)( Int szB )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* Notify host cpu instruction cache line size. */
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc64be)|| defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 void VG_(machine_ppc64_set_clszB)( Int szB )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
    vg_assert(hwcaps_done);
Mark Wielaard 6f7ad2
@@ -1681,7 +1681,7 @@ Int VG_(machine_get_size_of_largest_guest_register) ( void )
Mark Wielaard 6f7ad2
    if (vai.hwcaps & VEX_HWCAPS_PPC32_DFP) return 16;
Mark Wielaard 6f7ad2
    return 8;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    /* 8 if boring; 16 if signs of Altivec or other exotic stuff */
Mark Wielaard 6f7ad2
    if (vai.hwcaps & VEX_HWCAPS_PPC64_V) return 16;
Mark Wielaard 6f7ad2
    if (vai.hwcaps & VEX_HWCAPS_PPC64_VX) return 16;
Mark Wielaard 6f7ad2
@@ -1719,12 +1719,12 @@ Int VG_(machine_get_size_of_largest_guest_register) ( void )
Mark Wielaard 6f7ad2
 void* VG_(fnptr_to_fnentry)( void* f )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
 #  if defined(VGP_x86_linux) || defined(VGP_amd64_linux)  \
Mark Wielaard 6f7ad2
-      || defined(VGP_arm_linux)                           \
Mark Wielaard 6f7ad2
-      || defined(VGP_ppc32_linux) || defined(VGO_darwin)  \
Mark Wielaard 6f7ad2
+      || defined(VGP_arm_linux) || defined(VGO_darwin)          \
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc32_linux) || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
       || defined(VGP_s390x_linux) || defined(VGP_mips32_linux) \
Mark Wielaard 6f7ad2
       || defined(VGP_mips64_linux) || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
    return f;
Mark Wielaard 6f7ad2
-#  elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  elif defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    /* ppc64-linux uses the AIX scheme, in which f is a pointer to a
Mark Wielaard 6f7ad2
       3-word function descriptor, of which the first word is the entry
Mark Wielaard 6f7ad2
       address. */
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_main.c b/coregrind/m_main.c
Mark Wielaard 6f7ad2
index d2ce001..96ef31c 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_main.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_main.c
Mark Wielaard 6f7ad2
@@ -2023,7 +2023,8 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #     if defined(VGP_x86_linux)
Mark Wielaard 6f7ad2
       iters = 10;
Mark Wielaard 6f7ad2
-#     elif defined(VGP_amd64_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#     elif defined(VGP_amd64_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+         || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
       iters = 10;
Mark Wielaard 6f7ad2
 #     elif defined(VGP_ppc32_linux)
Mark Wielaard 6f7ad2
       iters = 5;
Mark Wielaard 6f7ad2
@@ -2602,7 +2603,7 @@ void shutdown_actions_NORETURN( ThreadId tid,
Mark Wielaard 6f7ad2
 static void final_tidyup(ThreadId tid)
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
 #if !defined(VGO_darwin)
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    Addr r2;
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
    Addr __libc_freeres_wrapper = VG_(client___libc_freeres_wrapper);
Mark Wielaard 6f7ad2
@@ -2614,7 +2615,7 @@ static void final_tidyup(ThreadId tid)
Mark Wielaard 6f7ad2
         0 == __libc_freeres_wrapper )
Mark Wielaard 6f7ad2
       return;			/* can't/won't do it */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    r2 = VG_(get_tocptr)( __libc_freeres_wrapper );
Mark Wielaard 6f7ad2
    if (r2 == 0) {
Mark Wielaard 6f7ad2
       VG_(message)(Vg_UserMsg, 
Mark Wielaard 6f7ad2
@@ -2632,12 +2633,12 @@ static void final_tidyup(ThreadId tid)
Mark Wielaard 6f7ad2
 		   "Caught __NR_exit; running __libc_freeres()\n");
Mark Wielaard 6f7ad2
       
Mark Wielaard 6f7ad2
    /* set thread context to point to libc_freeres_wrapper */
Mark Wielaard 6f7ad2
-   /* ppc64-linux note: __libc_freeres_wrapper gives us the real
Mark Wielaard 6f7ad2
+   /* ppc64be-linux note: __libc_freeres_wrapper gives us the real
Mark Wielaard 6f7ad2
       function entry point, not a fn descriptor, so can use it
Mark Wielaard 6f7ad2
       directly.  However, we need to set R2 (the toc pointer)
Mark Wielaard 6f7ad2
       appropriately. */
Mark Wielaard 6f7ad2
    VG_(set_IP)(tid, __libc_freeres_wrapper);
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    VG_(threads)[tid].arch.vex.guest_GPR2 = r2;
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
    /* mips-linux note: we need to set t9 */
Mark Wielaard 6f7ad2
@@ -2834,7 +2835,7 @@ asm("\n"
Mark Wielaard 6f7ad2
     "\ttrap\n"
Mark Wielaard 6f7ad2
     ".previous\n"
Mark Wielaard 6f7ad2
 );
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
 asm("\n"
Mark Wielaard 6f7ad2
     /* PPC64 ELF ABI says '_start' points to a function descriptor.
Mark Wielaard 6f7ad2
        So we must have one, and that is what goes into the .opd section. */
Mark Wielaard 6f7ad2
@@ -3093,10 +3094,10 @@ void _start_in_C_linux ( UWord* pArgc )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    the_iicii.sp_at_startup = (Addr)pArgc;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux) \
Mark Wielaard 6f7ad2
-      || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64le_linux) || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
    {
Mark Wielaard 6f7ad2
-      /* ppc/ppc64 can be configured with different page sizes.
Mark Wielaard 6f7ad2
+      /* ppc32/ppc64 can be configured with different page sizes.
Mark Wielaard 6f7ad2
          Determine this early.  This is an ugly hack and really should
Mark Wielaard 6f7ad2
          be moved into valgrind_main. */
Mark Wielaard 6f7ad2
       UWord *sp = &pArgc[1+argc+1];
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c
Mark Wielaard 6f7ad2
index b13b3fb..dc77119 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_redir.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_redir.c
Mark Wielaard 6f7ad2
@@ -1278,7 +1278,7 @@ void VG_(redir_initialise) ( void )
Mark Wielaard 6f7ad2
       );
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  elif defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    /* If we're using memcheck, use these intercepts right from
Mark Wielaard 6f7ad2
       the start, otherwise ld.so makes a lot of noise. */
Mark Wielaard 6f7ad2
    if (0==VG_(strcmp)("Memcheck", VG_(details).name)) {
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c
Mark Wielaard 6f7ad2
index 8808abc..64d45cb 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_scheduler/scheduler.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_scheduler/scheduler.c
Mark Wielaard 6f7ad2
@@ -768,7 +768,7 @@ static void do_pre_run_checks ( ThreadState* tst )
Mark Wielaard 6f7ad2
    vg_assert(VG_IS_8_ALIGNED(offsetof(VexGuestAMD64State,guest_RIP)));
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    /* ppc guest_state vector regs must be 16 byte aligned for
Mark Wielaard 6f7ad2
       loads/stores.  This is important! */
Mark Wielaard 6f7ad2
    vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex.guest_VSR0));
Mark Wielaard 6f7ad2
@@ -1622,7 +1622,7 @@ void VG_(nuke_all_threads_except) ( ThreadId me, VgSchedReturnCode src )
Mark Wielaard 6f7ad2
 #elif defined(VGA_amd64)
Mark Wielaard 6f7ad2
 #  define VG_CLREQ_ARGS       guest_RAX
Mark Wielaard 6f7ad2
 #  define VG_CLREQ_RET        guest_RDX
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #  define VG_CLREQ_ARGS       guest_GPR4
Mark Wielaard 6f7ad2
 #  define VG_CLREQ_RET        guest_GPR3
Mark Wielaard 6f7ad2
 #elif defined(VGA_arm)
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_sigframe/sigframe-ppc64-linux.c b/coregrind/m_sigframe/sigframe-ppc64-linux.c
Mark Wielaard 6f7ad2
index 3e5fa74..bb53806 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_sigframe/sigframe-ppc64-linux.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_sigframe/sigframe-ppc64-linux.c
Mark Wielaard 6f7ad2
@@ -31,7 +31,7 @@
Mark Wielaard 6f7ad2
    The GNU General Public License is contained in the file COPYING.
Mark Wielaard 6f7ad2
 */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #include "pub_core_basics.h"
Mark Wielaard 6f7ad2
 #include "pub_core_vki.h"
Mark Wielaard 6f7ad2
@@ -388,7 +388,7 @@ void VG_(sigframe_destroy)( ThreadId tid, Bool isRT )
Mark Wielaard 6f7ad2
    VG_TRACK( post_deliver_signal, tid, sigNo );
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#endif // defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#endif // defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) 
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /*--------------------------------------------------------------------*/
Mark Wielaard 6f7ad2
 /*--- end                                                          ---*/
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_signals.c b/coregrind/m_signals.c
Mark Wielaard 6f7ad2
index 40bd7ea..0fd11c4 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_signals.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_signals.c
Mark Wielaard 6f7ad2
@@ -348,7 +348,7 @@ typedef struct SigQueue {
Mark Wielaard 6f7ad2
         (srP)->misc.PPC32.r_lr = (uc)->uc_regs->mc_gregs[VKI_PT_LNK]; \
Mark Wielaard 6f7ad2
       }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 #  define VG_UCONTEXT_INSTR_PTR(uc)  ((uc)->uc_mcontext.gp_regs[VKI_PT_NIP])
Mark Wielaard 6f7ad2
 #  define VG_UCONTEXT_STACK_PTR(uc)  ((uc)->uc_mcontext.gp_regs[VKI_PT_R1])
Mark Wielaard 6f7ad2
    /* Dubious hack: if there is an error, only consider the lowest 8
Mark Wielaard 6f7ad2
@@ -851,7 +851,7 @@ extern void my_sigreturn(void);
Mark Wielaard 6f7ad2
    "	sc\n" \
Mark Wielaard 6f7ad2
    ".previous\n"
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
 #  define _MY_SIGRETURN(name) \
Mark Wielaard 6f7ad2
    ".align   2\n" \
Mark Wielaard 6f7ad2
    ".globl   my_sigreturn\n" \
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c
Mark Wielaard 6f7ad2
index 6e73e17..64e1ac4 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_stacktrace.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_stacktrace.c
Mark Wielaard 6f7ad2
@@ -622,7 +622,8 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* -----------------------ppc32/64 ---------------------- */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+    || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
Mark Wielaard 6f7ad2
                                /*OUT*/Addr* ips, UInt max_n_ips,
Mark Wielaard 6f7ad2
@@ -631,7 +632,7 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
Mark Wielaard 6f7ad2
                                Addr fp_max_orig )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
    Bool  lr_is_first_RA = False;
Mark Wielaard 6f7ad2
-#  if defined(VG_PLAT_USES_PPCTOC)
Mark Wielaard 6f7ad2
+#  if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    Word redir_stack_size = 0;
Mark Wielaard 6f7ad2
    Word redirs_used      = 0;
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
@@ -650,7 +651,7 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
Mark Wielaard 6f7ad2
    Addr fp = sp;
Mark Wielaard 6f7ad2
 #  if defined(VGP_ppc32_linux)
Mark Wielaard 6f7ad2
    Addr lr = startRegs->misc.PPC32.r_lr;
Mark Wielaard 6f7ad2
-#  elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    Addr lr = startRegs->misc.PPC64.r_lr;
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
    Addr fp_min = sp;
Mark Wielaard 6f7ad2
@@ -686,7 +687,7 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
Mark Wielaard 6f7ad2
    /* fp is %r1.  ip is %cia.  Note, ppc uses r1 as both the stack and
Mark Wielaard 6f7ad2
       frame pointers. */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    redir_stack_size = VEX_GUEST_PPC64_REDIR_STACK_SIZE;
Mark Wielaard 6f7ad2
    redirs_used      = 0;
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
@@ -742,7 +743,7 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
Mark Wielaard 6f7ad2
         /* On ppc64-linux (ppc64-elf, really), the lr save
Mark Wielaard 6f7ad2
            slot is 2 words back from sp, whereas on ppc32-elf(?) it's
Mark Wielaard 6f7ad2
            only one word back. */
Mark Wielaard 6f7ad2
-#        if defined(VG_PLAT_USES_PPCTOC)
Mark Wielaard 6f7ad2
+#        if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
          const Int lr_offset = 2;
Mark Wielaard 6f7ad2
 #        else
Mark Wielaard 6f7ad2
          const Int lr_offset = 1;
Mark Wielaard 6f7ad2
@@ -761,7 +762,7 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
Mark Wielaard 6f7ad2
             else
Mark Wielaard 6f7ad2
                ip = (((UWord*)fp)[lr_offset]);
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#           if defined(VG_PLAT_USES_PPCTOC)
Mark Wielaard 6f7ad2
+#           if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
             /* Nasty hack to do with function replacement/wrapping on
Mark Wielaard 6f7ad2
                ppc64-linux.  If LR points to our magic return stub,
Mark Wielaard 6f7ad2
                then we are in a wrapped or intercepted function, in
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_syscall.c b/coregrind/m_syscall.c
Mark Wielaard 6f7ad2
index 161be15..b111e5c 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_syscall.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_syscall.c
Mark Wielaard 6f7ad2
@@ -386,7 +386,7 @@ asm(
Mark Wielaard 6f7ad2
 ".previous\n"
Mark Wielaard 6f7ad2
 );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
 /* Due to the need to return 65 bits of result, this is completely
Mark Wielaard 6f7ad2
    different from the ppc32 case.  The single arg register points to a
Mark Wielaard 6f7ad2
    7-word block containing the syscall # and the 6 args.  The syscall
Mark Wielaard 6f7ad2
@@ -720,7 +720,7 @@ SysRes VG_(do_syscall) ( UWord sysno, UWord a1, UWord a2, UWord a3,
Mark Wielaard 6f7ad2
    UInt  cr0so   = (UInt)(ret);
Mark Wielaard 6f7ad2
    return VG_(mk_SysRes_ppc32_linux)( val, cr0so );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    ULong argblock[7];
Mark Wielaard 6f7ad2
    argblock[0] = sysno;
Mark Wielaard 6f7ad2
    argblock[1] = a1;
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_syswrap/priv_types_n_macros.h b/coregrind/m_syswrap/priv_types_n_macros.h
Mark Wielaard 6f7ad2
index 325c53a..e69bdf3 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_syswrap/priv_types_n_macros.h
Mark Wielaard 6f7ad2
+++ b/coregrind/m_syswrap/priv_types_n_macros.h
Mark Wielaard 6f7ad2
@@ -90,7 +90,8 @@ typedef
Mark Wielaard 6f7ad2
       // field names), the s_arg value is the offset from the stack pointer.
Mark Wielaard 6f7ad2
       Int o_sysno;
Mark Wielaard 6f7ad2
 #     if defined(VGP_x86_linux) || defined(VGP_amd64_linux) \
Mark Wielaard 6f7ad2
-         || defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux) \
Mark Wielaard 6f7ad2
+         || defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
+         || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \
Mark Wielaard 6f7ad2
          || defined(VGP_arm_linux) || defined(VGP_s390x_linux) \
Mark Wielaard 6f7ad2
          || defined(VGP_mips64_linux) || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
       Int o_arg1;
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_syswrap/syscall-ppc64-linux.S b/coregrind/m_syswrap/syscall-ppc64-linux.S
Mark Wielaard 6f7ad2
index 30ae594..df73940 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_syswrap/syscall-ppc64-linux.S
Mark Wielaard 6f7ad2
+++ b/coregrind/m_syswrap/syscall-ppc64-linux.S
Mark Wielaard 6f7ad2
@@ -27,7 +27,7 @@
Mark Wielaard 6f7ad2
   The GNU General Public License is contained in the file COPYING.
Mark Wielaard 6f7ad2
 */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #include "pub_core_basics_asm.h"
Mark Wielaard 6f7ad2
 #include "pub_core_vkiscnums_asm.h"
Mark Wielaard 6f7ad2
@@ -165,7 +165,7 @@ ML_(blksys_finished):  .quad 5b
Mark Wielaard 6f7ad2
 /* Let the linker know we don't need an executable stack */
Mark Wielaard 6f7ad2
 .section .note.GNU-stack,"",@progbits
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#endif // defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#endif // defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /*--------------------------------------------------------------------*/
Mark Wielaard 6f7ad2
 /*--- end                                                          ---*/
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c
Mark Wielaard 6f7ad2
index c195ca2..d224207 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_syswrap/syswrap-linux.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_syswrap/syswrap-linux.c
Mark Wielaard 6f7ad2
@@ -244,7 +244,8 @@ static void run_a_thread_NORETURN ( Word tidW )
Mark Wielaard 6f7ad2
          : "n" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)
Mark Wielaard 6f7ad2
          : "rax", "rdi"
Mark Wielaard 6f7ad2
       );
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+      || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
       { UInt vgts_empty = (UInt)VgTs_Empty;
Mark Wielaard 6f7ad2
         asm volatile (
Mark Wielaard 6f7ad2
           "stw %1,%0\n\t"          /* set tst->status = VgTs_Empty */
Mark Wielaard 6f7ad2
@@ -385,7 +386,7 @@ void VG_(main_thread_wrapper_NORETURN)(ThreadId tid)
Mark Wielaard 6f7ad2
    sp -= 16;
Mark Wielaard 6f7ad2
    sp &= ~0xF;
Mark Wielaard 6f7ad2
    *(UWord *)sp = 0;
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    /* make a stack frame */
Mark Wielaard 6f7ad2
    sp -= 112;
Mark Wielaard 6f7ad2
    sp &= ~((Addr)0xF);
Mark Wielaard 6f7ad2
@@ -438,7 +439,8 @@ SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags,
Mark Wielaard 6f7ad2
    /* Since this is the fork() form of clone, we don't need all that
Mark Wielaard 6f7ad2
       VG_(clone) stuff */
Mark Wielaard 6f7ad2
 #if defined(VGP_x86_linux) \
Mark Wielaard 6f7ad2
-    || defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux) \
Mark Wielaard 6f7ad2
+    || defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
+    || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)	\
Mark Wielaard 6f7ad2
     || defined(VGP_arm_linux) || defined(VGP_mips32_linux) \
Mark Wielaard 6f7ad2
     || defined(VGP_mips64_linux) || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
    res = VG_(do_syscall5)( __NR_clone, flags, 
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_syswrap/syswrap-main.c b/coregrind/m_syswrap/syswrap-main.c
Mark Wielaard 6f7ad2
index 8f25497..077a9b4 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_syswrap/syswrap-main.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_syswrap/syswrap-main.c
Mark Wielaard 6f7ad2
@@ -442,7 +442,7 @@ void getSyscallArgsFromGuestState ( /*OUT*/SyscallArgs*       canonical,
Mark Wielaard 6f7ad2
    canonical->arg7  = 0;
Mark Wielaard 6f7ad2
    canonical->arg8  = 0;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    VexGuestPPC64State* gst = (VexGuestPPC64State*)gst_vanilla;
Mark Wielaard 6f7ad2
    canonical->sysno = gst->guest_GPR0;
Mark Wielaard 6f7ad2
    canonical->arg1  = gst->guest_GPR3;
Mark Wielaard 6f7ad2
@@ -688,7 +688,7 @@ void putSyscallArgsIntoGuestState ( /*IN*/ SyscallArgs*       canonical,
Mark Wielaard 6f7ad2
    gst->guest_GPR7 = canonical->arg5;
Mark Wielaard 6f7ad2
    gst->guest_GPR8 = canonical->arg6;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    VexGuestPPC64State* gst = (VexGuestPPC64State*)gst_vanilla;
Mark Wielaard 6f7ad2
    gst->guest_GPR0 = canonical->sysno;
Mark Wielaard 6f7ad2
    gst->guest_GPR3 = canonical->arg1;
Mark Wielaard 6f7ad2
@@ -819,7 +819,7 @@ void getSyscallStatusFromGuestState ( /*OUT*/SyscallStatus*     canonical,
Mark Wielaard 6f7ad2
    canonical->sres = VG_(mk_SysRes_ppc32_linux)( gst->guest_GPR3, cr0so );
Mark Wielaard 6f7ad2
    canonical->what = SsComplete;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    VexGuestPPC64State* gst   = (VexGuestPPC64State*)gst_vanilla;
Mark Wielaard 6f7ad2
    UInt                cr    = LibVEX_GuestPPC64_get_CR( gst );
Mark Wielaard 6f7ad2
    UInt                cr0so = (cr >> 28) & 1;
Mark Wielaard 6f7ad2
@@ -977,7 +977,7 @@ void putSyscallStatusIntoGuestState ( /*IN*/ ThreadId tid,
Mark Wielaard 6f7ad2
    VG_TRACK( post_reg_write, Vg_CoreSysCall, tid, 
Mark Wielaard 6f7ad2
              OFFSET_ppc32_CR0_0, sizeof(UChar) );
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    VexGuestPPC64State* gst = (VexGuestPPC64State*)gst_vanilla;
Mark Wielaard 6f7ad2
    UInt old_cr = LibVEX_GuestPPC64_get_CR(gst);
Mark Wielaard 6f7ad2
    vg_assert(canonical->what == SsComplete);
Mark Wielaard 6f7ad2
@@ -1182,7 +1182,7 @@ void getSyscallArgLayout ( /*OUT*/SyscallArgLayout* layout )
Mark Wielaard 6f7ad2
    layout->uu_arg7  = -1; /* impossible value */
Mark Wielaard 6f7ad2
    layout->uu_arg8  = -1; /* impossible value */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    layout->o_sysno  = OFFSET_ppc64_GPR0;
Mark Wielaard 6f7ad2
    layout->o_arg1   = OFFSET_ppc64_GPR3;
Mark Wielaard 6f7ad2
    layout->o_arg2   = OFFSET_ppc64_GPR4;
Mark Wielaard 6f7ad2
@@ -1988,7 +1988,7 @@ void ML_(fixup_guest_state_to_restart_syscall) ( ThreadArchState* arch )
Mark Wielaard 6f7ad2
       vg_assert(p[0] == 0x0F && p[1] == 0x05);
Mark Wielaard 6f7ad2
    }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    arch->vex.guest_CIA -= 4;             // sizeof(ppc32 instr)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    /* Make sure our caller is actually sane, and we're really backing
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
Mark Wielaard 6f7ad2
index 4673dda..5d266b8 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
Mark Wielaard 6f7ad2
@@ -28,7 +28,7 @@
Mark Wielaard 6f7ad2
    The GNU General Public License is contained in the file COPYING.
Mark Wielaard 6f7ad2
 */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #include "pub_core_basics.h"
Mark Wielaard 6f7ad2
 #include "pub_core_vki.h"
Mark Wielaard 6f7ad2
@@ -1074,7 +1074,7 @@ SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
Mark Wielaard 6f7ad2
    return NULL;
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#endif // defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#endif // defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /*--------------------------------------------------------------------*/
Mark Wielaard 6f7ad2
 /*--- end                                                          ---*/
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S
Mark Wielaard 6f7ad2
index 5dd362c..c859bdd 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_trampoline.S
Mark Wielaard 6f7ad2
+++ b/coregrind/m_trampoline.S
Mark Wielaard 6f7ad2
@@ -416,7 +416,7 @@ VG_(trampoline_stuff_end):
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /*---------------- ppc64-linux ----------------*/
Mark Wielaard 6f7ad2
 #else
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #	define UD2_16     trap ; trap ; trap; trap
Mark Wielaard 6f7ad2
 #	define UD2_64     UD2_16   ; UD2_16   ; UD2_16   ; UD2_16
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_translate.c b/coregrind/m_translate.c
Mark Wielaard 6f7ad2
index d1757bb..0919394 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_translate.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_translate.c
Mark Wielaard 6f7ad2
@@ -868,7 +868,7 @@ static Bool chase_into_ok ( void* closureV, Addr64 addr64 )
Mark Wielaard 6f7ad2
    if (addr != VG_(redir_do_lookup)(addr, NULL))
Mark Wielaard 6f7ad2
       goto dontchase;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VG_PLAT_USES_PPCTOC)
Mark Wielaard 6f7ad2
+#  if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    /* This needs to be at the start of its own block.  Don't chase. Re
Mark Wielaard 6f7ad2
       ULong_to_Ptr, be careful to ensure we only compare 32 bits on a
Mark Wielaard 6f7ad2
       32-bit target.*/
Mark Wielaard 6f7ad2
@@ -918,7 +918,7 @@ static IRExpr* mkU32 ( UInt n ) {
Mark Wielaard 6f7ad2
    return IRExpr_Const(IRConst_U32(n));
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VG_PLAT_USES_PPCTOC)
Mark Wielaard 6f7ad2
+#if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 static IRExpr* mkU8 ( UChar n ) {
Mark Wielaard 6f7ad2
    return IRExpr_Const(IRConst_U8(n));
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
@@ -941,7 +941,7 @@ static void gen_PUSH ( IRSB* bb, IRExpr* e )
Mark Wielaard 6f7ad2
    IRTemp      t1;
Mark Wielaard 6f7ad2
    IRExpr*     one;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    Int    stack_size       = VEX_GUEST_PPC64_REDIR_STACK_SIZE;
Mark Wielaard 6f7ad2
    Int    offB_REDIR_SP    = offsetof(VexGuestPPC64State,guest_REDIR_SP);
Mark Wielaard 6f7ad2
    Int    offB_REDIR_STACK = offsetof(VexGuestPPC64State,guest_REDIR_STACK);
Mark Wielaard 6f7ad2
@@ -1035,7 +1035,7 @@ static void gen_PUSH ( IRSB* bb, IRExpr* e )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 static IRTemp gen_POP ( IRSB* bb )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    Int    stack_size       = VEX_GUEST_PPC64_REDIR_STACK_SIZE;
Mark Wielaard 6f7ad2
    Int    offB_REDIR_SP    = offsetof(VexGuestPPC64State,guest_REDIR_SP);
Mark Wielaard 6f7ad2
    Int    offB_REDIR_STACK = offsetof(VexGuestPPC64State,guest_REDIR_STACK);
Mark Wielaard 6f7ad2
@@ -1127,7 +1127,7 @@ static IRTemp gen_POP ( IRSB* bb )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 static void gen_push_and_set_LR_R2 ( IRSB* bb, Addr64 new_R2_value )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    Addr64 bogus_RA  = (Addr64)&VG_(ppctoc_magic_redirect_return_stub);
Mark Wielaard 6f7ad2
    Int    offB_GPR2 = offsetof(VexGuestPPC64State,guest_GPR2);
Mark Wielaard 6f7ad2
    Int    offB_LR   = offsetof(VexGuestPPC64State,guest_LR);
Mark Wielaard 6f7ad2
@@ -1143,7 +1143,7 @@ static void gen_push_and_set_LR_R2 ( IRSB* bb, Addr64 new_R2_value )
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)  || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
    Int    offB_GPR2 = offsetof(VexGuestPPC64State,guest_GPR2);
Mark Wielaard 6f7ad2
    Int    offB_LR   = offsetof(VexGuestPPC64State,guest_LR);
Mark Wielaard 6f7ad2
    Int    offB_CIA  = offsetof(VexGuestPPC64State,guest_CIA);
Mark Wielaard 6f7ad2
@@ -1277,7 +1277,7 @@ Bool mk_preamble__set_NRADDR_to_nraddr ( void* closureV, IRSB* bb )
Mark Wielaard 6f7ad2
    Int offB_GPR25 = offsetof(VexGuestMIPS64State, guest_r25);
Mark Wielaard 6f7ad2
    addStmtToIRSB(bb, IRStmt_Put(offB_GPR25, mkU64(closure->readdr)));
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    addStmtToIRSB( 
Mark Wielaard 6f7ad2
       bb,
Mark Wielaard 6f7ad2
       IRStmt_Put( 
Mark Wielaard 6f7ad2
@@ -1523,7 +1523,7 @@ Bool VG_(translate) ( ThreadId tid,
Mark Wielaard 6f7ad2
    vex_abiinfo.guest_ppc_zap_RZ_at_blr        = False;
Mark Wielaard 6f7ad2
    vex_abiinfo.guest_ppc_zap_RZ_at_bl         = NULL;
Mark Wielaard 6f7ad2
 #  endif
Mark Wielaard 6f7ad2
-#  if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#  if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    vex_abiinfo.guest_ppc_zap_RZ_at_blr        = True;
Mark Wielaard 6f7ad2
    vex_abiinfo.guest_ppc_zap_RZ_at_bl         = const_True;
Mark Wielaard 6f7ad2
    vex_abiinfo.host_ppc_calls_use_fndescrs    = True;
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_ume/elf.c b/coregrind/m_ume/elf.c
Mark Wielaard 6f7ad2
index 7d79f96..910bb7a 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_ume/elf.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_ume/elf.c
Mark Wielaard 6f7ad2
@@ -505,9 +505,9 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info)
Mark Wielaard 6f7ad2
    info->exe_base = minaddr + ebase;
Mark Wielaard 6f7ad2
    info->exe_end  = maxaddr + ebase;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
-   /* On PPC64, a func ptr is represented by a TOC entry ptr.  This
Mark Wielaard 6f7ad2
-      TOC entry contains three words; the first word is the function
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
+   /* On PPC64BE, ELF ver 1, a func ptr is represented by a TOC entry ptr.
Mark Wielaard 6f7ad2
+      This TOC entry contains three words; the first word is the function
Mark Wielaard 6f7ad2
       address, the second word is the TOC ptr (r2), and the third word
Mark Wielaard 6f7ad2
       is the static chain value. */
Mark Wielaard 6f7ad2
    info->init_ip  = ((ULong*)entry)[0];
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_ume/macho.c b/coregrind/m_ume/macho.c
Mark Wielaard 6f7ad2
index f79a561..7608811 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_ume/macho.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_ume/macho.c
Mark Wielaard 6f7ad2
@@ -699,8 +699,8 @@ load_fat_file(int fd, vki_off_t offset, vki_off_t size, unsigned long filetype,
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #if defined(VGA_ppc32)
Mark Wielaard 6f7ad2
    good_arch = CPU_TYPE_POWERPC;
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
-   good_arch = CPU_TYPE_POWERPC64;
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be)
Mark Wielaard 6f7ad2
+   good_arch = CPU_TYPE_POWERPC64BE;
Mark Wielaard 6f7ad2
 #elif defined(VGA_x86)
Mark Wielaard 6f7ad2
    good_arch = CPU_TYPE_I386;
Mark Wielaard 6f7ad2
 #elif defined(VGA_amd64)
Mark Wielaard 6f7ad2
diff --git a/coregrind/m_vki.c b/coregrind/m_vki.c
Mark Wielaard 6f7ad2
index 1563623..2e1626b 100644
Mark Wielaard 6f7ad2
--- a/coregrind/m_vki.c
Mark Wielaard 6f7ad2
+++ b/coregrind/m_vki.c
Mark Wielaard 6f7ad2
@@ -42,8 +42,8 @@
Mark Wielaard 6f7ad2
 /* ppc32/64-linux determines page size at startup, hence m_vki is
Mark Wielaard 6f7ad2
    the logical place to store that info. */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux) \
Mark Wielaard 6f7ad2
-    || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+    || defined(VGP_ppc64le_linux) || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
 unsigned long VKI_PAGE_SHIFT = 12;
Mark Wielaard 6f7ad2
 unsigned long VKI_PAGE_SIZE  = 1UL << 12;
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
diff --git a/coregrind/pub_core_aspacemgr.h b/coregrind/pub_core_aspacemgr.h
Mark Wielaard 6f7ad2
index ba5df5a..4dd62cb 100644
Mark Wielaard 6f7ad2
--- a/coregrind/pub_core_aspacemgr.h
Mark Wielaard 6f7ad2
+++ b/coregrind/pub_core_aspacemgr.h
Mark Wielaard 6f7ad2
@@ -334,7 +334,8 @@ extern Bool VG_(am_relocate_nooverlap_client)( /*OUT*/Bool* need_discard,
Mark Wielaard 6f7ad2
 // stacks.  The address space manager provides and suitably
Mark Wielaard 6f7ad2
 // protects such stacks.
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux) \
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc32_linux) \
Mark Wielaard 6f7ad2
+    || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)	\
Mark Wielaard 6f7ad2
     || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \
Mark Wielaard 6f7ad2
     || defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
 # define VG_STACK_GUARD_SZB  65536  // 1 or 16 pages
Mark Wielaard 6f7ad2
diff --git a/coregrind/pub_core_basics.h b/coregrind/pub_core_basics.h
Mark Wielaard 6f7ad2
index 2959015..05b3d66 100644
Mark Wielaard 6f7ad2
--- a/coregrind/pub_core_basics.h
Mark Wielaard 6f7ad2
+++ b/coregrind/pub_core_basics.h
Mark Wielaard 6f7ad2
@@ -54,7 +54,7 @@
Mark Wielaard 6f7ad2
 #  include "libvex_guest_amd64.h"
Mark Wielaard 6f7ad2
 #elif defined(VGA_ppc32)
Mark Wielaard 6f7ad2
 #  include "libvex_guest_ppc32.h"
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #  include "libvex_guest_ppc64.h"
Mark Wielaard 6f7ad2
 #elif defined(VGA_arm)
Mark Wielaard 6f7ad2
 #  include "libvex_guest_arm.h"
Mark Wielaard 6f7ad2
diff --git a/coregrind/pub_core_debuginfo.h b/coregrind/pub_core_debuginfo.h
Mark Wielaard 6f7ad2
index 697969a..5e93793 100644
Mark Wielaard 6f7ad2
--- a/coregrind/pub_core_debuginfo.h
Mark Wielaard 6f7ad2
+++ b/coregrind/pub_core_debuginfo.h
Mark Wielaard 6f7ad2
@@ -118,7 +118,7 @@ typedef
Mark Wielaard 6f7ad2
 typedef
Mark Wielaard 6f7ad2
    struct { Addr pc; Addr sp; Addr x30; Addr x29; } /* PC, SP, LR, FP */
Mark Wielaard 6f7ad2
    D3UnwindRegs;
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 typedef
Mark Wielaard 6f7ad2
    UChar  /* should be void, but gcc complains at use points */
Mark Wielaard 6f7ad2
    D3UnwindRegs;
Mark Wielaard 6f7ad2
diff --git a/coregrind/pub_core_machine.h b/coregrind/pub_core_machine.h
Mark Wielaard 6f7ad2
index 0cd5cf8..f1d839a 100644
Mark Wielaard 6f7ad2
--- a/coregrind/pub_core_machine.h
Mark Wielaard 6f7ad2
+++ b/coregrind/pub_core_machine.h
Mark Wielaard 6f7ad2
@@ -56,7 +56,7 @@
Mark Wielaard 6f7ad2
 #  define VG_ELF_MACHINE      EM_PPC
Mark Wielaard 6f7ad2
 #  define VG_ELF_CLASS        ELFCLASS32
Mark Wielaard 6f7ad2
 #  undef  VG_PLAT_USES_PPCTOC
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
 #  define VG_ELF_DATA2XXX     ELFDATA2MSB
Mark Wielaard 6f7ad2
 #  define VG_ELF_MACHINE      EM_PPC64
Mark Wielaard 6f7ad2
 #  define VG_ELF_CLASS        ELFCLASS64
Mark Wielaard 6f7ad2
@@ -119,7 +119,7 @@
Mark Wielaard 6f7ad2
 #  define VG_INSTR_PTR        guest_CIA
Mark Wielaard 6f7ad2
 #  define VG_STACK_PTR        guest_GPR1
Mark Wielaard 6f7ad2
 #  define VG_FRAME_PTR        guest_GPR1   // No frame ptr for PPC
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #  define VG_INSTR_PTR        guest_CIA
Mark Wielaard 6f7ad2
 #  define VG_STACK_PTR        guest_GPR1
Mark Wielaard 6f7ad2
 #  define VG_FRAME_PTR        guest_GPR1   // No frame ptr for PPC
Mark Wielaard 6f7ad2
@@ -233,7 +233,7 @@ extern Bool VG_(machine_get_cache_info)( VexArchInfo * );
Mark Wielaard 6f7ad2
 extern void VG_(machine_ppc32_set_clszB)( Int );
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 extern void VG_(machine_ppc64_set_clszB)( Int );
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -265,7 +265,7 @@ extern UInt VG_(machine_ppc32_has_VMX);
Mark Wielaard 6f7ad2
 /* PPC64: set to 1 if Altivec instructions are supported in
Mark Wielaard 6f7ad2
    user-space, else 0.  Is referenced from assembly code, so do not
Mark Wielaard 6f7ad2
    change from a 64-bit int. */
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 extern ULong VG_(machine_ppc64_has_VMX);
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
diff --git a/coregrind/pub_core_mallocfree.h b/coregrind/pub_core_mallocfree.h
Mark Wielaard 6f7ad2
index 552da97..fafe707 100644
Mark Wielaard 6f7ad2
--- a/coregrind/pub_core_mallocfree.h
Mark Wielaard 6f7ad2
+++ b/coregrind/pub_core_mallocfree.h
Mark Wielaard 6f7ad2
@@ -71,13 +71,14 @@ typedef Int ArenaId;
Mark Wielaard 6f7ad2
 // for any AltiVec- or SSE-related type.  This matches the Darwin libc.
Mark Wielaard 6f7ad2
 // Also, use 16 bytes for any PPC variant, since 16 is required to make
Mark Wielaard 6f7ad2
 // Altiveccery work right.
Mark Wielaard 6f7ad2
-#elif defined(VGP_amd64_linux)  || \
Mark Wielaard 6f7ad2
-      defined(VGP_ppc32_linux)  || \
Mark Wielaard 6f7ad2
-      defined(VGP_ppc64_linux)  || \
Mark Wielaard 6f7ad2
-      defined(VGP_s390x_linux)  || \
Mark Wielaard 6f7ad2
-      defined(VGP_mips64_linux) || \
Mark Wielaard 6f7ad2
-      defined(VGP_x86_darwin)   || \
Mark Wielaard 6f7ad2
-      defined(VGP_amd64_darwin) || \
Mark Wielaard 6f7ad2
+#elif defined(VGP_amd64_linux)    || \
Mark Wielaard 6f7ad2
+      defined(VGP_ppc32_linux)    || \
Mark Wielaard 6f7ad2
+      defined(VGP_ppc64be_linux)  || \
Mark Wielaard 6f7ad2
+      defined(VGP_ppc64le_linux)  || \
Mark Wielaard 6f7ad2
+      defined(VGP_s390x_linux)    || \
Mark Wielaard 6f7ad2
+      defined(VGP_mips64_linux)   || \
Mark Wielaard 6f7ad2
+      defined(VGP_x86_darwin)     || \
Mark Wielaard 6f7ad2
+      defined(VGP_amd64_darwin)   || \
Mark Wielaard 6f7ad2
       defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
 #  define VG_MIN_MALLOC_SZB       16
Mark Wielaard 6f7ad2
 #else
Mark Wielaard 6f7ad2
diff --git a/coregrind/pub_core_threadstate.h b/coregrind/pub_core_threadstate.h
Mark Wielaard 6f7ad2
index ad6ff82..c2ebb1c 100644
Mark Wielaard 6f7ad2
--- a/coregrind/pub_core_threadstate.h
Mark Wielaard 6f7ad2
+++ b/coregrind/pub_core_threadstate.h
Mark Wielaard 6f7ad2
@@ -84,7 +84,7 @@ typedef
Mark Wielaard 6f7ad2
    typedef VexGuestAMD64State VexGuestArchState;
Mark Wielaard 6f7ad2
 #elif defined(VGA_ppc32)
Mark Wielaard 6f7ad2
    typedef VexGuestPPC32State VexGuestArchState;
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    typedef VexGuestPPC64State VexGuestArchState;
Mark Wielaard 6f7ad2
 #elif defined(VGA_arm)
Mark Wielaard 6f7ad2
    typedef VexGuestARMState   VexGuestArchState;
Mark Wielaard 6f7ad2
diff --git a/coregrind/pub_core_trampoline.h b/coregrind/pub_core_trampoline.h
Mark Wielaard 6f7ad2
index 96710fe..b4c056b 100644
Mark Wielaard 6f7ad2
--- a/coregrind/pub_core_trampoline.h
Mark Wielaard 6f7ad2
+++ b/coregrind/pub_core_trampoline.h
Mark Wielaard 6f7ad2
@@ -81,7 +81,7 @@ extern UInt  VG_(ppc32_linux_REDIR_FOR_strcmp)( void*, void* );
Mark Wielaard 6f7ad2
 extern void* VG_(ppc32_linux_REDIR_FOR_strchr)( void*, Int );
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 extern Addr  VG_(ppc64_linux_SUBST_FOR_rt_sigreturn);
Mark Wielaard 6f7ad2
 extern UInt  VG_(ppc64_linux_REDIR_FOR_strlen)( void* );
Mark Wielaard 6f7ad2
 extern void* VG_(ppc64_linux_REDIR_FOR_strchr)( void*, Int );
Mark Wielaard 6f7ad2
diff --git a/coregrind/pub_core_transtab_asm.h b/coregrind/pub_core_transtab_asm.h
Mark Wielaard 6f7ad2
index 2a3f0f1..b063d54 100644
Mark Wielaard 6f7ad2
--- a/coregrind/pub_core_transtab_asm.h
Mark Wielaard 6f7ad2
+++ b/coregrind/pub_core_transtab_asm.h
Mark Wielaard 6f7ad2
@@ -62,8 +62,8 @@
Mark Wielaard 6f7ad2
 #elif defined(VGA_s390x) || defined(VGA_arm)
Mark Wielaard 6f7ad2
 #  define VG_TT_FAST_HASH(_addr)  ((((UWord)(_addr)) >> 1) & VG_TT_FAST_MASK)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_mips32) \
Mark Wielaard 6f7ad2
-      || defined(VGA_mips64) || defined(VGA_arm64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \
Mark Wielaard 6f7ad2
+      || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_arm64)
Mark Wielaard 6f7ad2
 #  define VG_TT_FAST_HASH(_addr)  ((((UWord)(_addr)) >> 2) & VG_TT_FAST_MASK)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #else
Mark Wielaard 6f7ad2
diff --git a/coregrind/vgdb-invoker-ptrace.c b/coregrind/vgdb-invoker-ptrace.c
Mark Wielaard 6f7ad2
index 0ad631a..bad4df5 100644
Mark Wielaard 6f7ad2
--- a/coregrind/vgdb-invoker-ptrace.c
Mark Wielaard 6f7ad2
+++ b/coregrind/vgdb-invoker-ptrace.c
Mark Wielaard 6f7ad2
@@ -843,7 +843,7 @@ Bool invoker_invoke_gdbserver (pid_t pid)
Mark Wielaard 6f7ad2
    sp = user_mod.sp;
Mark Wielaard 6f7ad2
 #elif defined(VGA_ppc32)
Mark Wielaard 6f7ad2
    sp = user_mod.regs.gpr[1];
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    sp = user_mod.regs.gpr[1];
Mark Wielaard 6f7ad2
 #elif defined(VGA_s390x)
Mark Wielaard 6f7ad2
    sp = user_mod.regs.gprs[15];
Mark Wielaard 6f7ad2
@@ -907,7 +907,7 @@ Bool invoker_invoke_gdbserver (pid_t pid)
Mark Wielaard 6f7ad2
       I_die_here : not x86 or amd64 in x86/amd64 section/
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
       user_mod.regs.nip = shared32->invoke_gdbserver;
Mark Wielaard 6f7ad2
       user_mod.regs.trap = -1L;
Mark Wielaard 6f7ad2
       /* put check arg in register 3 */
Mark Wielaard 6f7ad2
@@ -984,7 +984,7 @@ Bool invoker_invoke_gdbserver (pid_t pid)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #elif defined(VGA_ppc32)
Mark Wielaard 6f7ad2
       assert(0); // cannot vgdb a 64 bits executable with a 32 bits exe
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be)
Mark Wielaard 6f7ad2
       Addr64 func_addr;
Mark Wielaard 6f7ad2
       Addr64 toc_addr;
Mark Wielaard 6f7ad2
       int rw;
Mark Wielaard 6f7ad2
diff --git a/drd/drd_bitmap.h b/drd/drd_bitmap.h
Mark Wielaard 6f7ad2
index 939afe4..86d53f3 100644
Mark Wielaard 6f7ad2
--- a/drd/drd_bitmap.h
Mark Wielaard 6f7ad2
+++ b/drd/drd_bitmap.h
Mark Wielaard 6f7ad2
@@ -139,8 +139,8 @@ Addr make_address(const UWord a1, const UWord a0)
Mark Wielaard 6f7ad2
 #if defined(VGA_x86) || defined(VGA_ppc32) || defined(VGA_arm) \
Mark Wielaard 6f7ad2
     || defined(VGA_mips32)
Mark Wielaard 6f7ad2
 #define BITS_PER_BITS_PER_UWORD 5
Mark Wielaard 6f7ad2
-#elif defined(VGA_amd64) || defined(VGA_ppc64) || defined(VGA_s390x) \
Mark Wielaard 6f7ad2
-      || defined(VGA_mips64) || defined(VGA_arm64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_amd64) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \
Mark Wielaard 6f7ad2
+      || defined(VGA_s390x) || defined(VGA_mips64) || defined(VGA_arm64)
Mark Wielaard 6f7ad2
 #define BITS_PER_BITS_PER_UWORD 6
Mark Wielaard 6f7ad2
 #else
Mark Wielaard 6f7ad2
 #error Unknown platform.
Mark Wielaard 6f7ad2
diff --git a/drd/drd_load_store.c b/drd/drd_load_store.c
Mark Wielaard 6f7ad2
index 59c2e36..973bdda 100644
Mark Wielaard 6f7ad2
--- a/drd/drd_load_store.c
Mark Wielaard 6f7ad2
+++ b/drd/drd_load_store.c
Mark Wielaard 6f7ad2
@@ -43,7 +43,7 @@
Mark Wielaard 6f7ad2
 #define STACK_POINTER_OFFSET OFFSET_amd64_RSP
Mark Wielaard 6f7ad2
 #elif defined(VGA_ppc32)
Mark Wielaard 6f7ad2
 #define STACK_POINTER_OFFSET OFFSET_ppc32_GPR1
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #define STACK_POINTER_OFFSET OFFSET_ppc64_GPR1
Mark Wielaard 6f7ad2
 #elif defined(VGA_arm)
Mark Wielaard 6f7ad2
 #define STACK_POINTER_OFFSET OFFSET_arm_R13
Mark Wielaard 6f7ad2
diff --git a/drd/tests/unit_bitmap.c b/drd/tests/unit_bitmap.c
Mark Wielaard 6f7ad2
index e537e6d..6e8064a 100644
Mark Wielaard 6f7ad2
--- a/drd/tests/unit_bitmap.c
Mark Wielaard 6f7ad2
+++ b/drd/tests/unit_bitmap.c
Mark Wielaard 6f7ad2
@@ -83,7 +83,8 @@ struct { Addr address; SizeT size; BmAccessTypeT access_type; }
Mark Wielaard 6f7ad2
     {               0x00ffffffULL, 1, eLoad  },
Mark Wielaard 6f7ad2
     { 0xffffffffULL - (((1 << ADDR_LSB_BITS) + 1) << ADDR_IGNORED_BITS),
Mark Wielaard 6f7ad2
                                    1, eStore },
Mark Wielaard 6f7ad2
-#if defined(VGP_amd64_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_amd64_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+    || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
     { 0xffffffffULL - (1 << ADDR_LSB_BITS << ADDR_IGNORED_BITS),
Mark Wielaard 6f7ad2
                                    1, eStore },
Mark Wielaard 6f7ad2
     {               0xffffffffULL, 1, eStore },
Mark Wielaard 6f7ad2
diff --git a/helgrind/tests/annotate_hbefore.c b/helgrind/tests/annotate_hbefore.c
Mark Wielaard 6f7ad2
index 3368c56..74cf9d8 100644
Mark Wielaard 6f7ad2
--- a/helgrind/tests/annotate_hbefore.c
Mark Wielaard 6f7ad2
+++ b/helgrind/tests/annotate_hbefore.c
Mark Wielaard 6f7ad2
@@ -20,7 +20,7 @@
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 typedef  unsigned long int  UWord;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 // ppc64
Mark Wielaard 6f7ad2
 /* return 1 if success, 0 if failure */
Mark Wielaard 6f7ad2
diff --git a/include/pub_tool_basics.h b/include/pub_tool_basics.h
Mark Wielaard 6f7ad2
index 2236d00..4e30160 100644
Mark Wielaard 6f7ad2
--- a/include/pub_tool_basics.h
Mark Wielaard 6f7ad2
+++ b/include/pub_tool_basics.h
Mark Wielaard 6f7ad2
@@ -270,9 +270,9 @@ static inline Bool sr_EQ ( SysRes sr1, SysRes sr2 ) {
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #if defined(VGA_x86) || defined(VGA_amd64) || defined (VGA_arm) \
Mark Wielaard 6f7ad2
     || ((defined(VGA_mips32) || defined(VGA_mips64)) && defined (_MIPSEL)) \
Mark Wielaard 6f7ad2
-    || defined(VGA_arm64)
Mark Wielaard 6f7ad2
+    || defined(VGA_arm64)  || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #  define VG_LITTLEENDIAN 1
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_s390x) \
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_s390x) \
Mark Wielaard 6f7ad2
       || ((defined(VGA_mips32) || defined(VGA_mips64)) && defined (_MIPSEB))
Mark Wielaard 6f7ad2
 #  define VG_BIGENDIAN 1
Mark Wielaard 6f7ad2
 #else
Mark Wielaard 6f7ad2
@@ -283,7 +283,8 @@ static inline Bool sr_EQ ( SysRes sr1, SysRes sr2 ) {
Mark Wielaard 6f7ad2
 #if defined(VGA_x86)
Mark Wielaard 6f7ad2
 #  define VG_REGPARM(n)            __attribute__((regparm(n)))
Mark Wielaard 6f7ad2
 #elif defined(VGA_amd64) || defined(VGA_ppc32) \
Mark Wielaard 6f7ad2
-      || defined(VGA_ppc64) || defined(VGA_arm) || defined(VGA_s390x) \
Mark Wielaard 6f7ad2
+      || defined(VGA_ppc64be) || defined(VGA_ppc64le) \
Mark Wielaard 6f7ad2
+      || defined(VGA_arm) || defined(VGA_s390x) \
Mark Wielaard 6f7ad2
       || defined(VGA_mips32) || defined(VGA_mips64) \
Mark Wielaard 6f7ad2
       || defined(VGA_arm64)
Mark Wielaard 6f7ad2
 #  define VG_REGPARM(n)            /* */
Mark Wielaard 6f7ad2
diff --git a/include/pub_tool_libcsetjmp.h b/include/pub_tool_libcsetjmp.h
Mark Wielaard 6f7ad2
index 4bd3270..ff01058 100644
Mark Wielaard 6f7ad2
--- a/include/pub_tool_libcsetjmp.h
Mark Wielaard 6f7ad2
+++ b/include/pub_tool_libcsetjmp.h
Mark Wielaard 6f7ad2
@@ -82,7 +82,7 @@ __attribute__((noreturn))
Mark Wielaard 6f7ad2
 void  VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env));
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #define VG_MINIMAL_JMP_BUF(_name)        ULong _name [32+1+1]
Mark Wielaard 6f7ad2
 __attribute__((returns_twice))
Mark Wielaard 6f7ad2
diff --git a/include/pub_tool_machine.h b/include/pub_tool_machine.h
Mark Wielaard 6f7ad2
index e956419..0f004f1 100644
Mark Wielaard 6f7ad2
--- a/include/pub_tool_machine.h
Mark Wielaard 6f7ad2
+++ b/include/pub_tool_machine.h
Mark Wielaard 6f7ad2
@@ -53,7 +53,7 @@
Mark Wielaard 6f7ad2
 #  define VG_CLREQ_SZB             20
Mark Wielaard 6f7ad2
 #  define VG_STACK_REDZONE_SZB      0
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux)  || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 #  define VG_MIN_INSTR_SZB          4
Mark Wielaard 6f7ad2
 #  define VG_MAX_INSTR_SZB          4 
Mark Wielaard 6f7ad2
 #  define VG_CLREQ_SZB             20
Mark Wielaard 6f7ad2
diff --git a/include/pub_tool_vkiscnums_asm.h b/include/pub_tool_vkiscnums_asm.h
Mark Wielaard 6f7ad2
index 6f84651..7f7f03e 100644
Mark Wielaard 6f7ad2
--- a/include/pub_tool_vkiscnums_asm.h
Mark Wielaard 6f7ad2
+++ b/include/pub_tool_vkiscnums_asm.h
Mark Wielaard 6f7ad2
@@ -42,7 +42,7 @@
Mark Wielaard 6f7ad2
 #elif defined(VGP_ppc32_linux)
Mark Wielaard 6f7ad2
 #  include "vki/vki-scnums-ppc32-linux.h"
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 #  include "vki/vki-scnums-ppc64-linux.h"
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #elif defined(VGP_s390x_linux)
Mark Wielaard 6f7ad2
diff --git a/include/valgrind.h b/include/valgrind.h
Mark Wielaard 6f7ad2
index a4380d1..01a372b 100644
Mark Wielaard 6f7ad2
--- a/include/valgrind.h
Mark Wielaard 6f7ad2
+++ b/include/valgrind.h
Mark Wielaard 6f7ad2
@@ -115,7 +115,7 @@
Mark Wielaard 6f7ad2
 #undef PLAT_x86_linux
Mark Wielaard 6f7ad2
 #undef PLAT_amd64_linux
Mark Wielaard 6f7ad2
 #undef PLAT_ppc32_linux
Mark Wielaard 6f7ad2
-#undef PLAT_ppc64_linux
Mark Wielaard 6f7ad2
+#undef PLAT_ppc64be_linux
Mark Wielaard 6f7ad2
 #undef PLAT_arm_linux
Mark Wielaard 6f7ad2
 #undef PLAT_arm64_linux
Mark Wielaard 6f7ad2
 #undef PLAT_s390x_linux
Mark Wielaard 6f7ad2
@@ -140,8 +140,9 @@
Mark Wielaard 6f7ad2
 #  define PLAT_amd64_linux 1
Mark Wielaard 6f7ad2
 #elif defined(__linux__) && defined(__powerpc__) && !defined(__powerpc64__)
Mark Wielaard 6f7ad2
 #  define PLAT_ppc32_linux 1
Mark Wielaard 6f7ad2
-#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__)
Mark Wielaard 6f7ad2
-#  define PLAT_ppc64_linux 1
Mark Wielaard 6f7ad2
+#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__) && _CALL_ELF != 2
Mark Wielaard 6f7ad2
+/* Big Endian uses ELF version 1 */
Mark Wielaard 6f7ad2
+#  define PLAT_ppc64be_linux 1
Mark Wielaard 6f7ad2
 #elif defined(__linux__) && defined(__arm__) && !defined(__aarch64__)
Mark Wielaard 6f7ad2
 #  define PLAT_arm_linux 1
Mark Wielaard 6f7ad2
 #elif defined(__linux__) && defined(__aarch64__) && !defined(__arm__)
Mark Wielaard 6f7ad2
@@ -519,9 +520,9 @@ typedef
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #endif /* PLAT_ppc32_linux */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-/* ------------------------ ppc64-linux ------------------------ */
Mark Wielaard 6f7ad2
+/* ---------------------- ppc64be-linux ------------------------ */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(PLAT_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(PLAT_ppc64be_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 typedef
Mark Wielaard 6f7ad2
    struct { 
Mark Wielaard 6f7ad2
@@ -596,7 +597,8 @@ typedef
Mark Wielaard 6f7ad2
                     );                                           \
Mark Wielaard 6f7ad2
  } while (0)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#endif /* PLAT_ppc64_linux */
Mark Wielaard 6f7ad2
+#endif /* PLAT_ppc64be_linux */
Mark Wielaard 6f7ad2
+
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* ------------------------- arm-linux ------------------------- */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -2534,9 +2536,9 @@ typedef
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #endif /* PLAT_ppc32_linux */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-/* ------------------------ ppc64-linux ------------------------ */
Mark Wielaard 6f7ad2
+/* ---------------------- ppc64be-linux ------------------------ */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(PLAT_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(PLAT_ppc64be_linux)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* ARGREGS: r3 r4 r5 r6 r7 r8 r9 r10 (the rest on stack somewhere) */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -3089,7 +3091,7 @@ typedef
Mark Wielaard 6f7ad2
       lval = (__typeof__(lval)) _res;                             \
Mark Wielaard 6f7ad2
    } while (0)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#endif /* PLAT_ppc64_linux */
Mark Wielaard 6f7ad2
+#endif /* PLAT_ppc64be_linux */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 /* ------------------------- arm-linux ------------------------- */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
@@ -5935,7 +5937,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
Mark Wielaard 6f7ad2
 #undef PLAT_x86_linux
Mark Wielaard 6f7ad2
 #undef PLAT_amd64_linux
Mark Wielaard 6f7ad2
 #undef PLAT_ppc32_linux
Mark Wielaard 6f7ad2
-#undef PLAT_ppc64_linux
Mark Wielaard 6f7ad2
+#undef PLAT_ppc64be_linux
Mark Wielaard 6f7ad2
 #undef PLAT_arm_linux
Mark Wielaard 6f7ad2
 #undef PLAT_s390x_linux
Mark Wielaard 6f7ad2
 #undef PLAT_mips32_linux
Mark Wielaard 6f7ad2
diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h
Mark Wielaard 6f7ad2
index 6043842..9111e0f 100644
Mark Wielaard 6f7ad2
--- a/include/vki/vki-linux.h
Mark Wielaard 6f7ad2
+++ b/include/vki/vki-linux.h
Mark Wielaard 6f7ad2
@@ -85,7 +85,7 @@
Mark Wielaard 6f7ad2
 #  include "vki-posixtypes-amd64-linux.h"
Mark Wielaard 6f7ad2
 #elif defined(VGA_ppc32)
Mark Wielaard 6f7ad2
 #  include "vki-posixtypes-ppc32-linux.h"
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #  include "vki-posixtypes-ppc64-linux.h"
Mark Wielaard 6f7ad2
 #elif defined(VGA_arm)
Mark Wielaard 6f7ad2
 #  include "vki-posixtypes-arm-linux.h"
Mark Wielaard 6f7ad2
@@ -211,7 +211,7 @@ typedef unsigned int	        vki_uint;
Mark Wielaard 6f7ad2
 #  include "vki-amd64-linux.h"
Mark Wielaard 6f7ad2
 #elif defined(VGA_ppc32)
Mark Wielaard 6f7ad2
 #  include "vki-ppc32-linux.h"
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 #  include "vki-ppc64-linux.h"
Mark Wielaard 6f7ad2
 #elif defined(VGA_arm)
Mark Wielaard 6f7ad2
 #  include "vki-arm-linux.h"
Mark Wielaard 6f7ad2
diff --git a/memcheck/mc_machine.c b/memcheck/mc_machine.c
Mark Wielaard 6f7ad2
index 7074107..ccb431f 100644
Mark Wielaard 6f7ad2
--- a/memcheck/mc_machine.c
Mark Wielaard 6f7ad2
+++ b/memcheck/mc_machine.c
Mark Wielaard 6f7ad2
@@ -61,7 +61,7 @@
Mark Wielaard 6f7ad2
 # define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC32State)
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 # include "libvex_guest_ppc64.h"
Mark Wielaard 6f7ad2
 # define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC64State)
Mark Wielaard 6f7ad2
 #endif
Mark Wielaard 6f7ad2
@@ -150,7 +150,7 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
    /* -------------------- ppc64 -------------------- */
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#  if defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  if defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 #  define GOF(_fieldname) \
Mark Wielaard 6f7ad2
       (offsetof(VexGuestPPC64State,guest_##_fieldname))
Mark Wielaard 6f7ad2
@@ -160,7 +160,6 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB )
Mark Wielaard 6f7ad2
    Int  sz   = szB;
Mark Wielaard 6f7ad2
    Int  o    = offset;
Mark Wielaard 6f7ad2
    tl_assert(sz > 0);
Mark Wielaard 6f7ad2
-   tl_assert(host_is_big_endian());
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
    if (sz == 8 || sz == 4) {
Mark Wielaard 6f7ad2
       /* The point of this is to achieve
Mark Wielaard 6f7ad2
@@ -1282,7 +1281,7 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB )
Mark Wielaard 6f7ad2
 IRType MC_(get_otrack_reg_array_equiv_int_type) ( IRRegArray* arr )
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
    /* -------------------- ppc64 -------------------- */
Mark Wielaard 6f7ad2
-#  if defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#  if defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    /* The redir stack. */
Mark Wielaard 6f7ad2
    if (arr->base == offsetof(VexGuestPPC64State,guest_REDIR_STACK[0])
Mark Wielaard 6f7ad2
        && arr->elemTy == Ity_I64
Mark Wielaard 6f7ad2
diff --git a/memcheck/tests/atomic_incs.c b/memcheck/tests/atomic_incs.c
Mark Wielaard 6f7ad2
index 50c29e9..0029d8c 100644
Mark Wielaard 6f7ad2
--- a/memcheck/tests/atomic_incs.c
Mark Wielaard 6f7ad2
+++ b/memcheck/tests/atomic_incs.c
Mark Wielaard 6f7ad2
@@ -62,7 +62,7 @@ __attribute__((noinline)) void atomic_add_8bit ( char* p, int n )
Mark Wielaard 6f7ad2
          : /*trash*/ "memory", "cc", "r15"
Mark Wielaard 6f7ad2
       );
Mark Wielaard 6f7ad2
    } while (success != 1);
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be)
Mark Wielaard 6f7ad2
    /* Nasty hack.  Does correctly atomically do *p += n, but only if p
Mark Wielaard 6f7ad2
       is 8-aligned -- guaranteed by caller. */
Mark Wielaard 6f7ad2
    unsigned long success;
Mark Wielaard 6f7ad2
@@ -261,7 +261,7 @@ __attribute__((noinline)) void atomic_add_16bit ( short* p, int n )
Mark Wielaard 6f7ad2
          : /*trash*/ "memory", "cc", "r15"
Mark Wielaard 6f7ad2
       );
Mark Wielaard 6f7ad2
    } while (success != 1);
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be)
Mark Wielaard 6f7ad2
    /* Nasty hack.  Does correctly atomically do *p += n, but only if p
Mark Wielaard 6f7ad2
       is 8-aligned -- guaranteed by caller. */
Mark Wielaard 6f7ad2
    unsigned long success;
Mark Wielaard 6f7ad2
@@ -457,7 +457,7 @@ __attribute__((noinline)) void atomic_add_32bit ( int* p, int n )
Mark Wielaard 6f7ad2
          : /*trash*/ "memory", "cc", "r15"
Mark Wielaard 6f7ad2
       );
Mark Wielaard 6f7ad2
    } while (success != 1);
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be)
Mark Wielaard 6f7ad2
    /* Nasty hack.  Does correctly atomically do *p += n, but only if p
Mark Wielaard 6f7ad2
       is 8-aligned -- guaranteed by caller. */
Mark Wielaard 6f7ad2
    unsigned long success;
Mark Wielaard 6f7ad2
@@ -574,7 +574,7 @@ __attribute__((noinline)) void atomic_add_64bit ( long long int* p, int n )
Mark Wielaard 6f7ad2
       "lock; addq %%rbx,(%%rax)" "\n"
Mark Wielaard 6f7ad2
       : : "S"(&block[0])/* S means "rsi only" */ : "memory","cc","rax","rbx"
Mark Wielaard 6f7ad2
    );
Mark Wielaard 6f7ad2
-#elif defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
    unsigned long success;
Mark Wielaard 6f7ad2
    do {
Mark Wielaard 6f7ad2
       __asm__ __volatile__(
Mark Wielaard 6f7ad2
diff --git a/memcheck/tests/unit_libcbase.c b/memcheck/tests/unit_libcbase.c
Mark Wielaard 6f7ad2
index 019b67a..d61ecf9 100644
Mark Wielaard 6f7ad2
--- a/memcheck/tests/unit_libcbase.c
Mark Wielaard 6f7ad2
+++ b/memcheck/tests/unit_libcbase.c
Mark Wielaard 6f7ad2
@@ -56,7 +56,8 @@ void test_VG_STREQN(void)
Mark Wielaard 6f7ad2
 }
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 // On PPC/Linux VKI_PAGE_SIZE is a variable, not a macro.
Mark Wielaard 6f7ad2
-#if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
Mark Wielaard 6f7ad2
+    || defined(VGP_ppc64le_linux)
Mark Wielaard 6f7ad2
 unsigned long VKI_PAGE_SIZE  = 1UL << 12;
Mark Wielaard 6f7ad2
 #elif defined(VGP_arm64_linux)
Mark Wielaard 6f7ad2
 unsigned long VKI_PAGE_SIZE  = 1UL << 16;
Mark Wielaard 6f7ad2
diff --git a/tests/Makefile.am b/tests/Makefile.am
Mark Wielaard 6f7ad2
index adfbec4..b01cfb7 100644
Mark Wielaard 6f7ad2
--- a/tests/Makefile.am
Mark Wielaard 6f7ad2
+++ b/tests/Makefile.am
Mark Wielaard 6f7ad2
@@ -31,7 +31,8 @@ check_PROGRAMS = \
Mark Wielaard 6f7ad2
 	x86_amd64_features \
Mark Wielaard 6f7ad2
 	s390x_features \
Mark Wielaard 6f7ad2
 	mips_features \
Mark Wielaard 6f7ad2
-	power_insn_available
Mark Wielaard 6f7ad2
+	power_insn_available \
Mark Wielaard 6f7ad2
+	is_ppc64_BE
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 AM_CFLAGS   += $(AM_FLAG_M3264_PRI)
Mark Wielaard 6f7ad2
 AM_CXXFLAGS += $(AM_FLAG_M3264_PRI)
Mark Wielaard 6f7ad2
diff --git a/tests/arch_test.c b/tests/arch_test.c
Mark Wielaard 6f7ad2
index d1a337b..2fa3b48 100644
Mark Wielaard 6f7ad2
--- a/tests/arch_test.c
Mark Wielaard 6f7ad2
+++ b/tests/arch_test.c
Mark Wielaard 6f7ad2
@@ -48,7 +48,7 @@ static Bool go(char* arch)
Mark Wielaard 6f7ad2
 #elif defined(VGP_ppc32_linux)
Mark Wielaard 6f7ad2
    if ( 0 == strcmp( arch, "ppc32" ) ) return True;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#elif defined(VGP_ppc64_linux)
Mark Wielaard 6f7ad2
+#elif defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
    if ( 0 == strcmp( arch, "ppc64" ) ) return True;
Mark Wielaard 6f7ad2
 #if defined(VGA_SEC_ppc32)
Mark Wielaard 6f7ad2
    if ( 0 == strcmp( arch, "ppc32" ) ) return True;
Mark Wielaard 6f7ad2
diff --git a/tests/check_isa-2_06_cap b/tests/check_isa-2_06_cap
Mark Wielaard 6f7ad2
index c5fc05a..b8ec37f 100755
Mark Wielaard 6f7ad2
--- a/tests/check_isa-2_06_cap
Mark Wielaard 6f7ad2
+++ b/tests/check_isa-2_06_cap
Mark Wielaard 6f7ad2
@@ -1,7 +1,7 @@
Mark Wielaard 6f7ad2
 #!/bin/sh
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 # We use this script to check whether or not the processor supports Power ISA 2.06 or later.
Mark Wielaard 6f7ad2
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
Mark Wielaard 6f7ad2
+DIR="$( cd "$( dirname "$0" )" && pwd )"
Mark Wielaard 6f7ad2
 LD_SHOW_AUXV=1 $DIR/true | grep  arch_2_06 > /dev/null 2>&1
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 if [ "$?" -ne "0" ]; then
Mark Wielaard 6f7ad2
diff --git a/tests/check_isa-2_07_cap b/tests/check_isa-2_07_cap
Mark Wielaard 6f7ad2
index ee777c1..8b991e5 100755
Mark Wielaard 6f7ad2
--- a/tests/check_isa-2_07_cap
Mark Wielaard 6f7ad2
+++ b/tests/check_isa-2_07_cap
Mark Wielaard 6f7ad2
@@ -2,7 +2,7 @@
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 # We use this script to check whether or not the processor supports
Mark Wielaard 6f7ad2
 # Power ISA 2.07.
Mark Wielaard 6f7ad2
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
Mark Wielaard 6f7ad2
+DIR="$( cd "$( dirname "$0" )" && pwd )"
Mark Wielaard 6f7ad2
 LD_SHOW_AUXV=1 $DIR/true | grep  arch_2_07 > /dev/null 2>&1
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 if [ "$?" -ne "0" ]; then
Mark Wielaard 6f7ad2
diff --git a/tests/is_ppc64_BE.c b/tests/is_ppc64_BE.c
Mark Wielaard 6f7ad2
new file mode 100644
Mark Wielaard 6f7ad2
index 0000000..6c12fb3
Mark Wielaard 6f7ad2
--- /dev/null
Mark Wielaard 6f7ad2
+++ b/tests/is_ppc64_BE.c
Mark Wielaard 6f7ad2
@@ -0,0 +1,14 @@
Mark Wielaard 6f7ad2
+#include <stdio.h>
Mark Wielaard 6f7ad2
+#include <stdlib.h>
Mark Wielaard 6f7ad2
+#include <string.h>
Mark Wielaard 6f7ad2
+
Mark Wielaard 6f7ad2
+// This program returns 0 if executing on ppc64 big endian; otherwise returns 1
Mark Wielaard 6f7ad2
+
Mark Wielaard 6f7ad2
+int main(void)
Mark Wielaard 6f7ad2
+{
Mark Wielaard 6f7ad2
+#if defined(VGP_ppc64be_linux)
Mark Wielaard 6f7ad2
+   return 0;
Mark Wielaard 6f7ad2
+#else
Mark Wielaard 6f7ad2
+   return 1;
Mark Wielaard 6f7ad2
+#endif
Mark Wielaard 6f7ad2
+}
Mark Wielaard 6f7ad2
diff --git a/tests/power_insn_available.c b/tests/power_insn_available.c
Mark Wielaard 6f7ad2
index 1bfea2a..1c53918 100644
Mark Wielaard 6f7ad2
--- a/tests/power_insn_available.c
Mark Wielaard 6f7ad2
+++ b/tests/power_insn_available.c
Mark Wielaard 6f7ad2
@@ -7,7 +7,7 @@
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 typedef enum exit_codes_ {
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
   /* If the insn that got queried for: exists */
Mark Wielaard 6f7ad2
   POWER_INSN_AVAILABLE    = 0,
Mark Wielaard 6f7ad2
   /* If the insn that got queried for: does not exist on this platform */
Mark Wielaard 6f7ad2
@@ -24,7 +24,7 @@ typedef enum exit_codes_ {
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
 } exit_code;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc32) || defined(VGA_ppc64be)  || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
 /* Signal Handling support for unsupported instructions. */
Mark Wielaard 6f7ad2
 static jmp_buf unsup_insn_env;
Mark Wielaard 6f7ad2
 static void unsup_insn_handler(int signal_number)
Mark Wielaard 6f7ad2
@@ -72,7 +72,7 @@ int main(int argc, char **argv)
Mark Wielaard 6f7ad2
 {
Mark Wielaard 6f7ad2
   exit_code status;
Mark Wielaard 6f7ad2
 
Mark Wielaard 6f7ad2
-#if defined(VGA_ppc32) || defined(VGA_ppc64)
Mark Wielaard 6f7ad2
+#if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le)
Mark Wielaard 6f7ad2
   char *insn;
Mark Wielaard 6f7ad2
   if (argc != 2) {
Mark Wielaard 6f7ad2
     fprintf(stderr, "usage: power_insn_available <insn>\n" );
Mark Wielaard 6f7ad2
-- 
Mark Wielaard 6f7ad2
1.8.4.2
Mark Wielaard 6f7ad2