File valgrind-3.6.0-s390x-2.patch of Package valgrind

---
 Makefile.all.am                               |    6 
 Makefile.tool.am                              |   11 
 Makefile.vex.am                               |   32 +
 VEX/auxprogs/genoffsets.c                     |   24 +
 VEX/priv/ir_defs.c                            |  120 +++++
 VEX/priv/ir_opt.c                             |    2 
 VEX/priv/main_main.c                          |   69 +++
 VEX/pub/libvex.h                              |   15 
 VEX/pub/libvex_basictypes.h                   |    3 
 VEX/pub/libvex_ir.h                           |   79 +++
 cachegrind/Makefile.am                        |    3 
 cachegrind/cg_branchpred.c                    |    2 
 cachegrind/tests/filter_stderr                |    4 
 callgrind/Makefile.am                         |    3 
 callgrind/tests/filter_stderr                 |    3 
 configure.in                                  |   29 +
 coregrind/Makefile.am                         |   12 
 coregrind/launcher-linux.c                    |    7 
 coregrind/m_aspacemgr/aspacemgr-common.c      |    3 
 coregrind/m_aspacemgr/aspacemgr-linux.c       |    3 
 coregrind/m_coredump/coredump-elf.c           |   23 -
 coregrind/m_debugger.c                        |   70 +++
 coregrind/m_debuginfo/d3basics.c              |    3 
 coregrind/m_debuginfo/debuginfo.c             |   54 ++
 coregrind/m_debuginfo/priv_storage.h          |   15 
 coregrind/m_debuginfo/readdwarf.c             |   54 ++
 coregrind/m_debuginfo/readelf.c               |    7 
 coregrind/m_debuginfo/storage.c               |    8 
 coregrind/m_debuglog.c                        |   48 ++
 coregrind/m_initimg/initimg-linux.c           |   16 
 coregrind/m_libcassert.c                      |   16 
 coregrind/m_libcfile.c                        |   12 
 coregrind/m_libcproc.c                        |    2 
 coregrind/m_machine.c                         |  129 +++++-
 coregrind/m_main.c                            |   45 ++
 coregrind/m_redir.c                           |    3 
 coregrind/m_scheduler/scheduler.c             |    7 
 coregrind/m_signals.c                         |   33 +
 coregrind/m_stacktrace.c                      |   79 +++
 coregrind/m_syscall.c                         |   63 ++
 coregrind/m_syswrap/priv_types_n_macros.h     |    2 
 coregrind/m_syswrap/syswrap-generic.c         |    5 
 coregrind/m_syswrap/syswrap-linux.c           |   19 
 coregrind/m_syswrap/syswrap-main.c            |   78 +++
 coregrind/m_trampoline.S                      |   34 +
 coregrind/m_translate.c                       |    5 
 coregrind/m_transtab.c                        |    3 
 coregrind/pub_core_basics.h                   |    6 
 coregrind/pub_core_debuginfo.h                |    4 
 coregrind/pub_core_machine.h                  |    9 
 coregrind/pub_core_mallocfree.h               |    1 
 coregrind/pub_core_syscall.h                  |    1 
 coregrind/pub_core_threadstate.h              |    2 
 coregrind/pub_core_trampoline.h               |    6 
 coregrind/pub_core_transtab_asm.h             |    7 
 drd/drd_bitmap.h                              |    2 
 drd/drd_load_store.c                          |    2 
 exp-ptrcheck/h_main.c                         |   24 +
 exp-ptrcheck/pc_main.c                        |    4 
 exp-ptrcheck/tests/is_arch_supported          |    6 
 helgrind/tests/annotate_hbefore.c             |   19 
 helgrind/tests/tc07_hbl1.c                    |   13 
 helgrind/tests/tc08_hbl2.c                    |   13 
 helgrind/tests/tc11_XCHG.c                    |    5 
 include/Makefile.am                           |    9 
 include/pub_tool_basics.h                     |    4 
 include/pub_tool_machine.h                    |    6 
 include/pub_tool_vkiscnums_asm.h              |    3 
 include/valgrind.h                            |  552 ++++++++++++++++++++++++++
 include/vki/vki-linux.h                       |    4 
 memcheck/mc_machine.c                         |   58 ++
 memcheck/mc_translate.c                       |  126 +++++
 memcheck/tests/Makefile.am                    |    5 
 memcheck/tests/atomic_incs.c                  |   48 ++
 memcheck/tests/linux/timerfd-syscall.c        |    5 
 memcheck/tests/partiallydefinedeq.c           |    4 
 memcheck/tests/partiallydefinedeq.stderr.exp2 |    2 
 memcheck/tests/sigprocmask.c                  |    1 
 memcheck/tests/supp_unknown.supp              |    7 
 none/tests/Makefile.am                        |    5 
 tests/arch_test.c                             |    4 
 81 files changed, 2155 insertions(+), 75 deletions(-)

--- valgrind/Makefile.all.am
+++ valgrind/Makefile.all.am
@@ -178,6 +178,11 @@ AM_CFLAGS_AMD64_DARWIN     = $(WERROR) -
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 AM_CCASFLAGS_AMD64_DARWIN  = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
 
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX     = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX  = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
 # build anything which is built only once on a dual-arch build.
@@ -209,4 +214,5 @@ PRELOAD_LDFLAGS_PPC32_AIX5   = $(PRELOAD
 PRELOAD_LDFLAGS_PPC64_AIX5   = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN   = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
--- valgrind/Makefile.tool.am
+++ valgrind/Makefile.tool.am
@@ -52,6 +52,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -104,6 +107,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
@@ -142,6 +148,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 #----------------------------------------------------------------------------
 # General stuff
 #----------------------------------------------------------------------------
--- valgrind/Makefile.vex.am
+++ valgrind/Makefile.vex.am
@@ -24,6 +24,7 @@ pkginclude_HEADERS = \
 	pub/libvex_guest_ppc32.h \
 	pub/libvex_guest_ppc64.h \
 	pub/libvex_guest_arm.h \
+	pub/libvex_guest_s390x.h \
 	pub/libvex_ir.h \
 	pub/libvex_trc_values.h
 
@@ -38,13 +39,23 @@ noinst_HEADERS = \
 	priv/guest_amd64_defs.h \
 	priv/guest_ppc_defs.h \
 	priv/guest_arm_defs.h \
+	priv/guest_s390_defs.h \
+	priv/guest_s390_cc.h \
+	priv/guest_s390_priv.h \
 	priv/host_generic_regs.h \
 	priv/host_generic_simd64.h \
 	priv/host_generic_simd128.h \
 	priv/host_x86_defs.h \
 	priv/host_amd64_defs.h \
 	priv/host_ppc_defs.h \
-	priv/host_arm_defs.h
+	priv/host_arm_defs.h \
+	priv/host_s390_defs.h \
+	priv/host_s390_amode.h \
+	priv/host_s390_disasm.h \
+	priv/host_s390_emit.h \
+	priv/host_s390_hreg.h \
+	priv/host_s390_insn.h \
+	priv/host_s390_isel.h
 
 BUILT_SOURCES = pub/libvex_guest_offsets.h
 CLEANFILES    = pub/libvex_guest_offsets.h
@@ -58,7 +69,8 @@ pub/libvex_guest_offsets.h: auxprogs/gen
 			    pub/libvex_guest_amd64.h \
 			    pub/libvex_guest_ppc32.h \
 			    pub/libvex_guest_ppc64.h \
-			    pub/libvex_guest_arm.h
+			    pub/libvex_guest_arm.h \
+			    pub/libvex_guest_s390x.h
 	rm -f auxprogs/genoffsets.s
 	$(CC) $(LIBVEX_CFLAGS) \
 	      $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
@@ -97,6 +109,12 @@ LIBVEX_SOURCES_COMMON = \
 	priv/guest_ppc_toIR.c \
 	priv/guest_arm_helpers.c \
 	priv/guest_arm_toIR.c \
+	priv/guest_s390_helpers.c \
+	priv/guest_s390_spechelper.c \
+	priv/guest_s390_toIR.c \
+	priv/guest_s390_cc.c \
+	priv/guest_s390_decoder.c \
+	priv/guest_s390_irgen.c \
 	priv/host_generic_regs.c \
 	priv/host_generic_simd64.c \
 	priv/host_generic_simd128.c \
@@ -108,7 +126,15 @@ LIBVEX_SOURCES_COMMON = \
 	priv/host_ppc_defs.c \
 	priv/host_ppc_isel.c \
 	priv/host_arm_defs.c \
-	priv/host_arm_isel.c
+	priv/host_arm_isel.c \
+	priv/host_s390_defs.c \
+	priv/host_s390_isel.c \
+	priv/host_s390_amode.c \
+	priv/host_s390_disasm.c \
+	priv/host_s390_emit.c \
+	priv/host_s390_hreg.c \
+	priv/host_s390_insn.c \
+	priv/host_s390_wrapper.c
 
 LIBVEX_CFLAGS = \
 	-Wbad-function-cast \
--- valgrind/VEX/auxprogs/genoffsets.c
+++ valgrind/VEX/auxprogs/genoffsets.c
@@ -51,6 +51,7 @@
 #include "../pub/libvex_guest_ppc32.h"
 #include "../pub/libvex_guest_ppc64.h"
 #include "../pub/libvex_guest_arm.h"
+#include "../pub/libvex_guest_s390x.h"
 
 #define VG_STRINGIFZ(__str)  #__str
 #define VG_STRINGIFY(__str)  VG_STRINGIFZ(__str)
@@ -155,6 +156,29 @@ void foo ( void )
    GENOFFSET(ARM,arm,R13);
    GENOFFSET(ARM,arm,R14);
    GENOFFSET(ARM,arm,R15T);
+
+   // fixs390 later: strip down to what is actually needed
+   GENOFFSET(S390X,s390x,r0);
+   GENOFFSET(S390X,s390x,r1);
+   GENOFFSET(S390X,s390x,r2);
+   GENOFFSET(S390X,s390x,r3);
+   GENOFFSET(S390X,s390x,r4);
+   GENOFFSET(S390X,s390x,r5);
+   GENOFFSET(S390X,s390x,r6);
+   GENOFFSET(S390X,s390x,r7);
+   GENOFFSET(S390X,s390x,r8);
+   GENOFFSET(S390X,s390x,r9);
+   GENOFFSET(S390X,s390x,r10);
+   GENOFFSET(S390X,s390x,r11);
+   GENOFFSET(S390X,s390x,r12);
+   GENOFFSET(S390X,s390x,r13);
+   GENOFFSET(S390X,s390x,r14);
+   GENOFFSET(S390X,s390x,r15);
+   GENOFFSET(S390X,s390x,IA);
+   GENOFFSET(S390X,s390x,SYSNO);
+   GENOFFSET(S390X,s390x,IP_AT_SYSCALL);
+   GENOFFSET(S390X,s390x,fpc);
+   GENOFFSET(S390X,s390x,counter);
 }
 
 /*--------------------------------------------------------------------*/
--- valgrind/VEX/priv/ir_defs.c
+++ valgrind/VEX/priv/ir_defs.c
@@ -56,6 +56,7 @@ void ppIRType ( IRType ty )
       case Ity_I128:    vex_printf( "I128"); break;
       case Ity_F32:     vex_printf( "F32");  break;
       case Ity_F64:     vex_printf( "F64");  break;
+      case Ity_F128:    vex_printf( "F128"); break;
       case Ity_V128:    vex_printf( "V128"); break;
       default: vex_printf("ty = 0x%x\n", (Int)ty);
                vpanic("ppIRType");
@@ -64,7 +65,7 @@ void ppIRType ( IRType ty )
 
 void ppIRConst ( IRConst* con )
 {
-   union { ULong i64; Double f64; } u;
+   union { ULong i64; Double f64; UInt i32; Float f32; } u;
    vassert(sizeof(ULong) == sizeof(Double));
    switch (con->tag) {
       case Ico_U1:   vex_printf( "%d:I1",        con->Ico.U1 ? 1 : 0); break;
@@ -72,6 +73,10 @@ void ppIRConst ( IRConst* con )
       case Ico_U16:  vex_printf( "0x%x:I16",     (UInt)(con->Ico.U16)); break;
       case Ico_U32:  vex_printf( "0x%x:I32",     (UInt)(con->Ico.U32)); break;
       case Ico_U64:  vex_printf( "0x%llx:I64",   (ULong)(con->Ico.U64)); break;
+      case Ico_F32:  u.f32 = con->Ico.F32;
+                     vex_printf( "F32{0x%x}",   u.i32);
+                     break;
+      case Ico_F32i: vex_printf( "F32i{0x%x}",   con->Ico.F32i); break;
       case Ico_F64:  u.f64 = con->Ico.F64;
                      vex_printf( "F64{0x%llx}",  u.i64);
                      break;
@@ -222,6 +227,8 @@ void ppIROp ( IROp op )
       case Iop_DivModU128to64: vex_printf("DivModU128to64"); return;
       case Iop_DivModS128to64: vex_printf("DivModS128to64"); return;
 
+      case Iop_DivModS64to64: vex_printf("DivModS64to64"); return;
+
       case Iop_16HIto8:  vex_printf("16HIto8"); return;
       case Iop_16to8:    vex_printf("16to8");   return;
       case Iop_8HLto16:  vex_printf("8HLto16"); return;
@@ -238,6 +245,14 @@ void ppIROp ( IROp op )
       case Iop_128to64:   vex_printf("128to64");   return;
       case Iop_64HLto128: vex_printf("64HLto128"); return;
 
+      case Iop_CmpF32:    vex_printf("CmpF32");    return;
+      case Iop_F32toI16S: vex_printf("F32toI16S");  return;
+      case Iop_F32toI32S: vex_printf("F32toI32S");  return;
+      case Iop_F32toI64S: vex_printf("F32toI64S");  return;
+      case Iop_I16StoF32: vex_printf("I16StoF32");  return;
+      case Iop_I32StoF32: vex_printf("I32StoF32");  return;
+      case Iop_I64StoF32: vex_printf("I64StoF32");  return;
+
       case Iop_AddF64:    vex_printf("AddF64"); return;
       case Iop_SubF64:    vex_printf("SubF64"); return;
       case Iop_MulF64:    vex_printf("MulF64"); return;
@@ -251,6 +266,32 @@ void ppIROp ( IROp op )
       case Iop_MulF32:    vex_printf("MulF32"); return;
       case Iop_DivF32:    vex_printf("DivF32"); return;
 
+        /* 128 bit floating point */
+      case Iop_AddF128:   vex_printf("AddF128");  return;
+      case Iop_SubF128:   vex_printf("SubF128");  return;
+      case Iop_MulF128:   vex_printf("MulF128");  return;
+      case Iop_DivF128:   vex_printf("DivF128");  return;
+      case Iop_AbsF128:   vex_printf("AbsF128");  return;
+      case Iop_NegF128:   vex_printf("NegF128");  return;
+      case Iop_SqrtF128:  vex_printf("SqrtF128"); return;
+      case Iop_CmpF128:   vex_printf("CmpF128");  return;
+
+      case Iop_F64HLto128: vex_printf("F64HLto128"); return;
+      case Iop_F128HIto64: vex_printf("F128HIto64"); return;
+      case Iop_F128to64:   vex_printf("F128to64");   return;
+      case Iop_I32StoF128: vex_printf("I32StoF128"); return;
+      case Iop_I64StoF128: vex_printf("I64StoF128"); return;
+      case Iop_F128toI32S: vex_printf("F128toI32S"); return;
+      case Iop_F128toI64S: vex_printf("F128toI64S"); return;
+      case Iop_F32toF128:  vex_printf("F32toF128");  return;
+      case Iop_F64toF128:  vex_printf("F64toF128");  return;
+      case Iop_F128toF64:  vex_printf("F128toF64");  return;
+      case Iop_F128toF32:  vex_printf("F128toF32");  return;
+
+        /* s390 specific */
+      case Iop_MAddF32:    vex_printf("s390_MAddF32"); return;
+      case Iop_MSubF32:    vex_printf("s390_MSubF32"); return;
+
       case Iop_ScaleF64:      vex_printf("ScaleF64"); return;
       case Iop_AtanF64:       vex_printf("AtanF64"); return;
       case Iop_Yl2xF64:       vex_printf("Yl2xF64"); return;
@@ -1258,6 +1299,20 @@ IRConst* IRConst_U64 ( ULong u64 )
    c->Ico.U64 = u64;
    return c;
 }
+IRConst* IRConst_F32 ( Float f32 )
+{
+   IRConst* c = LibVEX_Alloc(sizeof(IRConst));
+   c->tag     = Ico_F32;
+   c->Ico.F32 = f32;
+   return c;
+}
+IRConst* IRConst_F32i ( UInt f32i )
+{
+   IRConst* c  = LibVEX_Alloc(sizeof(IRConst));
+   c->tag      = Ico_F32i;
+   c->Ico.F32i = f32i;
+   return c;
+}
 IRConst* IRConst_F64 ( Double f64 )
 {
    IRConst* c = LibVEX_Alloc(sizeof(IRConst));
@@ -1706,6 +1761,8 @@ IRConst* deepCopyIRConst ( IRConst* c )
       case Ico_U16:  return IRConst_U16(c->Ico.U16);
       case Ico_U32:  return IRConst_U32(c->Ico.U32);
       case Ico_U64:  return IRConst_U64(c->Ico.U64);
+      case Ico_F32:  return IRConst_F32(c->Ico.F32);
+      case Ico_F32i: return IRConst_F32i(c->Ico.F32i);
       case Ico_F64:  return IRConst_F64(c->Ico.F64);
       case Ico_F64i: return IRConst_F64i(c->Ico.F64i);
       case Ico_V128: return IRConst_V128(c->Ico.V128);
@@ -2108,6 +2165,9 @@ void typeOfPrimop ( IROp op,
       case Iop_DivModU128to64: case Iop_DivModS128to64:
          BINARY(Ity_I128,Ity_I64, Ity_I128);
 
+      case Iop_DivModS64to64:
+         BINARY(Ity_I64,Ity_I64, Ity_I128);
+
       case Iop_16HIto8: case Iop_16to8:
          UNARY(Ity_I16, Ity_I8);
       case Iop_8HLto16:
@@ -2184,9 +2244,15 @@ void typeOfPrimop ( IROp op,
       case Iop_RoundF32toInt:
          BINARY(ity_RMode,Ity_F32, Ity_F32);
 
+      case Iop_CmpF32:
+         BINARY(Ity_F32,Ity_F32, Ity_I32);
+
       case Iop_CmpF64:
          BINARY(Ity_F64,Ity_F64, Ity_I32);
 
+      case Iop_CmpF128:
+         BINARY(Ity_F128,Ity_F128, Ity_I32);
+
       case Iop_F64toI16S: BINARY(ity_RMode,Ity_F64, Ity_I16);
       case Iop_F64toI32S: BINARY(ity_RMode,Ity_F64, Ity_I32);
       case Iop_F64toI64S: BINARY(ity_RMode,Ity_F64, Ity_I64);
@@ -2199,6 +2265,14 @@ void typeOfPrimop ( IROp op,
 
       case Iop_I32UtoF64: UNARY(Ity_I32, Ity_F64);
 
+      case Iop_F32toI16S: BINARY(ity_RMode,Ity_F32, Ity_I16);
+      case Iop_F32toI32S: BINARY(ity_RMode,Ity_F32, Ity_I32);
+      case Iop_F32toI64S: BINARY(ity_RMode,Ity_F32, Ity_I64);
+
+      case Iop_I16StoF32: UNARY(Ity_I16, Ity_F32);
+      case Iop_I32StoF32: BINARY(ity_RMode,Ity_I32, Ity_F32);
+      case Iop_I64StoF32: BINARY(ity_RMode,Ity_I64, Ity_F32);
+
       case Iop_F32toF64: UNARY(Ity_F32, Ity_F64);
       case Iop_F64toF32: BINARY(ity_RMode,Ity_F64, Ity_F32);
 
@@ -2438,6 +2512,43 @@ void typeOfPrimop ( IROp op,
       case Iop_QDMulLong16Sx4: case Iop_QDMulLong32Sx2:
          BINARY(Ity_I64, Ity_I64, Ity_V128);
 
+         /* s390 specific */
+      case Iop_MAddF32:
+      case Iop_MSubF32:
+         QUATERNARY(ity_RMode,Ity_F32,Ity_F32,Ity_F32, Ity_F32);
+
+      case Iop_F64HLto128:
+        BINARY(Ity_F64,Ity_F64, Ity_F128);
+
+      case Iop_F128HIto64:
+      case Iop_F128to64:
+        UNARY(Ity_F128, Ity_F64);
+
+      case Iop_AddF128:
+      case Iop_SubF128:
+      case Iop_MulF128:
+      case Iop_DivF128:
+         TERNARY(ity_RMode,Ity_F128,Ity_F128, Ity_F128);
+
+      case Iop_NegF128:
+      case Iop_AbsF128:
+         UNARY(Ity_F128, Ity_F128);
+
+      case Iop_SqrtF128:
+         BINARY(ity_RMode,Ity_F128, Ity_F128);
+
+      case Iop_I32StoF128: UNARY(Ity_I32, Ity_F128);
+      case Iop_I64StoF128: UNARY(Ity_I64, Ity_F128);
+
+      case Iop_F128toI32S: BINARY(ity_RMode,Ity_F128, Ity_I32);
+      case Iop_F128toI64S: BINARY(ity_RMode,Ity_F128, Ity_I64);
+
+      case Iop_F32toF128: UNARY(Ity_F32, Ity_F128);
+      case Iop_F64toF128: UNARY(Ity_F64, Ity_F128);
+
+      case Iop_F128toF32: BINARY(ity_RMode,Ity_F128, Ity_F32);
+      case Iop_F128toF64: BINARY(ity_RMode,Ity_F128, Ity_F64);
+
       default:
          ppIROp(op);
          vpanic("typeOfPrimop");
@@ -2520,6 +2631,8 @@ IRType typeOfIRConst ( IRConst* con )
       case Ico_U16:   return Ity_I16;
       case Ico_U32:   return Ity_I32;
       case Ico_U64:   return Ity_I64;
+      case Ico_F32:   return Ity_F32;
+      case Ico_F32i:  return Ity_F32;
       case Ico_F64:   return Ity_F64;
       case Ico_F64i:  return Ity_F64;
       case Ico_V128:  return Ity_V128;
@@ -2579,7 +2692,7 @@ Bool isPlausibleIRType ( IRType ty )
       case Ity_INVALID: case Ity_I1:
       case Ity_I8: case Ity_I16: case Ity_I32: 
       case Ity_I64: case Ity_I128:
-      case Ity_F32: case Ity_F64:
+      case Ity_F32: case Ity_F64: case Ity_F128:
       case Ity_V128:
          return True;
       default: 
@@ -3415,6 +3528,8 @@ Bool eqIRConst ( IRConst* c1, IRConst* c
       case Ico_U16: return toBool( c1->Ico.U16 == c2->Ico.U16 );
       case Ico_U32: return toBool( c1->Ico.U32 == c2->Ico.U32 );
       case Ico_U64: return toBool( c1->Ico.U64 == c2->Ico.U64 );
+      case Ico_F32: return toBool( c1->Ico.F32 == c2->Ico.F32 );
+      case Ico_F32i: return toBool( c1->Ico.F32i == c2->Ico.F32i );
       case Ico_F64: return toBool( c1->Ico.F64 == c2->Ico.F64 );
       case Ico_F64i: return toBool( c1->Ico.F64i == c2->Ico.F64i );
       case Ico_V128: return toBool( c1->Ico.V128 == c2->Ico.V128 );
@@ -3439,6 +3554,7 @@ Int sizeofIRType ( IRType ty )
       case Ity_I128: return 16;
       case Ity_F32:  return 4;
       case Ity_F64:  return 8;
+      case Ity_F128: return 16;
       case Ity_V128: return 16;
       default: vex_printf("\n"); ppIRType(ty); vex_printf("\n");
                vpanic("sizeofIRType");
--- valgrind/VEX/priv/ir_opt.c
+++ valgrind/VEX/priv/ir_opt.c
@@ -4506,7 +4506,7 @@ static void considerExpensives ( /*OUT*/
                case Ity_I1: case Ity_I8: case Ity_I16: 
                case Ity_I32: case Ity_I64: case Ity_I128: 
                   break;
-               case Ity_F32: case Ity_F64: case Ity_V128: 
+               case Ity_F32: case Ity_F64: case Ity_F128: case Ity_V128:
                   *hasVorFtemps = True;
                   break;
                default: 
--- valgrind/VEX/priv/main_main.c
+++ valgrind/VEX/priv/main_main.c
@@ -40,6 +40,7 @@
 #include "libvex_guest_arm.h"
 #include "libvex_guest_ppc32.h"
 #include "libvex_guest_ppc64.h"
+#include "libvex_guest_s390x.h"
 
 #include "main_globals.h"
 #include "main_util.h"
@@ -50,12 +51,14 @@
 #include "host_amd64_defs.h"
 #include "host_ppc_defs.h"
 #include "host_arm_defs.h"
+#include "host_s390_defs.h"
 
 #include "guest_generic_bb_to_IR.h"
 #include "guest_x86_defs.h"
 #include "guest_amd64_defs.h"
 #include "guest_arm_defs.h"
 #include "guest_ppc_defs.h"
+#include "guest_s390_defs.h"
 
 #include "host_generic_simd128.h"
 
@@ -195,7 +198,7 @@ VexTranslateResult LibVEX_Translate ( Ve
    HInstrArray*    rcode;
    Int             i, j, k, out_used, guest_sizeB;
    Int             offB_TISTART, offB_TILEN;
-   UChar           insn_bytes[32];
+   UChar           insn_bytes[48];
    IRType          guest_word_type;
    IRType          host_word_type;
    Bool            mode64;
@@ -316,6 +319,30 @@ VexTranslateResult LibVEX_Translate ( Ve
          vassert(vta->dispatch == NULL); /* return-to-dispatcher scheme */
          break;
 
+      case VexArchS390X:
+         mode64      = True;
+         getAllocableRegs_S390 ( &n_available_real_regs,
+                                 &available_real_regs, mode64 );
+         isMove      = (Bool(*)(HInstr*,HReg*,HReg*)) isMove_S390Instr;
+         getRegUsage = (void(*)(HRegUsage*,HInstr*, Bool)) getRegUsage_S390Instr;
+         mapRegs     = (void(*)(HRegRemap*,HInstr*, Bool)) mapRegs_S390Instr;
+         genSpill    = (void(*)(HInstr**,HInstr**,HReg,Int,Bool)) genSpill_S390;
+         genReload   = (void(*)(HInstr**,HInstr**,HReg,Int,Bool)) genReload_S390;
+         directReload = (HInstr*(*)(HInstr*,HReg,Short)) directReload_S390;
+         ppInstr     = (void(*)(HInstr*, Bool)) ppS390Instr;
+         ppReg       = (void(*)(HReg)) ppHRegS390;
+         iselSB      = iselSB_S390;
+         emit        = (Int(*)(UChar*,Int,HInstr*,Bool,void*)) emit_S390Instr;
+         host_is_bigendian = True;
+         host_word_type    = Ity_I64;
+         vassert(are_valid_hwcaps(VexArchS390X, vta->archinfo_host.hwcaps));
+         vassert(vta->dispatch == NULL); /* return-to-dispatcher scheme */
+
+         /* Make sure the size of the guest state is small enough to be used
+            as an offset in a B12 amode. */
+         vassert(sizeof(VexGuestS390XState) < (1 << 12));
+         break;
+
       case VexArchARM:
          mode64      = False;
          getAllocableRegs_ARM ( &n_available_real_regs,
@@ -407,6 +434,22 @@ VexTranslateResult LibVEX_Translate ( Ve
          vassert(sizeof( ((VexGuestPPC64State*)0)->guest_NRADDR_GPR2) == 8);
          break;
 
+      case VexArchS390X:
+         preciseMemExnsFn = guest_s390x_state_requires_precise_mem_exns;
+         disInstrFn       = disInstr_S390;
+         specHelper       = guest_s390x_spechelper;
+         guest_sizeB      = sizeof(VexGuestS390XState);
+         guest_word_type  = Ity_I64;
+         guest_layout     = &s390xGuest_layout;
+         offB_TISTART     = offsetof(VexGuestS390XState,guest_TISTART);
+         offB_TILEN       = offsetof(VexGuestS390XState,guest_TILEN);
+         vassert(are_valid_hwcaps(VexArchS390X, vta->archinfo_guest.hwcaps));
+         vassert(0 == sizeof(VexGuestS390XState) % VexGuestS390XStateAlignment);
+         vassert(sizeof( ((VexGuestS390XState*)0)->guest_TISTART    ) == 8);
+         vassert(sizeof( ((VexGuestS390XState*)0)->guest_TILEN      ) == 8);
+         vassert(sizeof( ((VexGuestS390XState*)0)->guest_NRADDR     ) == 8);
+         break;
+
       case VexArchARM:
          preciseMemExnsFn = guest_arm_state_requires_precise_mem_exns;
          disInstrFn       = disInstr_ARM;
@@ -644,7 +687,8 @@ VexTranslateResult LibVEX_Translate ( Ve
          ppInstr(rcode->arr[i], mode64);
          vex_printf("\n");
       }
-      j = (*emit)( insn_bytes, 32, rcode->arr[i], mode64, vta->dispatch );
+      j = (*emit)( insn_bytes, sizeof insn_bytes, rcode->arr[i], mode64,
+                   vta->dispatch );
       if (vex_traceflags & VEX_TRACE_ASM) {
          for (k = 0; k < j; k++)
             if (insn_bytes[k] < 16)
@@ -716,6 +760,7 @@ const HChar* LibVEX_ppVexArch ( VexArch
       case VexArchARM:      return "ARM";
       case VexArchPPC32:    return "PPC32";
       case VexArchPPC64:    return "PPC64";
+      case VexArchS390X:    return "S390X";
       default:              return "VexArch???";
    }
 }
@@ -887,6 +932,25 @@ static HChar* show_hwcaps_arm ( UInt hwc
    return NULL;
 }
 
+static HChar* show_hwcaps_s390x ( UInt hwcaps )
+{
+   const UInt LD = VEX_HWCAPS_S390X_LDISP;
+   const UInt EI = VEX_HWCAPS_S390X_EIMM;
+   const UInt GE = VEX_HWCAPS_S390X_GIE;
+   const UInt DF = VEX_HWCAPS_S390X_DFP;
+
+   if (hwcaps == (LD))          return "s390x-ldisp";
+   if (hwcaps == (LD|EI))       return "s390x-ldisp-eimm";
+   if (hwcaps == (LD|GE))       return "s390x-ldisp-gie";
+   if (hwcaps == (LD|DF))       return "s390x-ldisp-dfp";
+   if (hwcaps == (LD|EI|GE))    return "s390x-ldisp-eimm-gie";
+   if (hwcaps == (LD|EI|DF))    return "s390x-ldisp-eimm-dfp";
+   if (hwcaps == (LD|GE|DF))    return "s390x-ldisp-gie-dfp";
+   if (hwcaps == (LD|EI|GE|DF)) return "s390x-ldisp-eimm-gie-dfp";
+
+   return NULL;
+}
+
 /* ---- */
 static HChar* show_hwcaps ( VexArch arch, UInt hwcaps )
 {
@@ -896,6 +960,7 @@ static HChar* show_hwcaps ( VexArch arch
       case VexArchPPC32: return show_hwcaps_ppc32(hwcaps);
       case VexArchPPC64: return show_hwcaps_ppc64(hwcaps);
       case VexArchARM:   return show_hwcaps_arm(hwcaps);
+      case VexArchS390X: return show_hwcaps_s390x(hwcaps);
       default: return NULL;
    }
 }
--- valgrind/VEX/pub/libvex.h
+++ valgrind/VEX/pub/libvex.h
@@ -56,7 +56,8 @@ typedef
       VexArchAMD64, 
       VexArchARM,
       VexArchPPC32,
-      VexArchPPC64
+      VexArchPPC64,
+      VexArchS390X
    }
    VexArch;
 
@@ -93,6 +94,18 @@ typedef
 #define VEX_HWCAPS_PPC64_GX    (1<<14) /* Graphics extns
                                           (fres,frsqrte,fsel,stfiwx) */
 
+/* s390x: baseline capability is z/Architecture with long displacement */
+#define VEX_HWCAPS_S390X_LDISP (1<<13)  /* Long-displacement facility */
+#define VEX_HWCAPS_S390X_EIMM  (1<<14)  /* Extended-immediate facility */
+#define VEX_HWCAPS_S390X_GIE   (1<<15)  /* General-instruction-extension
+                                           facility */
+#define VEX_HWCAPS_S390X_DFP   (1<<16)  /* Decimal floating point facility */
+/* Special value representing all available s390x hwcaps */
+#define VEX_HWCAPS_S390X_ALL   (VEX_HWCAPS_S390X_LDISP | \
+                                VEX_HWCAPS_S390X_EIMM  | \
+                                VEX_HWCAPS_S390X_GIE   | \
+                                VEX_HWCAPS_S390X_DFP)
+
 /* arm: baseline capability is ARMv4 */
 /* Bits 5:0 - architecture level (e.g. 5 for v5, 6 for v6 etc) */
 #define VEX_HWCAPS_ARM_VFP    (1<<6)  /* VFP extension */
--- valgrind/VEX/pub/libvex_basictypes.h
+++ valgrind/VEX/pub/libvex_basictypes.h
@@ -151,6 +151,9 @@ typedef  unsigned long HWord;
 #elif defined(_AIX) && defined(__64BIT__)
 #   define VEX_HOST_WORDSIZE 8
 
+#elif defined(__s390x__)
+#   define VEX_HOST_WORDSIZE 8
+
 #else
 #   error "Vex: Fatal: Can't establish the host architecture"
 #endif
--- valgrind/VEX/pub/libvex_ir.h
+++ valgrind/VEX/pub/libvex_ir.h
@@ -227,6 +227,7 @@ typedef
       Ity_I128,  /* 128-bit scalar */
       Ity_F32,   /* IEEE 754 float */
       Ity_F64,   /* IEEE 754 double */
+      Ity_F128,  /* 128-bit floating point; implementation defined */
       Ity_V128   /* 128-bit SIMD */
    }
    IRType;
@@ -261,6 +262,9 @@ typedef
       Ico_U16, 
       Ico_U32, 
       Ico_U64,
+      Ico_F32,   /* 32-bit IEEE754 floating */
+      Ico_F32i,  /* 32-bit unsigned int to be interpreted literally
+                    as a IEEE754 single value. */
       Ico_F64,   /* 64-bit IEEE754 floating */
       Ico_F64i,  /* 64-bit unsigned int to be interpreted literally
                     as a IEEE754 double value. */
@@ -282,6 +286,8 @@ typedef
          UShort U16;
          UInt   U32;
          ULong  U64;
+         Float  F32;
+         UInt   F32i;
          Double F64;
          ULong  F64i;
          UShort V128;   /* 16-bit value; see Ico_V128 comment above */
@@ -295,6 +301,8 @@ extern IRConst* IRConst_U8   ( UChar );
 extern IRConst* IRConst_U16  ( UShort );
 extern IRConst* IRConst_U32  ( UInt );
 extern IRConst* IRConst_U64  ( ULong );
+extern IRConst* IRConst_F32  ( Float );
+extern IRConst* IRConst_F32i ( UInt );
 extern IRConst* IRConst_F64  ( Double );
 extern IRConst* IRConst_F64i ( ULong );
 extern IRConst* IRConst_V128 ( UShort );
@@ -469,6 +477,9 @@ typedef
                           // of which lo half is div and hi half is mod
       Iop_DivModS128to64, // ditto, signed
 
+      Iop_DivModS64to64, // :: I64,I64 -> I128
+                         // of which lo half is div and hi half is mod
+
       /* Integer conversions.  Some of these are redundant (eg
          Iop_64to8 is the same as Iop_64to32 and then Iop_32to8), but
          having a complete set reduces the typical dynamic size of IR
@@ -553,6 +564,26 @@ typedef
       /* :: F64 x F64 -> IRCmpF64Result(I32) */
       Iop_CmpF64,
 
+      /* Comparison, yielding GT/LT/EQ/UN(ordered), as per the following:
+            0x45 Unordered
+            0x01 LT
+            0x00 GT
+            0x40 EQ
+         This just happens to be the Intel encoding.  The values
+         are recorded in the type IRCmpF32Result.
+      */
+      Iop_CmpF32,
+
+      /* Comparison, yielding GT/LT/EQ/UN(ordered), as per the following:
+            0x45 Unordered
+            0x01 LT
+            0x00 GT
+            0x40 EQ
+         This just happens to be the Intel encoding.  The values
+         are recorded in the type IRCmpF128Result.
+      */
+      Iop_CmpF128,
+
       /* --- Int to/from FP conversions. --- */
 
       /* For the most part, these take a first argument :: Ity_I32 (as
@@ -606,6 +637,14 @@ typedef
 
       Iop_I32UtoF64, /*                       unsigned I32 -> F64 */
 
+      Iop_F32toI16S, /* IRRoundingMode(I32) x F32 -> signed I16 */
+      Iop_F32toI32S, /* IRRoundingMode(I32) x F32 -> signed I32 */
+      Iop_F32toI64S, /* IRRoundingMode(I32) x F32 -> signed I64 */
+
+      Iop_I16StoF32, /*                       signed I16 -> F32 */
+      Iop_I32StoF32, /* IRRoundingMode(I32) x signed I32 -> F32 */
+      Iop_I64StoF32, /* IRRoundingMode(I32) x signed I64 -> F32 */
+
       /* Conversion between floating point formats */
       Iop_F32toF64,  /*                       F32 -> F64 */
       Iop_F64toF32,  /* IRRoundingMode(I32) x F64 -> F32 */
@@ -615,6 +654,30 @@ typedef
       Iop_ReinterpF64asI64, Iop_ReinterpI64asF64,
       Iop_ReinterpF32asI32, Iop_ReinterpI32asF32,
 
+      /* Support for 128-bit floating point */
+      Iop_F64HLto128,  // :: (high half of F128,low half of F128) -> F128
+      Iop_F128HIto64,  // :: F128 -> high half of F128
+      Iop_F128to64,    // :: F128 -> low  half of F128
+
+      /* :: IRRoundingMode(I32) x F128 x F128 -> F128 */
+      Iop_AddF128, Iop_SubF128, Iop_MulF128, Iop_DivF128,
+
+      /* :: F128 -> F128 */
+      Iop_NegF128, Iop_AbsF128,
+
+      /* :: IRRoundingMode(I32) x F128 -> F128 */
+      Iop_SqrtF128,
+
+      Iop_I32StoF128, /*                signed I32  -> F128 */
+      Iop_I64StoF128, /*                signed I64  -> F128 */
+      Iop_F32toF128,  /*                       F32  -> F128 */
+      Iop_F64toF128,  /*                       F64  -> F128 */
+
+      Iop_F128toI32S, /* IRRoundingMode(I32) x F128 -> signed I32  */
+      Iop_F128toI64S, /* IRRoundingMode(I32) x F128 -> signed I64  */
+      Iop_F128toF64,  /* IRRoundingMode(I32) x F128 -> F64         */
+      Iop_F128toF32,  /* IRRoundingMode(I32) x F128 -> F32         */
+
       /* --- guest x86/amd64 specifics, not mandated by 754. --- */
 
       /* Binary ops, with rounding. */
@@ -642,11 +705,19 @@ typedef
       Iop_RoundF32toInt, /* F32 value to nearest integral value (still
                             as F32) */
 
+      /* --- guest s390 specifics, not mandated by 754. --- */
+
+      /* Fused multiply-add/sub */
+      /* :: IRRoundingMode(I32) x F32 x F32 x F32 -> F32
+            (computes op3 * op2 +/- op1 */
+      Iop_MAddF32, Iop_MSubF32,
+
       /* --- guest ppc32/64 specifics, not mandated by 754. --- */
 
       /* Ternary operations, with rounding. */
       /* Fused multiply-add/sub, with 112-bit intermediate
-	 precision */
+	 precision for ppc.
+         Also used to implement fused multiply-add/sub for s390. */
       /* :: IRRoundingMode(I32) x F64 x F64 x F64 -> F64 
             (computes arg2 * arg3 +/- arg4) */ 
       Iop_MAddF64, Iop_MSubF64,
@@ -1213,7 +1284,9 @@ typedef
       Irrm_NEAREST = 0, 
       Irrm_NegINF  = 1, 
       Irrm_PosINF  = 2, 
-      Irrm_ZERO    = 3 
+      Irrm_ZERO    = 3,
+      Irrm_NEAREST_AWAY = 4,
+      Irrm_CURRENT = 5
    }
    IRRoundingMode;
 
@@ -1228,6 +1301,8 @@ typedef
    }
    IRCmpF64Result;
 
+typedef IRCmpF64Result IRCmpF32Result;
+typedef IRCmpF64Result IRCmpF128Result;
 
 /* ------------------ Expressions ------------------ */
 
--- valgrind/cachegrind/Makefile.am
+++ valgrind/cachegrind/Makefile.am
@@ -44,7 +44,8 @@ CACHEGRIND_SOURCES_COMMON = \
 	cg-x86-amd64.c \
 	cg-ppc32.c \
 	cg-ppc64.c \
-	cg-arm.c
+ 	cg-arm.c   \
+	cg-s390x.c
 
 cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES      = \
 	$(CACHEGRIND_SOURCES_COMMON)
--- valgrind/cachegrind/cg_branchpred.c
+++ valgrind/cachegrind/cg_branchpred.c
@@ -48,6 +48,8 @@
 #  define N_IADDR_LO_ZERO_BITS 2
 #elif defined(VGA_x86) || defined(VGA_amd64)
 #  define N_IADDR_LO_ZERO_BITS 0
+#elif defined(VGA_s390x)
+#  define N_IADDR_LO_ZERO_BITS 1
 #else
 #  error "Unsupported architecture"
 #endif
--- valgrind/cachegrind/tests/filter_stderr
+++ valgrind/cachegrind/tests/filter_stderr
@@ -18,4 +18,6 @@ sed "/warning: Pentium 4 with 12 KB micr
 sed "/Simulating a 16 KB I-cache with 32 B lines/d"   |
 sed "/warning: L3 cache found, using its data for the LL simulation./d" |
 sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d" |
-sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d"
+sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d" |
+sed "/Warning: Cannot auto-detect cache config on s390x, using one or more defaults/d"
+
--- valgrind/callgrind/Makefile.am
+++ valgrind/callgrind/Makefile.am
@@ -49,7 +49,8 @@ CALLGRIND_SOURCES_COMMON = \
 	../cachegrind/cg-x86-amd64.c \
 	../cachegrind/cg-ppc32.c \
 	../cachegrind/cg-ppc64.c \
-	../cachegrind/cg-arm.c
+ 	../cachegrind/cg-arm.c   \
+	../cachegrind/cg-s390x.c
 
 CALLGRIND_CFLAGS_COMMON = -I$(top_srcdir)/cachegrind
 
--- valgrind/callgrind/tests/filter_stderr
+++ valgrind/callgrind/tests/filter_stderr
@@ -27,4 +27,5 @@ sed "/warning: Pentium 4 with 12 KB micr
 sed "/Simulating a 16 KB I-cache with 32 B lines/d"   |
 sed "/warning: L3 cache found, using its data for the LL simulation./d" |
 sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d" |
-sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d"
+sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d" |
+sed "/Warning: Cannot auto-detect cache config on s390x, using one or more defaults/d"
--- valgrind/configure.in
+++ valgrind/configure.in
@@ -158,6 +158,11 @@ case "${host_cpu}" in
         esac
         ;;
 
+     s390x)
+        AC_MSG_RESULT([ok (${host_cpu})])
+        ARCH_MAX="s390x"
+        ;;
+
      armv7*)
 	AC_MSG_RESULT([ok (${host_cpu})])
 	ARCH_MAX="arm"
@@ -519,6 +524,18 @@ case "$ARCH_MAX-$VGCONF_OS" in
         valt_load_address_sec_inner="0xUNSET"
 	AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
 	;;
+     s390x-linux)
+        VGCONF_ARCH_PRI="s390x"
+        VGCONF_ARCH_SEC=""
+        VGCONF_PLATFORM_PRI_CAPS="S390X_LINUX"
+	VGCONF_PLATFORM_SEC_CAPS=""
+        # we want to have the generated code close to the dispatcher
+        valt_load_address_pri_norml="0x401000000"
+        valt_load_address_pri_inner="0x410000000"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+        AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
+        ;;
     *)
         VGCONF_ARCH_PRI="unknown"
         VGCONF_ARCH_SEC="unknown"
@@ -555,6 +572,8 @@ AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_PPC6
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_AIX5 )
 AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_ARM,   
                test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX )
+AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_S390X,
+               test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX )
 
 # Set up VGCONF_PLATFORMS_INCLUDE_<platform>.  Either one or two of these
 # become defined.
@@ -570,6 +589,9 @@ AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_
                test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX)
 AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_ARM_LINUX, 
                test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX)
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_S390X_LINUX,
+               test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xS390X_LINUX)
 
 AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5, 
                test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \ 
@@ -592,7 +614,8 @@ AM_CONDITIONAL(VGCONF_OS_IS_LINUX,
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
-                 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX )
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX)
 AM_CONDITIONAL(VGCONF_OS_IS_AIX5,
                test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_AIX5)
@@ -1585,7 +1608,8 @@ if test x$VGCONF_PLATFORM_PRI_CAPS = xX8
      -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX ; then
   mflag_primary=$FLAG_M32
 elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
-       -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX ; then
+       -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
+       -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then
   mflag_primary=$FLAG_M64
 elif test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 ; then
   mflag_primary=-q32
@@ -1945,6 +1969,7 @@ AC_CONFIG_FILES([
    none/tests/ppc64/Makefile
    none/tests/x86/Makefile
    none/tests/arm/Makefile
+   none/tests/s390x/Makefile
    none/tests/linux/Makefile
    none/tests/darwin/Makefile
    none/tests/x86-linux/Makefile
--- valgrind/coregrind/Makefile.am
+++ valgrind/coregrind/Makefile.am
@@ -289,7 +289,8 @@ COREGRIND_SOURCES_COMMON = \
 	m_dispatch/dispatch-amd64-linux.S \
 	m_dispatch/dispatch-ppc32-linux.S \
 	m_dispatch/dispatch-ppc64-linux.S \
-	m_dispatch/dispatch-arm-linux.S \
+ 	m_dispatch/dispatch-arm-linux.S \
+	m_dispatch/dispatch-s390x-linux.S \
 	m_dispatch/dispatch-ppc32-aix5.S \
 	m_dispatch/dispatch-ppc64-aix5.S \
 	m_dispatch/dispatch-x86-darwin.S \
@@ -309,7 +310,8 @@ COREGRIND_SOURCES_COMMON = \
 	m_sigframe/sigframe-amd64-linux.c \
 	m_sigframe/sigframe-ppc32-linux.c \
 	m_sigframe/sigframe-ppc64-linux.c \
-	m_sigframe/sigframe-arm-linux.c \
+ 	m_sigframe/sigframe-arm-linux.c \
+	m_sigframe/sigframe-s390x-linux.c \
 	m_sigframe/sigframe-ppc32-aix5.c \
 	m_sigframe/sigframe-ppc64-aix5.c \
 	m_sigframe/sigframe-x86-darwin.c \
@@ -318,7 +320,8 @@ COREGRIND_SOURCES_COMMON = \
 	m_syswrap/syscall-amd64-linux.S \
 	m_syswrap/syscall-ppc32-linux.S \
 	m_syswrap/syscall-ppc64-linux.S \
-	m_syswrap/syscall-arm-linux.S \
+ 	m_syswrap/syscall-arm-linux.S \
+	m_syswrap/syscall-s390x-linux.S \
 	m_syswrap/syscall-ppc32-aix5.S \
 	m_syswrap/syscall-ppc64-aix5.S \
 	m_syswrap/syscall-x86-darwin.S \
@@ -333,7 +336,8 @@ COREGRIND_SOURCES_COMMON = \
 	m_syswrap/syswrap-amd64-linux.c \
 	m_syswrap/syswrap-ppc32-linux.c \
 	m_syswrap/syswrap-ppc64-linux.c \
-	m_syswrap/syswrap-arm-linux.c \
+ 	m_syswrap/syswrap-arm-linux.c \
+	m_syswrap/syswrap-s390x-linux.c \
 	m_syswrap/syswrap-ppc32-aix5.c \
 	m_syswrap/syswrap-ppc64-aix5.c \
 	m_syswrap/syswrap-x86-darwin.c \
--- valgrind/coregrind/launcher-linux.c
+++ valgrind/coregrind/launcher-linux.c
@@ -205,6 +205,10 @@ static const char *select_platform(const
                 (ehdr->e_ident[EI_OSABI] == ELFOSABI_SYSV ||
                  ehdr->e_ident[EI_OSABI] == ELFOSABI_LINUX)) {
                platform = "ppc64-linux";
+            } else if (ehdr->e_machine == EM_S390 &&
+                       (ehdr->e_ident[EI_OSABI] == ELFOSABI_SYSV ||
+                        ehdr->e_ident[EI_OSABI] == ELFOSABI_LINUX)) {
+               platform = "s390x-linux";
             }
          }
       }
@@ -278,7 +282,8 @@ int main(int argc, char** argv, char** e
        (0==strcmp(VG_PLATFORM,"amd64-linux")) ||
        (0==strcmp(VG_PLATFORM,"ppc32-linux")) ||
        (0==strcmp(VG_PLATFORM,"ppc64-linux")) ||
-       (0==strcmp(VG_PLATFORM,"arm-linux")))
+       (0==strcmp(VG_PLATFORM,"arm-linux"))   ||
+       (0==strcmp(VG_PLATFORM,"s390x-linux")))
       default_platform = VG_PLATFORM;
    else
       barf("Unknown VG_PLATFORM '%s'", VG_PLATFORM);
--- valgrind/coregrind/m_aspacemgr/aspacemgr-common.c
+++ valgrind/coregrind/m_aspacemgr/aspacemgr-common.c
@@ -159,7 +159,8 @@ SysRes VG_(am_do_mmap_NO_NOTIFY)( Addr s
    res = VG_(do_syscall6)(__NR_mmap2, (UWord)start, length,
                           prot, flags, fd, offset / 4096);
 #  elif defined(VGP_amd64_linux) || defined(VGP_ppc64_linux) \
-        || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
+        || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) \
+        || defined(VGP_s390x_linux)
    res = VG_(do_syscall6)(__NR_mmap, (UWord)start, length, 
                          prot, flags, fd, offset);
 #  elif defined(VGP_x86_darwin)
--- valgrind/coregrind/m_aspacemgr/aspacemgr-linux.c
+++ valgrind/coregrind/m_aspacemgr/aspacemgr-linux.c
@@ -1,4 +1,3 @@
-
 /*--------------------------------------------------------------------*/
 /*--- The address space manager: segment initialisation and        ---*/
 /*--- tracking, stack operations                                   ---*/
@@ -903,7 +902,7 @@ static void sync_check_mapping_callback
       have a sloppyXcheck mode which we enable on x86 - in this mode we
       allow the kernel to report execute permission when we weren't
       expecting it but not vice versa. */
-#  if defined(VGA_x86)
+#  if defined(VGA_x86) || defined (VGA_s390x)
    sloppyXcheck = True;
 #  else
    sloppyXcheck = False;
--- valgrind/coregrind/m_coredump/coredump-elf.c
+++ valgrind/coregrind/m_coredump/coredump-elf.c
@@ -233,9 +233,13 @@ static void fill_prstatus(const ThreadSt
    prs->pr_pgrp = VG_(getpgrp)();
    prs->pr_sid = VG_(getpgrp)();
    
-   regs = (struct vki_user_regs_struct *)prs->pr_reg;
-
+#ifdef VGP_s390x_linux
+   /* prs->pr_reg has struct type. Need to take address. */
+   regs = (struct vki_user_regs_struct *)&(prs->pr_reg);
+#else
+   regs = (struct vki_user_regs_struct *)(prs->pr_reg);
    vg_assert(sizeof(*regs) == sizeof(prs->pr_reg));
+#endif
 
 #if defined(VGP_x86_linux)
    regs->eflags = LibVEX_GuestX86_get_eflags( &arch->vex );
@@ -343,6 +347,16 @@ static void fill_prstatus(const ThreadSt
    regs->ARM_pc   = arch->vex.guest_R15T;
    regs->ARM_cpsr = LibVEX_GuestARM_get_cpsr( &((ThreadArchState*)arch)->vex );
 
+#elif defined(VGP_s390x_linux)
+#  define DO(n)  regs->gprs[n] = arch->vex.guest_r##n
+   DO(0);  DO(1);  DO(2);  DO(3);  DO(4);  DO(5);  DO(6);  DO(7);
+   DO(8);  DO(9);  DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
+#  undef DO
+#  define DO(n)  regs->acrs[n] = arch->vex.guest_a##n
+   DO(0);  DO(1);  DO(2);  DO(3);  DO(4);  DO(5);  DO(6);  DO(7);
+   DO(8);  DO(9);  DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
+#  undef DO
+   regs->orig_gpr2 = arch->vex.guest_r2;
 #else
 #  error Unknown ELF platform
 #endif
@@ -415,6 +429,11 @@ static void fill_fpu(const ThreadState *
 #elif defined(VGP_arm_linux)
    // umm ...
 
+#elif defined(VGP_s390x_linux)
+#  define DO(n)  fpu->fprs[n].ui = arch->vex.guest_f##n
+   DO(0);  DO(1);  DO(2);  DO(3);  DO(4);  DO(5);  DO(6);  DO(7);
+   DO(8);  DO(9);  DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
+# undef DO
 #else
 #  error Unknown ELF platform
 #endif
--- valgrind/coregrind/m_debugger.c
+++ valgrind/coregrind/m_debugger.c
@@ -242,6 +242,76 @@ static Int ptrace_setregs(Int pid, VexGu
 #elif defined(VGP_amd64_darwin)
    I_die_here;
 
+#elif defined(VGP_s390x_linux)
+   struct vki_user_regs_struct regs;
+   vki_ptrace_area pa;
+
+   /* we dont set the psw mask and start at offset 8 */
+   pa.vki_len = 8*32+8; //sizeof(regs);
+   pa.vki_process_addr = (unsigned long) &regs + 8 ;
+   pa.vki_kernel_addr = 8;
+
+   VG_(memset)(&regs, 0, sizeof(regs));
+   regs.psw.addr = vex->guest_IA;
+
+   /* we dont set the mask */
+   regs.gprs[0] = vex->guest_r0;
+   regs.gprs[1] = vex->guest_r1;
+   regs.gprs[2] = vex->guest_r2;
+   regs.gprs[3] = vex->guest_r3;
+   regs.gprs[4] = vex->guest_r4;
+   regs.gprs[5] = vex->guest_r5;
+   regs.gprs[6] = vex->guest_r6;
+   regs.gprs[7] = vex->guest_r7;
+   regs.gprs[8] = vex->guest_r8;
+   regs.gprs[9] = vex->guest_r9;
+   regs.gprs[10] = vex->guest_r10;
+   regs.gprs[11] = vex->guest_r11;
+   regs.gprs[12] = vex->guest_r12;
+   regs.gprs[13] = vex->guest_r13;
+   regs.gprs[14] = vex->guest_r14;
+   regs.gprs[15] = vex->guest_r15;
+
+   regs.acrs[0] = vex->guest_a0;
+   regs.acrs[1] = vex->guest_a1;
+   regs.acrs[2] = vex->guest_a2;
+   regs.acrs[3] = vex->guest_a3;
+   regs.acrs[4] = vex->guest_a4;
+   regs.acrs[5] = vex->guest_a5;
+   regs.acrs[6] = vex->guest_a6;
+   regs.acrs[7] = vex->guest_a7;
+   regs.acrs[8] = vex->guest_a8;
+   regs.acrs[9] = vex->guest_a9;
+   regs.acrs[10] = vex->guest_a10;
+   regs.acrs[11] = vex->guest_a11;
+   regs.acrs[12] = vex->guest_a12;
+   regs.acrs[13] = vex->guest_a13;
+   regs.acrs[14] = vex->guest_a14;
+   regs.acrs[15] = vex->guest_a15;
+
+   /* only used for system call restart and friends, just use r2 */
+   regs.orig_gpr2 = vex->guest_r2;
+
+   regs.fp_regs.fprs[0].ui = vex->guest_f0;
+   regs.fp_regs.fprs[1].ui = vex->guest_f1;
+   regs.fp_regs.fprs[2].ui = vex->guest_f2;
+   regs.fp_regs.fprs[3].ui = vex->guest_f3;
+   regs.fp_regs.fprs[4].ui = vex->guest_f4;
+   regs.fp_regs.fprs[5].ui = vex->guest_f5;
+   regs.fp_regs.fprs[6].ui = vex->guest_f6;
+   regs.fp_regs.fprs[7].ui = vex->guest_f7;
+   regs.fp_regs.fprs[8].ui = vex->guest_f8;
+   regs.fp_regs.fprs[9].ui = vex->guest_f9;
+   regs.fp_regs.fprs[10].ui = vex->guest_f10;
+   regs.fp_regs.fprs[11].ui = vex->guest_f11;
+   regs.fp_regs.fprs[12].ui = vex->guest_f12;
+   regs.fp_regs.fprs[13].ui = vex->guest_f13;
+   regs.fp_regs.fprs[14].ui = vex->guest_f14;
+   regs.fp_regs.fprs[15].ui = vex->guest_f15;
+   regs.fp_regs.fpc = vex->guest_fpc;
+
+   return VG_(ptrace)(VKI_PTRACE_POKEUSR_AREA, pid,  &pa, NULL);
+
 #else
 #  error Unknown arch
 #endif
--- valgrind/coregrind/m_debuginfo/d3basics.c
+++ valgrind/coregrind/m_debuginfo/d3basics.c
@@ -409,6 +409,9 @@ static Bool get_Dwarf_Reg( /*OUT*/Addr*
    if (regno == 11) { *a = regs->fp; return True; } 
 #  elif defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
    vg_assert(0); /* this function should never be called */
+#  elif defined(VGP_s390x_linux)
+   if (regno == 15) { *a = regs->sp; return True; }
+   if (regno == 11) { *a = regs->fp; return True; }
 #  else
 #    error "Unknown platform"
 #  endif
--- valgrind/coregrind/m_debuginfo/debuginfo.c
+++ valgrind/coregrind/m_debuginfo/debuginfo.c
@@ -703,6 +703,15 @@ ULong VG_(di_notify_mmap)( Addr a, Bool
 
       2009 Aug 16: apply similar kludge to ppc32-linux.
       See http://bugs.kde.org/show_bug.cgi?id=190820
+
+      there are two modes on s390x: with and without the noexec kernel
+      parameter. Together with some older kernels, this leads to several
+      variants:
+      executable: r and x
+      data:       r and w and x
+      or
+      executable: r and x
+      data:       r and w
    */
    is_rx_map = False;
    is_rw_map = False;
@@ -712,6 +721,9 @@ ULong VG_(di_notify_mmap)( Addr a, Bool
 #  elif defined(VGA_amd64) || defined(VGA_ppc64) || defined(VGA_arm)
    is_rx_map = seg->hasR && seg->hasX && !seg->hasW;
    is_rw_map = seg->hasR && seg->hasW && !seg->hasX;
+#  elif defined(VGP_s390x_linux)
+   is_rx_map = seg->hasR && seg->hasX && !seg->hasW;
+   is_rw_map = seg->hasR && seg->hasW;
 #  else
 #    error "Unknown platform"
 #  endif
@@ -1972,6 +1984,10 @@ UWord evalCfiExpr ( XArray* exprs, Int i
             case Creg_ARM_R14: return eec->uregs->r14;
             case Creg_ARM_R13: return eec->uregs->r13;
             case Creg_ARM_R12: return eec->uregs->r12;
+#           elif defined(VGA_s390x)
+            case Creg_IA_IP: return eec->uregs->ia;
+            case Creg_IA_SP: return eec->uregs->sp;
+            case Creg_IA_BP: return eec->uregs->fp;
 #           elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #           else
 #             error "Unsupported arch"
@@ -2182,6 +2198,24 @@ static Addr compute_cfa ( D3UnwindRegs*
       case CFIC_ARM_R7REL: 
          cfa = cfsi->cfa_off + uregs->r7;
          break;
+#     elif defined(VGA_s390x)
+      case CFIC_IA_SPREL:
+         cfa = cfsi->cfa_off + uregs->sp;
+         break;
+      case CFIR_MEMCFAREL:
+      {
+         Addr a = uregs->sp + cfsi->cfa_off;
+         if (a < min_accessible || a > max_accessible-sizeof(Addr))
+            break;
+         cfa = *(Addr*)a;
+         break;
+      }
+      case CFIR_SAME:
+         cfa = uregs->fp;
+         break;
+      case CFIC_IA_BPREL:
+         cfa = cfsi->cfa_off + uregs->fp;
+         break;
 #     elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #     else
 #       error "Unsupported arch"
@@ -2234,6 +2268,15 @@ Addr ML_(get_CFA) ( Addr ip, Addr sp, Ad
      return compute_cfa(&uregs,
                         min_accessible,  max_accessible, di, cfsi);
    }
+#elif defined(VGA_s390x)
+   { D3UnwindRegs uregs;
+     uregs.ia = ip;
+     uregs.sp = sp;
+     uregs.fp = fp;
+     return compute_cfa(&uregs,
+                        min_accessible,  max_accessible, di, cfsi);
+   }
+
 #  else
    return 0; /* indicates failure */
 #  endif
@@ -2266,6 +2309,8 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindR
    ipHere = uregsHere->xip;
 #  elif defined(VGA_arm)
    ipHere = uregsHere->r15;
+#  elif defined(VGA_s390x)
+   ipHere = uregsHere->ia;
 #  elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #  else
 #    error "Unknown arch"
@@ -2338,6 +2383,15 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindR
    COMPUTE(uregsPrev.r12, uregsHere->r12, cfsi->r12_how, cfsi->r12_off);
    COMPUTE(uregsPrev.r11, uregsHere->r11, cfsi->r11_how, cfsi->r11_off);
    COMPUTE(uregsPrev.r7,  uregsHere->r7,  cfsi->r7_how,  cfsi->r7_off);
+#  elif defined(VGA_s390x)
+   /* sepcial case for the first frame */
+   if (cfsi->ra_how == CFIR_UNKNOWN)
+      uregsPrev.ia = uregsHere->lr;
+   else
+      COMPUTE(uregsPrev.ia, uregsHere->ia, cfsi->ra_how, cfsi->ra_off);
+   COMPUTE(uregsPrev.sp, uregsHere->sp, cfsi->sp_how, cfsi->sp_off);
+   COMPUTE(uregsPrev.fp, uregsHere->fp, cfsi->fp_how, cfsi->fp_off);
+   /* we only need R14 for the first time, no need to calculate further*/
 #  elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #  else
 #    error "Unknown arch"
--- valgrind/coregrind/m_debuginfo/priv_storage.h
+++ valgrind/coregrind/m_debuginfo/priv_storage.h
@@ -208,6 +208,21 @@ typedef
       Int   ra_off;
    }
    DiCfSI;
+#elif defined(VGA_s390x)
+typedef
+   struct {
+      Addr  base;
+      UInt  len;
+      UChar cfa_how; /* a CFIC_ value */
+      UChar sp_how;  /* a CFIR_ value */
+      UChar ra_how;  /* a CFIR_ value */
+      UChar fp_how;  /* a CFIR_ value */
+      Int   cfa_off;
+      Int   sp_off;
+      Int   ra_off;
+      Int   fp_off;
+   }
+   DiCfSI;
 #else
 #  error "Unknown arch"
 #endif
--- valgrind/coregrind/m_debuginfo/readdwarf.c
+++ valgrind/coregrind/m_debuginfo/readdwarf.c
@@ -1832,6 +1832,10 @@ void ML_(read_debuginfo_dwarf1) (
 #  define FP_REG         6
 #  define SP_REG         7
 #  define RA_REG_DEFAULT 16
+#elif defined(VGP_s390x_linux)
+#  define FP_REG         11    // sometimes s390 has a frame pointer in r11
+#  define SP_REG         15    // stack is always r15
+#  define RA_REG_DEFAULT 14    // the return address is in r14
 #else
 #  error "Unknown platform"
 #endif
@@ -2139,7 +2143,7 @@ static Bool summarise_context( /*OUT*/Di
    else
    if (ctxs->cfa_is_regoff && ctxs->cfa_reg == SP_REG) {
       si->cfa_off = ctxs->cfa_off;
-#     if defined(VGA_x86) || defined(VGA_amd64)
+#     if defined(VGA_x86) || defined(VGA_amd64) || defined(VGA_s390x)
       si->cfa_how = CFIC_IA_SPREL;
 #     elif defined(VGA_arm)
       si->cfa_how = CFIC_ARM_R13REL;
@@ -2150,7 +2154,7 @@ static Bool summarise_context( /*OUT*/Di
    else
    if (ctxs->cfa_is_regoff && ctxs->cfa_reg == FP_REG) {
       si->cfa_off = ctxs->cfa_off;
-#     if defined(VGA_x86) || defined(VGA_amd64)
+#     if defined(VGA_x86) || defined(VGA_amd64) || defined(VGA_s390x)
       si->cfa_how = CFIC_IA_BPREL;
 #     elif defined(VGA_arm)
       si->cfa_how = CFIC_ARM_R12REL;
@@ -2303,6 +2307,45 @@ static Bool summarise_context( /*OUT*/Di
    return True;
 
 
+#  elif defined(VGA_s390x)
+
+   SUMMARISE_HOW(si->ra_how, si->ra_off,
+                             ctxs->reg[ctx->ra_reg] );
+   SUMMARISE_HOW(si->fp_how, si->fp_off,
+                             ctxs->reg[FP_REG] );
+   SUMMARISE_HOW(si->sp_how, si->sp_off,
+                             ctxs->reg[SP_REG] );
+
+   /* change some defaults to consumable values */
+   if (si->sp_how == CFIR_UNKNOWN)
+      si->sp_how = CFIR_SAME;
+
+   if (si->fp_how == CFIR_UNKNOWN)
+      si->fp_how = CFIR_SAME;
+
+   if (si->cfa_how == CFIR_UNKNOWN) {
+      si->cfa_how = CFIC_IA_SPREL;
+      si->cfa_off = 160;
+   }
+
+   /* knock out some obviously stupid cases */
+   if (si->ra_how == CFIR_SAME)
+      { why = 3; goto failed; }
+
+   /* bogus looking range?  Note, we require that the difference is
+      representable in 32 bits. */
+   if (loc_start >= ctx->loc)
+      { why = 4; goto failed; }
+   if (ctx->loc - loc_start > 10000000 /* let's say */)
+      { why = 5; goto failed; }
+
+   si->base = loc_start + ctx->initloc;
+   si->len  = (UInt)(ctx->loc - loc_start);
+
+   return True;
+
+
+
 #  elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #  else
 #    error "Unknown arch"
@@ -2376,6 +2419,13 @@ static Int copy_convert_CfiExpr_tree ( X
             return ML_(CfiExpr_CfiReg)( dstxa, Creg_ARM_R12 );
          if (dwreg == srcuc->ra_reg)
            return ML_(CfiExpr_CfiReg)( dstxa, Creg_ARM_R15 ); /* correct? */
+#        elif defined(VGA_s390x)
+         if (dwreg == SP_REG)
+            return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_SP );
+         if (dwreg == FP_REG)
+            return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_BP );
+         if (dwreg == srcuc->ra_reg)
+            return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_IP ); /* correct? */
 #        elif defined(VGA_ppc32) || defined(VGA_ppc64)
 #        else
 #           error "Unknown arch"
--- valgrind/coregrind/m_debuginfo/readelf.c
+++ valgrind/coregrind/m_debuginfo/readelf.c
@@ -1739,7 +1739,7 @@ Bool ML_(read_elf_debug_info) ( struct _
 
       /* PLT is different on different platforms, it seems. */
 #     if defined(VGP_x86_linux) || defined(VGP_amd64_linux) \
-         || defined(VGP_arm_linux)
+         || defined(VGP_arm_linux) || defined (VGP_s390x_linux)
       /* Accept .plt where mapped as rx (code) */
       if (0 == VG_(strcmp)(name, ".plt")) {
          if (inrx && size > 0 && !di->plt_present) {
@@ -2187,8 +2187,9 @@ Bool ML_(read_elf_debug_info) ( struct _
 
       /* Read the stabs and/or dwarf2 debug information, if any.  It
          appears reading stabs stuff on amd64-linux doesn't work, so
-         we ignore it. */
-#     if !defined(VGP_amd64_linux)
+         we ignore it. On s390x stabs also doesnt work and we always
+         have the dwarf info in the eh_frame. */
+#     if !defined(VGP_amd64_linux)  && !defined(VGP_s390x_linux)
       if (stab_img && stabstr_img) {
          ML_(read_debuginfo_stabs) ( di, stab_img, stab_sz, 
                                          stabstr_img, stabstr_sz );
--- valgrind/coregrind/m_debuginfo/storage.c
+++ valgrind/coregrind/m_debuginfo/storage.c
@@ -141,6 +141,9 @@ void ML_(ppDiCfSI) ( XArray* /* of CfiEx
       case CFIC_ARM_R11REL: 
          VG_(printf)("let cfa=oldR11+%d", si->cfa_off); 
          break;
+      case CFIR_SAME:
+         VG_(printf)("let cfa=Same");
+         break;
       case CFIC_ARM_R7REL: 
          VG_(printf)("let cfa=oldR7+%d", si->cfa_off); 
          break;
@@ -172,6 +175,11 @@ void ML_(ppDiCfSI) ( XArray* /* of CfiEx
    VG_(printf)(" R7=");
    SHOW_HOW(si->r7_how, si->r7_off);
 #  elif defined(VGA_ppc32) || defined(VGA_ppc64)
+#  elif defined(VGA_s390x)
+   VG_(printf)(" SP=");
+   SHOW_HOW(si->sp_how, si->sp_off);
+   VG_(printf)(" FP=");
+   SHOW_HOW(si->fp_how, si->fp_off);
 #  else
 #    error "Unknown arch"
 #  endif
--- valgrind/coregrind/m_debuglog.c
+++ valgrind/coregrind/m_debuglog.c
@@ -516,6 +516,54 @@ static UInt local_sys_getpid ( void )
    return __res;
 }
 
+#elif defined(VGP_s390x_linux)
+static UInt local_sys_write_stderr ( HChar* buf, Int n )
+{
+	register Int    r2     asm("2") = 2;      /* file descriptor STDERR */
+	register HChar* r3     asm("3") = buf;
+	register ULong  r4     asm("4") = n;
+	register ULong  r2_res asm("2");
+	ULong __res;
+
+	__asm__ __volatile__ (
+		"    svc %b1\n"
+		: "=d" (r2_res)
+		: "i" (__NR_write),
+		  "0" (r2),
+		  "d" (r3),
+		  "d" (r4)
+		: "cc", "memory");
+
+	__res = r2_res;
+
+	if (__res >= (ULong)(-125))
+	{
+		__res = -1;
+	}
+	return (UInt)(__res);
+}
+
+static UInt local_sys_getpid ( void )
+{
+	register ULong r2 asm("2");
+	ULong __res;
+
+	__asm__ __volatile__ (
+		"    svc %b1\n"
+		: "=d" (r2)
+		: "i" (__NR_getpid)
+		: "cc", "memory");
+
+	__res = r2;
+
+	if (__res >= (ULong)(-125))
+	{
+		__res = -1;
+	}
+	return (UInt)(__res);
+}
+
+
 #else
 # error Unknown platform
 #endif
--- valgrind/coregrind/m_initimg/initimg-linux.c
+++ valgrind/coregrind/m_initimg/initimg-linux.c
@@ -1040,6 +1040,22 @@ void VG_(ii_finalise_image)( IIFinaliseI
    // FIXME jrs: what's this for?
    arch->vex.guest_R1 =  iifii.initial_client_SP;
 
+#  elif defined(VGP_s390x_linux)
+   vg_assert(0 == sizeof(VexGuestS390XState) % 16);
+   vg_assert(0 == sizeof(VexGuestS390XState) % VexGuestS390XStateAlignment);
+
+   /* Zero out the initial state. This also sets the guest_fpc to 0, which
+      is also done by the kernel for the fpc during execve. */
+   LibVEX_GuestS390X_initialise(&arch->vex);
+
+   /* Zero out the shadow area. */
+   VG_(memset)(&arch->vex_shadow1, 0, sizeof(VexGuestS390XState));
+   VG_(memset)(&arch->vex_shadow2, 0, sizeof(VexGuestS390XState));
+
+   /* Put essential stuff into the new state. */
+   arch->vex.guest_SP = iifii.initial_client_SP;
+   arch->vex.guest_IA = iifii.initial_client_IP;
+
 #  else
 #    error Unknown platform
 #  endif
--- valgrind/coregrind/m_libcassert.c
+++ valgrind/coregrind/m_libcassert.c
@@ -135,6 +135,22 @@
         (srP)->misc.ARM.r11 = block[4];                   \
         (srP)->misc.ARM.r7  = block[5];                   \
       }
+#elif defined(VGP_s390x_linux)
+#  define GET_STARTREGS(srP)                              \
+      { ULong ia, sp, fp, lr;                             \
+        __asm__ __volatile__(                             \
+           "bras %0,0f;"                                  \
+           "0: lgr %1,15;"                                \
+           "lgr %2,11;"                                   \
+           "lgr %3,14;"                                   \
+           : "=r" (ia), "=r" (sp),"=r" (fp),"=r" (lr)     \
+           /* no read & clobber */                        \
+        );                                                \
+        (srP)->r_pc = ia;                                 \
+        (srP)->r_sp = sp;                                 \
+        (srP)->misc.S390X.r_fp = fp;                      \
+        (srP)->misc.S390X.r_lr = lr;                      \
+      }
 #else
 #  error Unknown platform
 #endif
--- valgrind/coregrind/m_libcfile.c
+++ valgrind/coregrind/m_libcfile.c
@@ -795,7 +795,7 @@ static Int parse_inet_addr_and_port ( UC
 Int VG_(socket) ( Int domain, Int type, Int protocol )
 {
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
-      || defined(VGP_ppc64_linux)
+      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
    SysRes res;
    UWord  args[3];
    args[0] = domain;
@@ -836,7 +836,7 @@ static
 Int my_connect ( Int sockfd, struct vki_sockaddr_in* serv_addr, Int addrlen )
 {
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
-      || defined(VGP_ppc64_linux)
+      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
    SysRes res;
    UWord  args[3];
    args[0] = sockfd;
@@ -876,7 +876,7 @@ Int VG_(write_socket)( Int sd, void *msg
       SIGPIPE */
 
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
-      || defined(VGP_ppc64_linux)
+      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
    SysRes res;
    UWord  args[4];
    args[0] = sd;
@@ -908,7 +908,7 @@ Int VG_(write_socket)( Int sd, void *msg
 Int VG_(getsockname) ( Int sd, struct vki_sockaddr *name, Int *namelen)
 {
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
-      || defined(VGP_ppc64_linux)
+      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
    SysRes res;
    UWord  args[3];
    args[0] = sd;
@@ -940,7 +940,7 @@ Int VG_(getsockname) ( Int sd, struct vk
 Int VG_(getpeername) ( Int sd, struct vki_sockaddr *name, Int *namelen)
 {
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
-      || defined(VGP_ppc64_linux)
+      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
    SysRes res;
    UWord  args[3];
    args[0] = sd;
@@ -973,7 +973,7 @@ Int VG_(getsockopt) ( Int sd, Int level,
                       Int *optlen)
 {
 #  if defined(VGP_x86_linux) || defined(VGP_ppc32_linux) \
-      || defined(VGP_ppc64_linux)
+      || defined(VGP_ppc64_linux) || defined(VGP_s390x_linux)
    SysRes res;
    UWord  args[5];
    args[0] = sd;
--- valgrind/coregrind/m_libcproc.c
+++ valgrind/coregrind/m_libcproc.c
@@ -545,7 +545,7 @@ Int VG_(getgroups)( Int size, UInt* list
 #  elif defined(VGP_amd64_linux) || defined(VGP_ppc64_linux)  \
         || defined(VGP_arm_linux)                             \
         || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) \
-        || defined(VGO_darwin)
+        || defined(VGO_darwin) || defined(VGP_s390x_linux)
    SysRes sres;
    sres = VG_(do_syscall2)(__NR_getgroups, size, (Addr)list);
    if (sr_isError(sres))
--- valgrind/coregrind/m_machine.c
+++ valgrind/coregrind/m_machine.c
@@ -94,6 +94,13 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/U
       = VG_(threads)[tid].arch.vex.guest_R11;
    regs->misc.ARM.r7
       = VG_(threads)[tid].arch.vex.guest_R7;
+#  elif defined(VGA_s390x)
+   regs->r_pc = (ULong)VG_(threads)[tid].arch.vex.guest_IA;
+   regs->r_sp = (ULong)VG_(threads)[tid].arch.vex.guest_SP;
+   regs->misc.S390X.r_fp
+      = VG_(threads)[tid].arch.vex.guest_r11;
+   regs->misc.S390X.r_lr
+      = VG_(threads)[tid].arch.vex.guest_r14;
 #  else
 #    error "Unknown arch"
 #  endif
@@ -125,6 +132,9 @@ void VG_(set_syscall_return_shadows) ( T
    VG_(threads)[tid].arch.vex_shadow2.guest_GPR4 = s2err;
 #  elif defined(VGO_darwin)
    // GrP fixme darwin syscalls may return more values (2 registers plus error)
+#  elif defined(VGP_s390x_linux)
+   VG_(threads)[tid].arch.vex_shadow1.guest_r2 = s1res;
+   VG_(threads)[tid].arch.vex_shadow2.guest_r2 = s2res;
 #  else
 #    error "Unknown plat"
 #  endif
@@ -257,6 +267,24 @@ static void apply_to_GPs_of_tid(VexGuest
    (*f)(vex->guest_R12);
    (*f)(vex->guest_R13);
    (*f)(vex->guest_R14);
+#elif defined(VGA_s390x)
+/* fixs390: revisit once guest state is finalized */
+   (*f)(vex->guest_r0);
+   (*f)(vex->guest_r1);
+   (*f)(vex->guest_r2);
+   (*f)(vex->guest_r3);
+   (*f)(vex->guest_r4);
+   (*f)(vex->guest_r5);
+   (*f)(vex->guest_r6);
+   (*f)(vex->guest_r7);
+   (*f)(vex->guest_r8);
+   (*f)(vex->guest_r9);
+   (*f)(vex->guest_r10);
+   (*f)(vex->guest_r11);
+   (*f)(vex->guest_r12);
+   (*f)(vex->guest_r13);
+   (*f)(vex->guest_r14);
+   (*f)(vex->guest_r15);
 #else
 #  error Unknown arch
 #endif
@@ -357,6 +385,11 @@ SizeT VG_(thread_get_altstack_size)(Thre
           then safe to use VG_(machine_get_VexArchInfo) 
                        and VG_(machine_ppc64_has_VMX)
 
+   -------------
+   s390x: initially:  call VG_(machine_get_hwcaps)
+
+          then safe to use VG_(machine_get_VexArchInfo)
+
    VG_(machine_get_hwcaps) may use signals (although it attempts to
    leave signal state unchanged) and therefore should only be
    called before m_main sets up the client's signal state.
@@ -383,10 +416,11 @@ ULong VG_(machine_ppc64_has_VMX) = 0;
 Int VG_(machine_arm_archlevel) = 4;
 #endif
 
+/* fixs390: anything for s390x here ? */
 
 /* For hwcaps detection on ppc32/64 and arm we'll need to do SIGILL
    testing, so we need a jmp_buf. */
-#if defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_arm)
+#if defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_arm) || defined(VGA_s390x)
 #include <setjmp.h> // For jmp_buf
 static jmp_buf env_unsup_insn;
 static void handler_unsup_insn ( Int x ) { __builtin_longjmp(env_unsup_insn,1); }
@@ -835,6 +869,96 @@ Bool VG_(machine_get_hwcaps)( void )
      return True;
    }
 
+#elif defined(VGA_s390x)
+   {
+     /* Instruction set detection code borrowed from ppc above. */
+     vki_sigset_t          saved_set, tmp_set;
+     vki_sigaction_fromK_t saved_sigill_act;
+     vki_sigaction_toK_t     tmp_sigill_act;
+
+     volatile Bool have_LDISP, have_EIMM, have_GIE, have_DFP;
+     Int r;
+
+     /* Unblock SIGILL and stash away the old action for that signal */
+     VG_(sigemptyset)(&tmp_set);
+     VG_(sigaddset)(&tmp_set, VKI_SIGILL);
+
+     r = VG_(sigprocmask)(VKI_SIG_UNBLOCK, &tmp_set, &saved_set);
+     vg_assert(r == 0);
+
+     r = VG_(sigaction)(VKI_SIGILL, NULL, &saved_sigill_act);
+     vg_assert(r == 0);
+     tmp_sigill_act = saved_sigill_act;
+
+     /* NODEFER: signal handler does not return (from the kernel's point of
+        view), hence if it is to successfully catch a signal more than once,
+        we need the NODEFER flag. */
+     tmp_sigill_act.sa_flags &= ~VKI_SA_RESETHAND;
+     tmp_sigill_act.sa_flags &= ~VKI_SA_SIGINFO;
+     tmp_sigill_act.sa_flags |=  VKI_SA_NODEFER;
+     tmp_sigill_act.ksa_handler = handler_unsup_insn;
+     VG_(sigaction)(VKI_SIGILL, &tmp_sigill_act, NULL);
+
+     /* Determine hwcaps. Note, we cannot use the stfle insn because it
+        is not supported on z900. */
+
+     have_LDISP = True;
+     if (__builtin_setjmp(env_unsup_insn)) {
+        have_LDISP = False;
+     } else {
+       /* BASR loads the address of the next insn into r1. Needed to avoid
+          a segfault in XY. */
+        __asm__ __volatile__("basr %%r1,%%r0\n\t"
+                             ".long  0xe3001000\n\t"  /* XY  0,0(%r1) */
+                             ".short 0x0057" : : : "r0", "r1", "cc", "memory");
+     }
+
+     have_EIMM = True;
+     if (__builtin_setjmp(env_unsup_insn)) {
+        have_EIMM = False;
+     } else {
+        __asm__ __volatile__(".long  0xc0090000\n\t"  /* iilf r0,0 */
+                             ".short 0x0000" : : : "r0", "memory");
+     }
+
+     have_GIE = True;
+     if (__builtin_setjmp(env_unsup_insn)) {
+        have_GIE = False;
+     } else {
+        __asm__ __volatile__(".long  0xc2010000\n\t"  /* msfi r0,0 */
+                             ".short 0x0000" : : : "r0", "memory");
+     }
+
+     have_DFP = True;
+     if (__builtin_setjmp(env_unsup_insn)) {
+        have_DFP = False;
+     } else {
+        __asm__ __volatile__(".long 0xb3d20000"
+                               : : : "r0", "cc", "memory");  /* adtr r0,r0,r0 */
+     }
+
+     /* Restore signals */
+     r = VG_(sigaction)(VKI_SIGILL, &saved_sigill_act, NULL);
+     vg_assert(r == 0);
+     r = VG_(sigprocmask)(VKI_SIG_SETMASK, &saved_set, NULL);
+     vg_assert(r == 0);
+     VG_(debugLog)(1, "machine", "LDISP %d EIMM %d GIE %d DFP %d\n",
+                   have_LDISP, have_EIMM, have_GIE, have_DFP);
+
+     /* Check for long displacement facility which is required */
+     if (! have_LDISP) return False;
+
+     va = VexArchS390X;
+
+     vai.hwcaps = 0;
+     if (have_LDISP) vai.hwcaps |= VEX_HWCAPS_S390X_LDISP;
+     if (have_EIMM)  vai.hwcaps |= VEX_HWCAPS_S390X_EIMM;
+     if (have_GIE)   vai.hwcaps |= VEX_HWCAPS_S390X_GIE;
+     if (have_DFP)   vai.hwcaps |= VEX_HWCAPS_S390X_DFP;
+
+     return True;
+   }
+
 #elif defined(VGA_arm)
    {
      /* Same instruction set detection algorithm as for ppc32. */
@@ -1017,7 +1141,8 @@ void* VG_(fnptr_to_fnentry)( void* f )
 {
 #if defined(VGP_x86_linux) || defined(VGP_amd64_linux)  \
     || defined(VGP_arm_linux)                           \
-    || defined(VGP_ppc32_linux) || defined(VGO_darwin)
+    || defined(VGP_ppc32_linux) || defined(VGO_darwin)  \
+    || defined(VGP_s390x_linux)
    return f;
 #elif defined(VGP_ppc64_linux) || defined(VGP_ppc32_aix5) \
                                || defined(VGP_ppc64_aix5)
--- valgrind/coregrind/m_main.c
+++ valgrind/coregrind/m_main.c
@@ -1620,6 +1620,7 @@ Int valgrind_main ( Int argc, HChar **ar
                     "AMD Athlon or above)\n");
         VG_(printf)("   * AMD Athlon64/Opteron\n");
         VG_(printf)("   * PowerPC (most; ppc405 and above)\n");
+        VG_(printf)("   * s390 (z900 and up with long displacement facility)\n");
         VG_(printf)("\n");
         VG_(exit)(1);
      }
@@ -1931,6 +1932,8 @@ Int valgrind_main ( Int argc, HChar **ar
       iters = 5;
 #     elif defined(VGP_arm_linux)
       iters = 1;
+#     elif defined(VGP_s390x_linux)
+      iters = 10;
 #     elif defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
       iters = 4;
 #     elif defined(VGO_darwin)
@@ -2073,7 +2076,6 @@ Int valgrind_main ( Int argc, HChar **ar
         = VG_(am_change_ownership_v_to_c)( co_start, co_endPlus - co_start );
      vg_assert(change_ownership_v_c_OK);
    }
-
    //--------------------------------------------------------------
    // Initialise the scheduler (phase 1) [generates tid_main]
    //   p: none, afaics
@@ -2771,6 +2773,47 @@ asm("\n"
     "\tnop\n"
     "\ttrap\n"
 );
+#elif defined(VGP_s390x_linux)
+/*
+    This is the canonical entry point, usually the first thing in the text
+    segment. Most registers' values are unspecified, except for:
+
+    %r14         Contains a function pointer to be registered with `atexit'.
+                 This is how the dynamic linker arranges to have DT_FINI
+                 functions called for shared libraries that have been loaded
+                 before this code runs.
+
+    %r15         The stack contains the arguments and environment:
+                 0(%r15)              argc
+                 8(%r15)              argv[0]
+                 ...
+                 (8*argc)(%r15)       NULL
+                 (8*(argc+1))(%r15)   envp[0]
+                 ...
+                                      NULL
+*/
+asm("\n\t"
+    ".text\n\t"
+    ".globl _start\n\t"
+    ".type  _start,@function\n\t"
+    "_start:\n\t"
+    /* set up the new stack in %r1 */
+    "larl   %r1,  vgPlain_interim_stack\n\t"
+    "larl   %r5,  1f\n\t"
+    "ag     %r1,  0(%r5)\n\t"
+    "ag     %r1,  2f-1f(%r5)\n\t"
+    "nill   %r1,  0xFFF0\n\t"
+    /* install it, and collect the original one */
+    "lgr    %r2,  %r15\n\t"
+    "lgr    %r15, %r1\n\t"
+    /* call _start_in_C_linux, passing it the startup %r15 */
+    "brasl  %r14, _start_in_C_linux\n\t"
+    /* trigger execution of an invalid opcode -> halt machine */
+    "j      .+2\n\t"
+    "1:   .quad "VG_STRINGIFY(VG_STACK_GUARD_SZB)"\n\t"
+    "2:   .quad "VG_STRINGIFY(VG_STACK_ACTIVE_SZB)"\n\t"
+    ".previous\n"
+);
 #elif defined(VGP_arm_linux)
 asm("\n"
     "\t.align 2\n"
--- valgrind/coregrind/m_redir.c
+++ valgrind/coregrind/m_redir.c
@@ -1065,6 +1065,9 @@ void VG_(redir_initialise) ( void )
                          (Addr)&VG_(amd64_darwin_REDIR_FOR_arc4random), NULL);
    }
 
+#  elif defined(VGP_s390x_linux)
+   /* fixs390 */
+
 #  else
 #    error Unknown platform
 #  endif
--- valgrind/coregrind/m_scheduler/scheduler.c
+++ valgrind/coregrind/m_scheduler/scheduler.c
@@ -677,6 +677,10 @@ static void do_pre_run_checks ( ThreadSt
    vg_assert(VG_IS_8_ALIGNED(& tst->arch.vex_shadow1.guest_D1));
    vg_assert(VG_IS_8_ALIGNED(& tst->arch.vex_shadow2.guest_D1));
 #  endif
+
+#  if defined(VGA_s390x)
+   vg_assert(sz_vex % VexGuestS390XStateAlignment == 0);
+#  endif
 }
 
 
@@ -1310,6 +1314,9 @@ void VG_(nuke_all_threads_except) ( Thre
 #elif defined(VGA_arm)
 #  define VG_CLREQ_ARGS       guest_R4
 #  define VG_CLREQ_RET        guest_R3
+#elif defined (VGA_s390x)
+#  define VG_CLREQ_ARGS       guest_r2
+#  define VG_CLREQ_RET        guest_r3
 #else
 #  error Unknown arch
 #endif
--- valgrind/coregrind/m_signals.c
+++ valgrind/coregrind/m_signals.c
@@ -523,7 +523,24 @@ typedef struct SigQueue {
       I_die_here;
    }
 
-#else 
+#elif defined(VGP_s390x_linux)
+
+#  define VG_UCONTEXT_INSTR_PTR(uc)       ((uc)->uc_mcontext.regs.psw.addr)
+#  define VG_UCONTEXT_STACK_PTR(uc)       ((uc)->uc_mcontext.regs.gprs[15])
+#  define VG_UCONTEXT_FRAME_PTR(uc)       ((uc)->uc_mcontext.regs.gprs[11])
+#  define VG_UCONTEXT_SYSCALL_SYSRES(uc)                        \
+      VG_(mk_SysRes_s390x_linux)((uc)->uc_mcontext.regs.gprs[2])
+#  define VG_UCONTEXT_LINK_REG(uc) ((uc)->uc_mcontext.regs.gprs[14])
+
+#  define VG_UCONTEXT_TO_UnwindStartRegs(srP, uc)        \
+      { (srP)->r_pc = (ULong)((uc)->uc_mcontext.regs.psw.addr);    \
+        (srP)->r_sp = (ULong)((uc)->uc_mcontext.regs.gprs[15]);    \
+        (srP)->misc.S390X.r_fp = (uc)->uc_mcontext.regs.gprs[11];  \
+        (srP)->misc.S390X.r_lr = (uc)->uc_mcontext.regs.gprs[14];  \
+      }
+
+
+#else
 #  error Unknown platform
 #endif
 
@@ -852,6 +869,13 @@ extern void my_sigreturn(void);
    "my_sigreturn:\n" \
    "ud2\n"
 
+#elif defined(VGP_s390x_linux)
+#  define _MY_SIGRETURN(name) \
+   ".text\n" \
+   "my_sigreturn:\n" \
+   " svc " #name "\n" \
+   ".previous\n"
+
 #else
 #  error Unknown platform
 #endif
@@ -1862,6 +1886,7 @@ void VG_(synth_sigtrap)(ThreadId tid)
    uc.uc_mcontext->__es.__err = 0;
 #  endif
 
+   /* fixs390: do we need to do anything here for s390 ? */
    resume_scheduler(tid);
    deliver_signal(tid, &info, &uc);
 }
@@ -2247,11 +2272,13 @@ static Bool extend_stack_if_appropriate(
        && seg_next
        && seg_next->kind == SkAnonC
        && seg->end+1 == seg_next->start
-       && fault >= (esp - VG_STACK_REDZONE_SZB)) {
+       && fault >= VG_PGROUNDDN(esp - VG_STACK_REDZONE_SZB)) {
       /* If the fault address is above esp but below the current known
          stack segment base, and it was a fault because there was
          nothing mapped there (as opposed to a permissions fault),
-         then extend the stack segment. 
+         then extend the stack segment. We have to use VG_PGROUNDDN
+         because faults on s390x only deliver the page address but
+         not the address within a page.
        */
       Addr base = VG_PGROUNDDN(esp - VG_STACK_REDZONE_SZB);
       if (VG_(extend_stack)(base, VG_(threads)[tid].client_stack_szB)) {
--- valgrind/coregrind/m_stacktrace.c
+++ valgrind/coregrind/m_stacktrace.c
@@ -670,6 +670,85 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId
 
 #endif
 
+/* ------------------------ s390x ------------------------- */
+#if defined(VGP_s390x_linux)
+UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
+                               /*OUT*/Addr* ips, UInt max_n_ips,
+                               /*OUT*/Addr* sps, /*OUT*/Addr* fps,
+                               UnwindStartRegs* startRegs,
+                               Addr fp_max_orig )
+{
+   Bool  debug = False;
+   Int   i;
+   Addr  fp_max;
+   UInt  n_found = 0;
+
+   vg_assert(sizeof(Addr) == sizeof(UWord));
+   vg_assert(sizeof(Addr) == sizeof(void*));
+
+   D3UnwindRegs uregs;
+   uregs.ia = startRegs->r_pc;
+   uregs.sp = startRegs->r_sp;
+   Addr fp_min = uregs.sp;
+   uregs.fp = startRegs->misc.S390X.r_fp;
+   uregs.lr = startRegs->misc.S390X.r_lr;
+
+   fp_max = VG_PGROUNDUP(fp_max_orig);
+   if (fp_max >= sizeof(Addr))
+      fp_max -= sizeof(Addr);
+
+   if (debug)
+      VG_(printf)("max_n_ips=%d fp_min=0x%lx fp_max_orig=0x%lx, "
+                  "fp_max=0x%lx IA=0x%lx SP=0x%lx FP=0x%lx\n",
+                  max_n_ips, fp_min, fp_max_orig, fp_max,
+                  uregs.ia, uregs.sp,uregs.fp);
+
+   /* The first frame is pretty obvious */
+   ips[0] = uregs.ia;
+   if (sps) sps[0] = uregs.sp;
+   if (fps) fps[0] = uregs.fp;
+   i = 1;
+
+   /* for everything else we have to rely on the eh_frame. gcc defaults to
+      not create a backchain and all the other  tools (like gdb) also have
+      to use the CFI. */
+   while (True) {
+      if (i >= max_n_ips)
+         break;
+
+      if (VG_(use_CF_info)( &uregs, fp_min, fp_max )) {
+         if (sps) sps[i] = uregs.sp;
+         if (fps) fps[i] = uregs.fp;
+         ips[i++] = uregs.ia - 1;
+         uregs.ia = uregs.ia - 1;
+         continue;
+      }
+      /* A problem on the first frame? Lets assume it was a bad jump.
+         We will use the link register and the current stack and frame
+         pointers and see if we can use the CFI in the next round. */
+      if (i == 1) {
+         if (sps) {
+            sps[i] = sps[0];
+            uregs.sp = sps[0];
+         }
+         if (fps) {
+            fps[i] = fps[0];
+            uregs.fp = fps[0];
+         }
+         uregs.ia = uregs.lr - 1;
+         ips[i++] = uregs.lr - 1;
+         continue;
+      }
+
+      /* No luck.  We have to give up. */
+      break;
+   }
+
+   n_found = i;
+   return n_found;
+}
+#endif
+
 /*------------------------------------------------------------*/
 /*---                                                      ---*/
 /*--- END platform-dependent unwinder worker functions     ---*/
--- valgrind/coregrind/m_syscall.c
+++ valgrind/coregrind/m_syscall.c
@@ -100,6 +100,17 @@ SysRes VG_(mk_SysRes_ppc64_linux) ( ULon
    return res;
 }
 
+SysRes VG_(mk_SysRes_s390x_linux) ( Long val ) {
+   SysRes res;
+   res._isError = val >= -4095 && val <= -1;
+   if (res._isError) {
+      res._val = -val;
+   } else {
+      res._val = val;
+   }
+   return res;
+}
+
 SysRes VG_(mk_SysRes_arm_linux) ( Int val ) {
    SysRes res;
    res._isError = val >= -4095 && val <= -1;
@@ -719,6 +730,40 @@ asm(".private_extern _do_syscall_mach_WR
     "        retq                     \n"
     );
 
+#elif defined(VGP_s390x_linux)
+
+#define _svc_clobber "1", "cc", "memory"
+
+static UWord do_syscall_WRK (
+    UWord syscall_no,
+    UWord arg1, UWord arg2, UWord arg3,
+    UWord arg4, UWord arg5, UWord arg6
+    )
+{
+    register UWord __arg1 asm("2") = arg1;
+    register UWord __arg2 asm("3") = arg2;
+    register UWord __arg3 asm("4") = arg3;
+    register UWord __arg4 asm("5") = arg4;
+    register UWord __arg5 asm("6") = arg5;
+    register UWord __arg6 asm("7") = arg6;
+    register ULong __svcres asm("2");
+
+    __asm__ __volatile__ (
+                  "lgr %%r1,%1\n\t"
+                  "svc 0\n\t"
+		: "=d" (__svcres)
+		: "a" (syscall_no),
+		  "0" (__arg1),
+		  "d" (__arg2),
+		  "d" (__arg3),
+		  "d" (__arg4),
+		  "d" (__arg5),
+		  "d" (__arg6)
+		: _svc_clobber);
+
+    return (UWord) (__svcres);
+}
+
 #else
 #  error Unknown platform
 #endif
@@ -846,6 +891,24 @@ SysRes VG_(do_syscall) ( UWord sysno, UW
    }
    return VG_(mk_SysRes_amd64_darwin)( scclass, err ? True : False, wHI, wLO );
   
+#elif defined(VGP_s390x_linux)
+   UWord val;
+
+   if (sysno == __NR_mmap) {
+     ULong argbuf[6];
+
+     argbuf[0] = a1;
+     argbuf[1] = a2;
+     argbuf[2] = a3;
+     argbuf[3] = a4;
+     argbuf[4] = a5;
+     argbuf[5] = a6;
+     val = do_syscall_WRK(sysno,(UWord)&argbuf[0],0,0,0,0,0);
+   } else {
+     val = do_syscall_WRK(sysno,a1,a2,a3,a4,a5,a6);
+   }
+
+   return VG_(mk_SysRes_s390x_linux)( val );
 #else
 #  error Unknown platform
 #endif
--- valgrind/coregrind/m_syswrap/priv_types_n_macros.h
+++ valgrind/coregrind/m_syswrap/priv_types_n_macros.h
@@ -89,7 +89,7 @@ typedef
       Int o_sysno;
 #     if defined(VGP_x86_linux) || defined(VGP_amd64_linux) \
          || defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux) \
-         || defined(VGP_arm_linux)
+         || defined(VGP_arm_linux) || defined(VGP_s390x_linux)
       Int o_arg1;
       Int o_arg2;
       Int o_arg3;
--- valgrind/coregrind/m_syswrap/syswrap-generic.c
+++ valgrind/coregrind/m_syswrap/syswrap-generic.c
@@ -1958,6 +1958,11 @@ ML_(generic_POST_sys_shmctl) ( ThreadId
  *   call, mmap (aka sys_mmap)  which takes the arguments in the
  *   normal way and the offset in bytes.
  *
+ * - On s390x-linux there is mmap (aka old_mmap) which takes the
+ *   arguments in a memory block and the offset in bytes. mmap2
+ *   is also available (but not exported via unistd.h) with
+ *   arguments ina memory block and the offset in pages.
+ *
  * To cope with all this we provide a generic handler function here
  * and then each platform implements one or more system call handlers
  * which call this generic routine after extracting and normalising
--- valgrind/coregrind/m_syswrap/syswrap-linux.c
+++ valgrind/coregrind/m_syswrap/syswrap-linux.c
@@ -206,6 +206,14 @@ static void run_a_thread_NORETURN ( Word
          "svc  0x00000000\n"  /* exit(tst->os_state.exitcode) */
          : "=m" (tst->status)
          : "r" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode));
+#elif defined(VGP_s390x_linux)
+      asm volatile (
+         "st   %1, %0\n"        /* set tst->status = VgTs_Empty */
+         "lg   2, %3\n"         /* set r2 = tst->os_state.exitcode */
+         "svc %2\n"		/* exit(tst->os_state.exitcode) */
+         : "=m" (tst->status)
+         : "d" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)
+         : "2");
 #else
 # error Unknown platform
 #endif
@@ -288,6 +296,11 @@ void VG_(main_thread_wrapper_NORETURN)(T
    sp -= 112;
    sp &= ~((Addr)0xF);
    *(UWord *)sp = 0;
+#elif defined(VGP_s390x_linux)
+   /* make a stack frame */
+   sp -= 160;
+   sp &= ~((Addr)0xF);
+   *(UWord *)sp = 0;
 #endif
 
    /* If we can't even allocate the first thread's stack, we're hosed.
@@ -342,6 +355,10 @@ SysRes ML_(do_fork_clone) ( ThreadId tid
    res = VG_(do_syscall5)( __NR_clone, flags, 
                            (UWord)NULL, (UWord)parent_tidptr, 
                            (UWord)child_tidptr, (UWord)NULL );
+#elif defined(VGP_s390x_linux)
+   /* note that s390 has first the stack and then the flags */
+   res = VG_(do_syscall4)( __NR_clone, (UWord) NULL, flags,
+                          (UWord)parent_tidptr, (UWord)child_tidptr);
 #else
 # error Unknown platform
 #endif
@@ -3566,7 +3583,7 @@ POST(sys_lookup_dcookie)
 }
 #endif
 
-#if defined(VGP_amd64_linux)
+#if defined(VGP_amd64_linux) || defined(VGP_s390x_linux)
 PRE(sys_lookup_dcookie)
 {
    *flags |= SfMayBlock;
--- valgrind/coregrind/m_syswrap/syswrap-main.c
+++ valgrind/coregrind/m_syswrap/syswrap-main.c
@@ -60,14 +60,14 @@
 /* Useful info which needs to be recorded somewhere:
    Use of registers in syscalls is:
 
-          NUM ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 RESULT
+          NUM   ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 RESULT
    LINUX:
-   x86    eax ebx  ecx  edx  esi  edi  ebp  n/a  n/a  eax       (== NUM)
-   amd64  rax rdi  rsi  rdx  r10  r8   r9   n/a  n/a  rax       (== NUM)
-   ppc32  r0  r3   r4   r5   r6   r7   r8   n/a  n/a  r3+CR0.SO (== ARG1)
-   ppc64  r0  r3   r4   r5   r6   r7   r8   n/a  n/a  r3+CR0.SO (== ARG1)
-   arm    r7  r0   r1   r2   r3   r4   r5   n/a  n/a  r0        (== ARG1)
-
+   x86    eax   ebx  ecx  edx  esi  edi  ebp  n/a  n/a  eax       (== NUM)
+   amd64  rax   rdi  rsi  rdx  r10  r8   r9   n/a  n/a  rax       (== NUM)
+   ppc32  r0    r3   r4   r5   r6   r7   r8   n/a  n/a  r3+CR0.SO (== ARG1)
+   ppc64  r0    r3   r4   r5   r6   r7   r8   n/a  n/a  r3+CR0.SO (== ARG1)
+   arm    r7    r0   r1   r2   r3   r4   r5   n/a  n/a  r0        (== ARG1)
+   s390x  SYSNO r2   r3   r4   r5   r6   r7   n/a  n/a  r2        (== ARG1)
    AIX:
    ppc32  r2  r3   r4   r5   r6   r7   r8   r9   r10  r3(res),r4(err)
    ppc64  r2  r3   r4   r5   r6   r7   r8   r9   r10  r3(res),r4(err)
@@ -160,6 +160,8 @@
      x86:    Success(N) ==>  edx:eax = N, cc = 0
              Fail(N)    ==>  edx:eax = N, cc = 1
 
+     s390x:  fixs390 later: document it here
+
    * The post wrapper is called if:
 
      - it exists, and
@@ -611,6 +613,17 @@ void getSyscallArgsFromGuestState ( /*OU
 
    // no canonical->sysno adjustment needed
 
+#elif defined(VGP_s390x_linux)
+   VexGuestS390XState* gst = (VexGuestS390XState*)gst_vanilla;
+   canonical->sysno = gst->guest_SYSNO;
+   canonical->arg1  = gst->guest_r2;
+   canonical->arg2  = gst->guest_r3;
+   canonical->arg3  = gst->guest_r4;
+   canonical->arg4  = gst->guest_r5;
+   canonical->arg5  = gst->guest_r6;
+   canonical->arg6  = gst->guest_r7;
+   canonical->arg7  = 0;
+   canonical->arg8  = 0;
 #else
 #  error "getSyscallArgsFromGuestState: unknown arch"
 #endif
@@ -728,6 +741,16 @@ void putSyscallArgsIntoGuestState ( /*IN
    stack[1]       = canonical->arg7;
    stack[2]       = canonical->arg8;
 
+#elif defined(VGP_s390x_linux)
+   VexGuestS390XState* gst = (VexGuestS390XState*)gst_vanilla;
+   gst->guest_SYSNO  = canonical->sysno;
+   gst->guest_r2     = canonical->arg1;
+   gst->guest_r3     = canonical->arg2;
+   gst->guest_r4     = canonical->arg3;
+   gst->guest_r5     = canonical->arg4;
+   gst->guest_r6     = canonical->arg5;
+   gst->guest_r7     = canonical->arg6;
+
 #else
 #  error "putSyscallArgsIntoGuestState: unknown arch"
 #endif
@@ -842,6 +865,11 @@ void getSyscallStatusFromGuestState ( /*
                      );
    canonical->what = SsComplete;
 
+#  elif defined(VGP_s390x_linux)
+   VexGuestS390XState* gst   = (VexGuestS390XState*)gst_vanilla;
+   canonical->sres = VG_(mk_SysRes_s390x_linux)( gst->guest_r2 );
+   canonical->what = SsComplete;
+
 #  else
 #    error "getSyscallStatusFromGuestState: unknown arch"
 #  endif
@@ -1016,6 +1044,15 @@ void putSyscallStatusIntoGuestState ( /*
          break;
    }
    
+#  elif defined(VGP_s390x_linux)
+   VexGuestS390XState* gst = (VexGuestS390XState*)gst_vanilla;
+   vg_assert(canonical->what == SsComplete);
+   if (sr_isError(canonical->sres)) {
+      gst->guest_r2 = - (Long)sr_Err(canonical->sres);
+   } else {
+      gst->guest_r2 = sr_Res(canonical->sres);
+   }
+
 #  else
 #    error "putSyscallStatusIntoGuestState: unknown arch"
 #  endif
@@ -1129,6 +1166,16 @@ void getSyscallArgLayout ( /*OUT*/Syscal
    layout->s_arg7   = sizeof(UWord) * 1;
    layout->s_arg8   = sizeof(UWord) * 2;
 
+#elif defined(VGP_s390x_linux)
+   layout->o_sysno  = OFFSET_s390x_SYSNO;
+   layout->o_arg1   = OFFSET_s390x_r2;
+   layout->o_arg2   = OFFSET_s390x_r3;
+   layout->o_arg3   = OFFSET_s390x_r4;
+   layout->o_arg4   = OFFSET_s390x_r5;
+   layout->o_arg5   = OFFSET_s390x_r6;
+   layout->o_arg6   = OFFSET_s390x_r7;
+   layout->uu_arg7  = -1; /* impossible value */
+   layout->uu_arg8  = -1; /* impossible value */
 #else
 #  error "getSyscallLayout: unknown arch"
 #endif
@@ -1957,6 +2004,23 @@ void ML_(fixup_guest_state_to_restart_sy
    // DDD: #warning GrP fixme amd64 restart unimplemented
    vg_assert(0);
    
+#elif defined(VGP_s390x_linux)
+   arch->vex.guest_IA -= 2;             // sizeof(syscall)
+
+   /* Make sure our caller is actually sane, and we're really backing
+      back over a syscall.
+
+      syscall == 0A <num>
+   */
+   {
+      UChar *p = (UChar *)arch->vex.guest_IA;
+      if (p[0] != 0x0A)
+         VG_(message)(Vg_DebugMsg,
+                      "?! restarting over syscall at %#llx %02x %02x\n",
+                      arch->vex.guest_IA, p[0], p[1]);
+
+      vg_assert(p[0] == 0x0A);
+   }
 #else
 #  error "ML_(fixup_guest_state_to_restart_syscall): unknown plat"
 #endif
--- valgrind/coregrind/m_trampoline.S
+++ valgrind/coregrind/m_trampoline.S
@@ -1214,6 +1214,39 @@ VG_(trampoline_stuff_end):
 .fill 2048, 2, 0x0b0f /* `ud2` */
 
 
+/*---------------- s390x-linux ----------------*/
+#else
+#if defined(VGP_s390x_linux)
+
+        /* a leading page of unexecutable code */
+	.fill 2048, 2, 0x0000
+
+.global VG_(trampoline_stuff_start)
+VG_(trampoline_stuff_start):
+
+.global VG_(s390x_linux_SUBST_FOR_sigreturn)
+VG_(s390x_linux_SUBST_FOR_sigreturn):
+        svc __NR_sigreturn
+	.short 0
+
+.global VG_(s390x_linux_SUBST_FOR_rt_sigreturn)
+VG_(s390x_linux_SUBST_FOR_rt_sigreturn):
+        /* old gcc unwinding code checks for a sig(_rt)_return svc and then
+           for ra = cfa to decide if it is a sig_rt_frame or not. Since we
+           set ra to this trampoline, but the cfa is still in the stack,
+           the unwinder thinks, that this is a non-rt frame  and causes a
+           crash in the gcc unwinder - which is used by the thread library
+           and others. Therefore we add a lr 1,1 nop, to let the gcc
+           unwinder bail out gracefully. This might also affect unwinding
+           across the signal frame - tough luck. fixs390 */
+        lr 1,1
+        svc __NR_rt_sigreturn
+	.short 0
+
+.globl VG_(trampoline_stuff_end)
+VG_(trampoline_stuff_end):
+	.fill 2048, 2, 0x0000
+
 /*---------------- unknown ----------------*/
 #else
 #  error Unknown platform
@@ -1221,6 +1254,7 @@ VG_(trampoline_stuff_end):
 #endif
 #endif
 #endif
+#endif
 #endif
 #endif
 #endif
--- valgrind/coregrind/m_translate.c
+++ valgrind/coregrind/m_translate.c
@@ -692,7 +692,7 @@ void log_bytes ( HChar* bytes, Int nbyte
 
 static Bool translations_allowable_from_seg ( NSegment const* seg )
 {
-#  if defined(VGA_x86)
+#  if defined(VGA_x86) || defined(VGA_s390x)
    Bool allowR = True;
 #  else
    Bool allowR = False;
@@ -1508,7 +1508,8 @@ Bool VG_(translate) ( ThreadId tid,
           ? (void*) &VG_(run_innerloop__dispatch_profiled)
           : (void*) &VG_(run_innerloop__dispatch_unprofiled);
 #  elif defined(VGA_ppc32) || defined(VGA_ppc64) \
-        || defined(VGA_arm)
+        || defined(VGA_arm) || defined(VGA_s390x)
+   /* See comment libvex.h; machine has link register --> dipatch = NULL */
    vta.dispatch = NULL;
 #  else
 #    error "Unknown arch"
--- valgrind/coregrind/m_transtab.c
+++ valgrind/coregrind/m_transtab.c
@@ -901,6 +901,9 @@ static void invalidate_icache ( void *pt
 #  elif defined(VGA_amd64)
    /* no need to do anything, hardware provides coherence */
 
+#  elif defined(VGA_s390x)
+   /* no need to do anything, hardware provides coherence */
+
 #  elif defined(VGP_arm_linux)
    /* ARM cache flushes are privileged, so we must defer to the kernel. */
    Addr startaddr = (Addr) ptr;
--- valgrind/coregrind/pub_core_basics.h
+++ valgrind/coregrind/pub_core_basics.h
@@ -58,6 +58,8 @@
 #  include "libvex_guest_ppc64.h"
 #elif defined(VGA_arm)
 #  include "libvex_guest_arm.h"
+#elif defined(VGA_s390x)
+#  include "libvex_guest_s390x.h"
 #else
 #  error Unknown arch
 #endif
@@ -105,6 +107,10 @@ typedef
             UInt r11;
             UInt r7;
          } ARM;
+         struct {
+            ULong r_fp;
+            ULong r_lr;
+         } S390X;
       } misc;
    }
    UnwindStartRegs;
--- valgrind/coregrind/pub_core_debuginfo.h
+++ valgrind/coregrind/pub_core_debuginfo.h
@@ -123,6 +123,10 @@ typedef
 typedef
    UChar  /* should be void, but gcc complains at use points */
    D3UnwindRegs;
+#elif defined(VGA_s390x)
+typedef
+   struct { Addr ia; Addr sp; Addr fp; Addr lr;}
+   D3UnwindRegs;
 #else
 #  error "Unsupported arch"
 #endif
--- valgrind/coregrind/pub_core_machine.h
+++ valgrind/coregrind/pub_core_machine.h
@@ -75,6 +75,11 @@
 #  undef  VG_ELF_MACHINE
 #  undef  VG_ELF_CLASS
 #  undef  VG_PLAT_USES_PPCTOC
+#elif defined(VGP_s390x_linux)
+#  define VG_ELF_DATA2XXX     ELFDATA2MSB
+#  define VG_ELF_MACHINE      EM_S390
+#  define VG_ELF_CLASS        ELFCLASS64
+#  undef  VG_PLAT_USES_PPCTOC
 #else
 #  error Unknown platform
 #endif
@@ -99,6 +104,10 @@
 #  define VG_INSTR_PTR        guest_R15T
 #  define VG_STACK_PTR        guest_R13
 #  define VG_FRAME_PTR        guest_R11
+#elif defined(VGA_s390x)
+#  define VG_INSTR_PTR        guest_IA
+#  define VG_STACK_PTR        guest_SP
+#  define VG_FRAME_PTR        guest_FP
 #else
 #  error Unknown arch
 #endif
--- valgrind/coregrind/pub_core_mallocfree.h
+++ valgrind/coregrind/pub_core_mallocfree.h
@@ -77,6 +77,7 @@ typedef Int ArenaId;
 // for any AltiVec- or SSE-related type.  This matches the Darwin libc.
 #elif defined(VGP_amd64_linux) || \
       defined(VGP_ppc64_linux) || \
+      defined(VGP_s390x_linux) || \
       defined(VGP_ppc64_aix5)  || \
       defined(VGP_ppc32_aix5)  || \
       defined(VGP_x86_darwin)  || \
--- valgrind/coregrind/pub_core_syscall.h
+++ valgrind/coregrind/pub_core_syscall.h
@@ -80,6 +80,7 @@ extern SysRes VG_(mk_SysRes_x86_darwin)
                                            UInt wHI, UInt wLO );
 extern SysRes VG_(mk_SysRes_amd64_darwin)( UChar scclass, Bool isErr,
                                            ULong wHI, ULong wLO );
+extern SysRes VG_(mk_SysRes_s390x_linux) ( Long val );
 extern SysRes VG_(mk_SysRes_Error)       ( UWord val );
 extern SysRes VG_(mk_SysRes_Success)     ( UWord val );
 
--- valgrind/coregrind/pub_core_threadstate.h
+++ valgrind/coregrind/pub_core_threadstate.h
@@ -85,6 +85,8 @@ typedef
    typedef VexGuestPPC64State VexGuestArchState;
 #elif defined(VGA_arm)
    typedef VexGuestARMState   VexGuestArchState;
+#elif defined(VGA_s390x)
+   typedef VexGuestS390XState VexGuestArchState;
 #else
 #  error Unknown architecture
 #endif
--- valgrind/coregrind/pub_core_trampoline.h
+++ valgrind/coregrind/pub_core_trampoline.h
@@ -140,6 +140,12 @@ extern SizeT VG_(amd64_darwin_REDIR_FOR_
 extern UInt VG_(amd64_darwin_REDIR_FOR_arc4random)( void );
 #endif
 
+#if defined(VGP_s390x_linux)
+extern void VG_(s390x_linux_SUBST_FOR_sigreturn);
+extern void VG_(s390x_linux_SUBST_FOR_rt_sigreturn);
+#endif
+
+
 #endif   // __PUB_CORE_TRAMPOLINE_H
 
 /*--------------------------------------------------------------------*/
--- valgrind/coregrind/pub_core_transtab_asm.h
+++ valgrind/coregrind/pub_core_transtab_asm.h
@@ -43,7 +43,10 @@
    2)[VG_TT_FAST_BITS-1 : 0]' on those targets.
 
    On ARM we do like ppc32/ppc64, although that will have to be
-   revisited when we come to implement Thumb. */
+   revisited when we come to implement Thumb.
+
+   On s390x the rightmost bit of an instruction address is zero.
+   For best table utilization shift the address to the right by 1 bit. */
 
 #define VG_TT_FAST_BITS 15
 #define VG_TT_FAST_SIZE (1 << VG_TT_FAST_BITS)
@@ -55,6 +58,8 @@
 #  define VG_TT_FAST_HASH(_addr)  ((((UWord)(_addr))     ) & VG_TT_FAST_MASK)
 #elif defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_arm)
 #  define VG_TT_FAST_HASH(_addr)  ((((UWord)(_addr)) >> 2) & VG_TT_FAST_MASK)
+#elif defined(VGA_s390x)
+#  define VG_TT_FAST_HASH(_addr)  ((((UWord)(_addr)) >> 1) & VG_TT_FAST_MASK)
 #else
 #  error "VG_TT_FAST_HASH: unknown platform"
 #endif
--- valgrind/drd/drd_bitmap.h
+++ valgrind/drd/drd_bitmap.h
@@ -139,7 +139,7 @@ Addr make_address(const UWord a1, const
 /** Log2 of BITS_PER_UWORD. */
 #if defined(VGA_x86) || defined(VGA_ppc32) || defined(VGA_arm)
 #define BITS_PER_BITS_PER_UWORD 5
-#elif defined(VGA_amd64) || defined(VGA_ppc64)
+#elif defined(VGA_amd64) || defined(VGA_ppc64) || defined(VGA_s390x)
 #define BITS_PER_BITS_PER_UWORD 6
 #else
 #error Unknown platform.
--- valgrind/drd/drd_load_store.c
+++ valgrind/drd/drd_load_store.c
@@ -48,6 +48,8 @@
 #define STACK_POINTER_OFFSET OFFSET_ppc64_GPR1
 #elif defined(VGA_arm)
 #define STACK_POINTER_OFFSET OFFSET_arm_R13
+#elif defined(VGA_s390x)
+#define STACK_POINTER_OFFSET OFFSET_s390x_r15
 #else
 #error Unknown architecture.
 #endif
--- valgrind/exp-ptrcheck/h_main.c
+++ valgrind/exp-ptrcheck/h_main.c
@@ -564,7 +564,7 @@ static void pp_curr_ExeContext(void)
 #  define SHMEM_SECMAP_SHIFT        2
 #  define SHMEM_IS_WORD_ALIGNED(_a) VG_IS_4_ALIGNED(_a)
 #  define SEC_MAP_WORDS             (0x10000UL / 4UL) /* 16k */
-#elif defined(VGA_amd64) || defined(VGA_ppc64)
+#elif defined(VGA_amd64) || defined(VGA_ppc64) || defined(VGA_s390x)
 #  define SHMEM_SECMAP_MASK         0xFFF8
 #  define SHMEM_SECMAP_SHIFT        3
 #  define SHMEM_IS_WORD_ALIGNED(_a) VG_IS_8_ALIGNED(_a)
@@ -1296,6 +1296,11 @@ typedef
 # define PC_SIZEOF_GUEST_STATE sizeof(VexGuestARMState)
 #endif
 
+#if defined(VGA_s390x)
+# include "libvex_guest_s390x.h"
+# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestS390XState)
+#endif
+
 
 /* See description on definition of type IntRegInfo. */
 static void get_IntRegInfo ( /*OUT*/IntRegInfo* iii, Int offset, Int szB )
@@ -1833,6 +1838,14 @@ static void get_IntRegInfo ( /*OUT*/IntR
    tl_assert(0);
 
 
+   /* -------------------- s390x -------------------- */
+
+#  elif defined(VGA_s390x)
+
+   Int  o    = offset;
+
+   VG_(tool_panic)("not implemented for s390x");
+
 #  else
 #    error "FIXME: not implemented for this architecture"
 #  endif
@@ -1914,6 +1927,11 @@ static Bool is_integer_guest_reg_array (
    VG_(printf)("\n");
    tl_assert(0);
 
+   /* -------------------- s390x -------------------- */
+#  elif defined(VGA_s390x)
+
+   tl_assert(0);
+
    /* -------------------- arm -------------------- */
 #  elif defined(VGA_arm)
    /* There are no rotating register sections on ARM. */
@@ -2472,7 +2490,9 @@ static void setup_post_syscall_table ( v
       ADD(0, __NR_symlink);
       ADD(0, __NR_sysinfo);
       ADD(0, __NR_tgkill);
+#if   defined(__NR_time)
       ADD(0, __NR_time);
+#     endif
       ADD(0, __NR_times);
       ADD(0, __NR_truncate);
 #     if defined(__NR_truncate64)
@@ -2754,6 +2774,8 @@ static inline Bool looks_like_a_pointer(
    tl_assert(sizeof(UWord) == 4);
    return (a >= 0x00008000UL && a < 0xFF000000UL);
 
+#  elif defined(VGA_s390x)
+   tl_assert(0);
 #  else
 #    error "Unsupported architecture"
 #  endif
--- valgrind/exp-ptrcheck/pc_main.c
+++ valgrind/exp-ptrcheck/pc_main.c
@@ -140,6 +140,10 @@ static void pc_post_clo_init ( void )
          "(like --enable-sg-checks=no).\n");
    }
    sg_clo_enable_sg_checks = False;
+#  elif defined(VGA_s390x)
+   /* fixs390: to be done. */
+      VG_(message)(Vg_UserMsg,
+         "ERROR: exp-ptrcheck on s390x platform is not supported yet.\n");
 #  else
 #    error "Unsupported architecture"
 #  endif
--- valgrind/exp-ptrcheck/tests/is_arch_supported
+++ valgrind/exp-ptrcheck/tests/is_arch_supported
@@ -1,7 +1,7 @@
 #!/bin/sh
 #
-# Not all architectures are supported by exp-ptr. Currently, PowerPC and ARM
-# are not supported and will fail these tests as follows:
+# Not all architectures are supported by exp-ptr. Currently, PowerPC, s390x
+# and ARM are not supported and will fail these tests as follows:
 # WARNING: exp-ptrcheck on <blah> platforms: stack and global array
 # WARNING: checking is not currently supported.  Only heap checking is
 # WARNING: supported.
@@ -10,6 +10,6 @@
 # architectures.
 
 case `uname -i` in
-  ppc*|arm*) exit 1;;
+  ppc*|arm*|s390x) exit 1;;
   *)         exit 0;;
 esac
--- valgrind/helgrind/tests/annotate_hbefore.c
+++ valgrind/helgrind/tests/annotate_hbefore.c
@@ -167,6 +167,25 @@ UWord do_acasW ( UWord* addr, UWord expe
    return success;
 }
 
+#elif defined(VGA_s390x)
+
+// s390x
+/* return 1 if success, 0 if failure */
+UWord do_acasW(UWord* addr, UWord expected, UWord nyu )
+{
+   int cc;
+
+   __asm__ __volatile__ (
+     "csg %2,%3,%1\n\t"
+     "ipm %0\n\t"
+     "srl %0,28\n\t"
+     : /* out */  "=r" (cc)
+     : /* in */ "Q" (*addr), "d" (expected), "d" (nyu)
+     : "memory", "cc"
+   );
+   return cc == 0;
+}
+
 #endif
 
 void atomic_incW ( UWord* w )
--- valgrind/helgrind/tests/tc07_hbl1.c
+++ valgrind/helgrind/tests/tc07_hbl1.c
@@ -15,6 +15,7 @@
 #undef PLAT_ppc32_linux
 #undef PLAT_ppc64_linux
 #undef PLAT_arm_linux
+#undef PLAT_s390x_linux
 
 #if defined(_AIX) && defined(__64BIT__)
 #  define PLAT_ppc64_aix5 1
@@ -34,6 +35,8 @@
 #  define PLAT_ppc64_linux 1
 #elif defined(__linux__) && defined(__arm__)
 #  define PLAT_arm_linux 1
+#elif defined(__linux__) && defined(__s390x__)
+#  define PLAT_s390x_linux 1
 #endif
 
 #if defined(PLAT_amd64_linux) || defined(PLAT_x86_linux) \
@@ -65,6 +68,16 @@
       : /*out*/ : /*in*/ "r"(&(_lval))       \
       : /*trash*/ "r8", "r9", "cc", "memory" \
   );
+#elif defined(PLAT_s390x_linux)
+#  define INC(_lval,_lqual) \
+   __asm__ __volatile__( \
+      "1: l     0,%0\n"                            \
+      "   lr    1,0\n"                             \
+      "   ahi   1,1\n"                             \
+      "   cs    0,1,%0\n"                          \
+      "   jl    1b\n"                              \
+      : "+m" (_lval) :: "cc", "1","2" \
+   )
 #else
 #  error "Fix Me for this platform"
 #endif
--- valgrind/helgrind/tests/tc08_hbl2.c
+++ valgrind/helgrind/tests/tc08_hbl2.c
@@ -31,6 +31,7 @@
 #undef PLAT_ppc32_linux
 #undef PLAT_ppc64_linux
 #undef PLAT_arm_linux
+#undef PLAT_s390x_linux
 
 #if defined(_AIX) && defined(__64BIT__)
 #  define PLAT_ppc64_aix5 1
@@ -50,6 +51,8 @@
 #  define PLAT_ppc64_linux 1
 #elif defined(__linux__) && defined(__arm__)
 #  define PLAT_arm_linux 1
+#elif defined(__linux__) && defined(__s390x__)
+#  define PLAT_s390x_linux 1
 #endif
 
 
@@ -82,6 +85,16 @@
       : /*out*/ : /*in*/ "r"(&(_lval))       \
       : /*trash*/ "r8", "r9", "cc", "memory" \
   );
+#elif defined(PLAT_s390x_linux)
+#  define INC(_lval,_lqual) \
+   __asm__ __volatile__( \
+      "1: l     0,%0\n"                            \
+      "   lr    1,0\n"                             \
+      "   ahi   1,1\n"                             \
+      "   cs    0,1,%0\n"                          \
+      "   jl    1b\n"                              \
+      : "+m" (_lval) :: "cc", "0","1" \
+   )
 #else
 #  error "Fix Me for this platform"
 #endif
--- valgrind/helgrind/tests/tc11_XCHG.c
+++ valgrind/helgrind/tests/tc11_XCHG.c
@@ -18,6 +18,7 @@
 #undef PLAT_ppc32_linux
 #undef PLAT_ppc64_linux
 #undef PLAT_arm_linux
+#undef PLAT_s390x_linux
 
 #if defined(_AIX) && defined(__64BIT__)
 #  define PLAT_ppc64_aix5 1
@@ -37,6 +38,8 @@
 #  define PLAT_ppc64_linux 1
 #elif defined(__linux__) && defined(__arm__)
 #  define PLAT_arm_linux 1
+#elif defined(__linux__) && defined(__s390x__)
+#  define PLAT_s390x_linux 1
 #endif
 
 
@@ -59,7 +62,7 @@
 
 #elif defined(PLAT_ppc32_linux) || defined(PLAT_ppc64_linux) \
       || defined(PLAT_ppc32_aix5) || defined(PLAT_ppc64_aix5) \
-      || defined(PLAT_arm_linux)
+      || defined(PLAT_arm_linux) || defined(PLAT_s390x_linux)
 #  if defined(HAVE_BUILTIN_ATOMIC)
 #    define XCHG_M_R(_addr,_lval)                                           \
         do {                                                                \
--- valgrind/include/Makefile.am
+++ valgrind/include/Makefile.am
@@ -43,17 +43,20 @@ nobase_pkginclude_HEADERS = \
 	vki/vki-posixtypes-ppc32-linux.h \
 	vki/vki-posixtypes-ppc64-linux.h \
 	vki/vki-posixtypes-x86-linux.h	 \
-	vki/vki-posixtypes-arm-linux.h	 \
+ 	vki/vki-posixtypes-arm-linux.h	 \
+	vki/vki-posixtypes-s390x-linux.h \
 	vki/vki-amd64-linux.h		\
 	vki/vki-ppc32-linux.h		\
 	vki/vki-ppc64-linux.h		\
 	vki/vki-x86-linux.h		\
-	vki/vki-arm-linux.h		\
+ 	vki/vki-arm-linux.h		\
+	vki/vki-s390x-linux.h		\
 	vki/vki-scnums-amd64-linux.h	\
 	vki/vki-scnums-ppc32-linux.h	\
 	vki/vki-scnums-ppc64-linux.h	\
 	vki/vki-scnums-x86-linux.h	\
-	vki/vki-scnums-arm-linux.h	\
+ 	vki/vki-scnums-arm-linux.h	\
+	vki/vki-scnums-s390x-linux.h	\
 	vki/vki-scnums-darwin.h
 
 noinst_HEADERS = \
--- valgrind/include/pub_tool_basics.h
+++ valgrind/include/pub_tool_basics.h
@@ -292,7 +292,7 @@ static inline Bool sr_EQ ( SysRes sr1, S
 
 #if defined(VGA_x86) || defined(VGA_amd64) || defined (VGA_arm)
 #  define VG_LITTLEENDIAN 1
-#elif defined(VGA_ppc32) || defined(VGA_ppc64)
+#elif defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_s390x)
 #  define VG_BIGENDIAN 1
 #else
 #  error Unknown arch
@@ -302,7 +302,7 @@ static inline Bool sr_EQ ( SysRes sr1, S
 #if defined(VGA_x86)
 #  define VG_REGPARM(n)            __attribute__((regparm(n)))
 #elif defined(VGA_amd64) || defined(VGA_ppc32) \
-      || defined(VGA_ppc64) || defined(VGA_arm)
+      || defined(VGA_ppc64) || defined(VGA_arm) || defined(VGA_s390x)
 #  define VG_REGPARM(n)            /* */
 #else
 #  error Unknown arch
--- valgrind/include/pub_tool_machine.h
+++ valgrind/include/pub_tool_machine.h
@@ -81,6 +81,12 @@
 #  define VG_CLREQ_SZB             20
 #  define VG_STACK_REDZONE_SZB    288 // is this right?
 
+#elif defined(VGP_s390x_linux)
+#  define VG_MIN_INSTR_SZB          2
+#  define VG_MAX_INSTR_SZB          6
+#  define VG_CLREQ_SZB             10
+#  define VG_STACK_REDZONE_SZB      0  // s390 has no redzone
+
 #elif defined(VGP_x86_darwin)
 #  define VG_MIN_INSTR_SZB          1  // min length of native instruction
 #  define VG_MAX_INSTR_SZB         16  // max length of native instruction
--- valgrind/include/pub_tool_vkiscnums_asm.h
+++ valgrind/include/pub_tool_vkiscnums_asm.h
@@ -45,6 +45,9 @@
 #elif defined(VGP_ppc64_linux)
 #  include "vki/vki-scnums-ppc64-linux.h"
 
+#elif defined(VGP_s390x_linux)
+#  include "vki/vki-scnums-s390x-linux.h"
+
 #elif defined(VGP_arm_linux)
 #  include "vki/vki-scnums-arm-linux.h"
 
--- valgrind/include/valgrind.h
+++ valgrind/include/valgrind.h
@@ -118,6 +118,8 @@
 #undef PLAT_ppc32_linux
 #undef PLAT_ppc64_linux
 #undef PLAT_arm_linux
+#undef PLAT_s390x_linux
+
 
 #if defined(_AIX) && defined(__64BIT__)
 #  define PLAT_ppc64_aix5 1
@@ -139,6 +141,8 @@
 #  define PLAT_ppc64_linux 1
 #elif defined(__linux__) && defined(__arm__)
 #  define PLAT_arm_linux 1
+#elif defined(__linux__) && defined(__s390__) && defined(__s390x__)
+#  define PLAT_s390x_linux 1
 #else
 /* If we're not compiling for our target platform, don't generate
    any inline asms.  */
@@ -695,6 +699,75 @@ typedef
 
 #endif /* PLAT_ppc64_aix5 */
 
+/* ------------------------ s390x-linux ------------------------ */
+
+#if defined(PLAT_s390x_linux)
+
+typedef
+  struct {
+     unsigned long long int nraddr; /* where's the code? */
+  }
+  OrigFn;
+
+/* __SPECIAL_INSTRUCTION_PREAMBLE will be used to identify Valgrind specific
+ * code. This detection is implemented in platform specific toIR.c
+ * (e.g. VEX/priv/guest_s390_decoder.c).
+ */
+#define __SPECIAL_INSTRUCTION_PREAMBLE                           \
+                     "lr 15,15\n\t"                              \
+                     "lr 1,1\n\t"                                \
+                     "lr 2,2\n\t"                                \
+                     "lr 3,3\n\t"
+
+#define __CLIENT_REQUEST_CODE "lr 2,2\n\t"
+#define __GET_NR_CONTEXT_CODE "lr 3,3\n\t"
+#define __CALL_NO_REDIR_CODE  "lr 4,4\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST(                              \
+       _zzq_rlval, _zzq_default, _zzq_request,                   \
+       _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)    \
+ { volatile unsigned long long int _zzq_args[6];                 \
+   volatile unsigned long long int _zzq_result;                  \
+   _zzq_args[0] = (unsigned long long int)(_zzq_request);        \
+   _zzq_args[1] = (unsigned long long int)(_zzq_arg1);           \
+   _zzq_args[2] = (unsigned long long int)(_zzq_arg2);           \
+   _zzq_args[3] = (unsigned long long int)(_zzq_arg3);           \
+   _zzq_args[4] = (unsigned long long int)(_zzq_arg4);           \
+   _zzq_args[5] = (unsigned long long int)(_zzq_arg5);           \
+   __asm__ volatile(/* r2 = args */                              \
+		    "lgr 2,%1\n\t"                               \
+		    /* r3 = default */                           \
+		    "lgr 3,%2\n\t"                               \
+		    __SPECIAL_INSTRUCTION_PREAMBLE               \
+		    __CLIENT_REQUEST_CODE                        \
+		    /* results = r3 */                           \
+		    "lgr %0, 3\n\t"                              \
+		    : "=d" (_zzq_result)                         \
+		    : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
+		    : "cc", "2", "3", "memory"                   \
+		   );                                            \
+   _zzq_rlval = _zzq_result;                                     \
+ }
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval)                      \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval);                   \
+   volatile unsigned long long int __addr;                       \
+   __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
+		    __GET_NR_CONTEXT_CODE                        \
+		    "lgr %0, 3\n\t"                              \
+		    : "=a" (__addr)                              \
+		    :                                            \
+		    : "cc", "3", "memory"                        \
+		   );                                            \
+   _zzq_orig->nraddr = __addr;                                   \
+ }
+
+#define VALGRIND_CALL_NOREDIR_R1                                 \
+		    __SPECIAL_INSTRUCTION_PREAMBLE               \
+                    __CALL_NO_REDIR_CODE
+
+#endif /* PLAT_s390x_linux */
+
 /* Insert assembly code for other platforms here... */
 
 #endif /* NVALGRIND */
@@ -4248,6 +4321,484 @@ typedef
 
 #endif /* PLAT_ppc64_aix5 */
 
+/* ------------------------- s390x-linux ------------------------- */
+
+#if defined(PLAT_s390x_linux)
+
+/* Similar craziness as x86 (see above), but we use r11 as frame
+   pointer and save the old r11 in r7. r11 might be used for
+   argvec, therefore we copy argvec in r1 since r1 is clobbered
+   after the call anyway.  */
+#if defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM)
+#  define __FRAME_POINTER                                         \
+      ,"d"(__builtin_dwarf_cfa())
+#  define VALGRIND_CFI_PROLOGUE                                   \
+      ".cfi_remember_state\n\t"                                   \
+      "lgr 1,%1\n\t" /* copy the argvec pointer in r1 */          \
+      "lgr 7,11\n\t"                                              \
+      "lgr 11,%2\n\t"                                             \
+      ".cfi_def_cfa r11, 0\n\t"
+#  define VALGRIND_CFI_EPILOGUE                                   \
+      "lgr 11, 7\n\t"                                             \
+      ".cfi_restore_state\n\t"
+#else
+#  define __FRAME_POINTER
+#  define VALGRIND_CFI_PROLOGUE                                   \
+      "lgr 1,%1\n\t"
+#  define VALGRIND_CFI_EPILOGUE
+#endif
+
+
+
+
+/* These regs are trashed by the hidden call. Note that we overwrite
+   r14 in s390_irgen_noredir (VEX/priv/guest_s390_irgen.c) to give the
+   function a proper return address. All others are ABI defined call
+   clobbers. */
+#define __CALLER_SAVED_REGS "0","1","2","3","4","5","14", \
+                           "f0","f1","f2","f3","f4","f5","f6","f7"
+
+
+#define CALL_FN_W_v(lval, orig)                                  \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long  _argvec[1];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 1, 0(1)\n\t"  /* target->r1 */                      \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "d" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+/* The call abi has the arguments in r2-r6 and stack */
+#define CALL_FN_W_W(lval, orig, arg1)                            \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[2];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1, arg2)                     \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[3];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1, arg2, arg3)              \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[4];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1, arg2, arg3, arg4)       \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[5];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7"     \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1, arg2, arg3, arg4, arg5)   \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[6];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-160\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,160\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1, arg2, arg3, arg4, arg5,   \
+                     arg6)                                       \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[7];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-168\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,168\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1, arg2, arg3, arg4, arg5,   \
+                     arg6, arg7)                                 \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[8];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-176\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,176\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1, arg2, arg3, arg4, arg5,   \
+                     arg6, arg7 ,arg8)                           \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[9];                         \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-184\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,184\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1, arg2, arg3, arg4, arg5,   \
+                     arg6, arg7 ,arg8, arg9)                     \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[10];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      _argvec[9] = (unsigned long)arg9;                          \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-192\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "mvc 184(8,15), 72(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,192\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1, arg2, arg3, arg4, arg5,  \
+                     arg6, arg7 ,arg8, arg9, arg10)              \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[11];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      _argvec[9] = (unsigned long)arg9;                          \
+      _argvec[10] = (unsigned long)arg10;                        \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-200\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "mvc 184(8,15), 72(1)\n\t"                              \
+         "mvc 192(8,15), 80(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,200\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1, arg2, arg3, arg4, arg5,  \
+                     arg6, arg7 ,arg8, arg9, arg10, arg11)       \
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[12];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      _argvec[9] = (unsigned long)arg9;                          \
+      _argvec[10] = (unsigned long)arg10;                        \
+      _argvec[11] = (unsigned long)arg11;                        \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-208\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "mvc 184(8,15), 72(1)\n\t"                              \
+         "mvc 192(8,15), 80(1)\n\t"                              \
+         "mvc 200(8,15), 88(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,208\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1, arg2, arg3, arg4, arg5,  \
+                     arg6, arg7 ,arg8, arg9, arg10, arg11, arg12)\
+   do {                                                          \
+      volatile OrigFn        _orig = (orig);                     \
+      volatile unsigned long _argvec[13];                        \
+      volatile unsigned long _res;                               \
+      _argvec[0] = (unsigned long)_orig.nraddr;                  \
+      _argvec[1] = (unsigned long)arg1;                          \
+      _argvec[2] = (unsigned long)arg2;                          \
+      _argvec[3] = (unsigned long)arg3;                          \
+      _argvec[4] = (unsigned long)arg4;                          \
+      _argvec[5] = (unsigned long)arg5;                          \
+      _argvec[6] = (unsigned long)arg6;                          \
+      _argvec[7] = (unsigned long)arg7;                          \
+      _argvec[8] = (unsigned long)arg8;                          \
+      _argvec[9] = (unsigned long)arg9;                          \
+      _argvec[10] = (unsigned long)arg10;                        \
+      _argvec[11] = (unsigned long)arg11;                        \
+      _argvec[12] = (unsigned long)arg12;                        \
+      __asm__ volatile(                                          \
+         VALGRIND_CFI_PROLOGUE                                   \
+         "aghi 15,-216\n\t"                                      \
+         "lg 2, 8(1)\n\t"                                        \
+         "lg 3,16(1)\n\t"                                        \
+         "lg 4,24(1)\n\t"                                        \
+         "lg 5,32(1)\n\t"                                        \
+         "lg 6,40(1)\n\t"                                        \
+         "mvc 160(8,15), 48(1)\n\t"                              \
+         "mvc 168(8,15), 56(1)\n\t"                              \
+         "mvc 176(8,15), 64(1)\n\t"                              \
+         "mvc 184(8,15), 72(1)\n\t"                              \
+         "mvc 192(8,15), 80(1)\n\t"                              \
+         "mvc 200(8,15), 88(1)\n\t"                              \
+         "mvc 208(8,15), 96(1)\n\t"                              \
+         "lg 1, 0(1)\n\t"                                        \
+         VALGRIND_CALL_NOREDIR_R1                                \
+         "lgr %0, 2\n\t"                                         \
+         "aghi 15,216\n\t"                                       \
+         VALGRIND_CFI_EPILOGUE                                   \
+         : /*out*/   "=d" (_res)                                 \
+         : /*in*/    "a" (&_argvec[0]) __FRAME_POINTER           \
+         : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+      );                                                         \
+      lval = (__typeof__(lval)) _res;                            \
+   } while (0)
+
+
+#endif /* PLAT_s390x_linux */
+
 
 /* ------------------------------------------------------------------ */
 /* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS.               */
@@ -4786,6 +5337,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *fo
 #undef PLAT_ppc32_linux
 #undef PLAT_ppc64_linux
 #undef PLAT_arm_linux
+#undef PLAT_s390x_linux
 #undef PLAT_ppc32_aix5
 #undef PLAT_ppc64_aix5
 
--- valgrind/include/vki/vki-linux.h
+++ valgrind/include/vki/vki-linux.h
@@ -89,6 +89,8 @@
 #  include "vki-posixtypes-ppc64-linux.h"
 #elif defined(VGA_arm)
 #  include "vki-posixtypes-arm-linux.h"
+#elif defined(VGA_s390x)
+#  include "vki-posixtypes-s390x-linux.h"
 #else
 #  error Unknown platform
 #endif
@@ -201,6 +203,8 @@ typedef unsigned int	        vki_uint;
 #  include "vki-ppc64-linux.h"
 #elif defined(VGA_arm)
 #  include "vki-arm-linux.h"
+#elif defined(VGA_s390x)
+#  include "vki-s390x-linux.h"
 #else
 #  error Unknown platform
 #endif
--- valgrind/memcheck/mc_machine.c
+++ valgrind/memcheck/mc_machine.c
@@ -65,6 +65,11 @@
 # define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC64State)
 #endif
 
+#if defined(VGA_s390x)
+# include "libvex_guest_s390x.h"
+# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestS390XState)
+#endif
+
 #if defined(VGA_arm)
 # include "libvex_guest_arm.h"
 # define MC_SIZEOF_GUEST_STATE sizeof(VexGuestARMState)
@@ -681,6 +686,54 @@ static Int get_otrack_shadow_offset_wrk
 #  undef GOF
 #  undef SZB
 
+   /* -------------------- s390x -------------------- */
+
+#  elif defined(VGA_s390x)
+#  define GOF(_fieldname) \
+      (offsetof(VexGuestS390XState,guest_##_fieldname))
+   Int  o      = offset;
+   Int  sz     = szB;
+   tl_assert(sz > 0);
+   tl_assert(host_is_big_endian());
+
+   /* no matter what byte(s) we change, we have changed the full 8 byte value
+      and need to track this change for the whole register */
+   if (o >= GOF(r0) && sz <= 8 && o <= (GOF(r15) + 8 - sz))
+      return GOF(r0) + ((o-GOF(r0)) & -8) ;
+
+
+   /* fprs are accesses 4 or 8 byte at once. Again, we track that change for
+      the full register */
+   if ((sz == 8 || sz == 4) && o >= GOF(f0) && o <= GOF(f15)+8-sz)
+      return GOF(f0) + ((o-GOF(f0)) & -8) ;
+
+   /* access registers are accessed 4 bytes at once */
+   if (sz == 4 && o >= GOF(a0) && o <= GOF(a15))
+         return o;
+
+   /* we access the guest counter either fully or one of the 4byte words */
+   if (o == GOF(counter) && (sz == 8 || sz ==4))
+      return o;
+   if (o == GOF(counter) + 4 && sz == 4)
+      return o;
+
+   if (o == GOF(CC_OP)) return -1;
+   if (o == GOF(CC_DEP1)) return o;
+   if (o == GOF(CC_DEP2)) return o;
+   if (o == GOF(CC_NDEP)) return -1;
+   if (o == GOF(TISTART)) return -1;
+   if (o == GOF(TILEN)) return -1;
+   if (o == GOF(NRADDR)) return -1;
+   if (o == GOF(IP_AT_SYSCALL)) return -1;
+   if (o == GOF(fpc)) return -1;
+   if (o == GOF(IA)) return -1;
+   if (o == GOF(SYSNO)) return -1;
+   VG_(printf)("MC_(get_otrack_shadow_offset)(s390x)(off=%d,sz=%d)\n",
+               offset,szB);
+   tl_assert(0);
+#  undef GOF
+
+
    /* --------------------- arm --------------------- */
 
 #  elif defined(VGA_arm)
@@ -888,6 +941,11 @@ IRType MC_(get_otrack_reg_array_equiv_in
    VG_(printf)("\n");
    tl_assert(0);
 
+   /* --------------------- s390x --------------------- */
+#  elif defined(VGA_s390x)
+   /* Should never het here because s390x does not use Ist_PutI
+      and Iex_GetI. */
+   tl_assert(0);
 #  else
 #    error "FIXME: not implemented for this architecture"
 #  endif
--- valgrind/memcheck/mc_translate.c
+++ valgrind/memcheck/mc_translate.c
@@ -121,6 +121,7 @@ static IRType  shadowTypeV ( IRType ty )
 static IRExpr* expr2vbits ( struct _MCEnv* mce, IRExpr* e );
 static IRTemp  findShadowTmpB ( struct _MCEnv* mce, IRTemp orig );
 
+static IRExpr *i128_const_zero(void);
 
 /*------------------------------------------------------------*/
 /*--- Memcheck running state, and tmp management.          ---*/
@@ -343,7 +344,7 @@ static Bool sameKindedAtoms ( IRAtom* a1
 /* Shadow state is always accessed using integer types.  This returns
    an integer type with the same size (as per sizeofIRType) as the
    given type.  The only valid shadow types are Bit, I8, I16, I32,
-   I64, V128. */
+   I64, I128, V128. */
 
 static IRType shadowTypeV ( IRType ty )
 {
@@ -356,6 +357,7 @@ static IRType shadowTypeV ( IRType ty )
       case Ity_I128: return ty;
       case Ity_F32:  return Ity_I32;
       case Ity_F64:  return Ity_I64;
+      case Ity_F128: return Ity_I128;
       case Ity_V128: return Ity_V128;
       default: ppIRType(ty); 
                VG_(tool_panic)("memcheck:shadowTypeV");
@@ -371,6 +373,7 @@ static IRExpr* definedOfType ( IRType ty
       case Ity_I16:  return IRExpr_Const(IRConst_U16(0));
       case Ity_I32:  return IRExpr_Const(IRConst_U32(0));
       case Ity_I64:  return IRExpr_Const(IRConst_U64(0));
+      case Ity_I128: return i128_const_zero();
       case Ity_V128: return IRExpr_Const(IRConst_V128(0x0000));
       default:       VG_(tool_panic)("memcheck:definedOfType");
    }
@@ -438,6 +441,18 @@ static IRAtom* assignNew ( HChar cat, MC
 
 
 /*------------------------------------------------------------*/
+/*--- Helper functions for 128-bit ops                     ---*/
+/*------------------------------------------------------------*/
+static IRExpr *i128_const_zero(void)
+{
+  return binop(Iop_64HLto128, IRExpr_Const(IRConst_U64(0)),
+               IRExpr_Const(IRConst_U64(0)));
+}
+
+/* There are no 128-bit loads and/or stores. So we do not need to worry
+   about that in expr2vbits_Load */
+
+/*------------------------------------------------------------*/
 /*--- Constructing definedness primitive ops               ---*/
 /*------------------------------------------------------------*/
 
@@ -499,6 +514,20 @@ static IRAtom* mkUifU64 ( MCEnv* mce, IR
    return assignNew('V', mce, Ity_I64, binop(Iop_Or64, a1, a2));
 }
 
+static IRAtom* mkUifU128 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
+   IRAtom *tmp1, *tmp2, *tmp3, *tmp4, *tmp5, *tmp6;
+   tl_assert(isShadowAtom(mce,a1));
+   tl_assert(isShadowAtom(mce,a2));
+   tmp1 = assignNew('V', mce, Ity_I64, unop(Iop_128to64, a1));
+   tmp2 = assignNew('V', mce, Ity_I64, unop(Iop_128HIto64, a1));
+   tmp3 = assignNew('V', mce, Ity_I64, unop(Iop_128to64, a2));
+   tmp4 = assignNew('V', mce, Ity_I64, unop(Iop_128HIto64, a2));
+   tmp5 = assignNew('V', mce, Ity_I64, binop(Iop_Or64, tmp1, tmp3));
+   tmp6 = assignNew('V', mce, Ity_I64, binop(Iop_Or64, tmp2, tmp4));
+
+   return assignNew('V', mce, Ity_I128, binop(Iop_64HLto128, tmp6, tmp5));
+}
+
 static IRAtom* mkUifUV128 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
    tl_assert(isShadowAtom(mce,a1));
    tl_assert(isShadowAtom(mce,a2));
@@ -511,6 +540,7 @@ static IRAtom* mkUifU ( MCEnv* mce, IRTy
       case Ity_I16:  return mkUifU16(mce, a1, a2);
       case Ity_I32:  return mkUifU32(mce, a1, a2);
       case Ity_I64:  return mkUifU64(mce, a1, a2);
+      case Ity_I128: return mkUifU128(mce, a1, a2);
       case Ity_V128: return mkUifUV128(mce, a1, a2);
       default:
          VG_(printf)("\n"); ppIRType(vty); VG_(printf)("\n");
@@ -650,6 +680,10 @@ static IRAtom* mkImproveORV128 ( MCEnv*
 
 /* --------- Pessimising casts. --------- */
 
+/* The function returns an expression of type DST_TY. If any of the VBITS
+   is undefined (value == 1) the resulting expression has all bits set to
+   1. Otherwise, all bits are 0. */
+
 static IRAtom* mkPCastTo( MCEnv* mce, IRType dst_ty, IRAtom* vbits ) 
 {
    IRType  src_ty;
@@ -1202,6 +1236,7 @@ void do_shadow_PUT ( MCEnv* mce,  Int of
 
    ty = typeOfIRExpr(mce->sb->tyenv, vatom);
    tl_assert(ty != Ity_I1);
+   tl_assert(ty != Ity_I128);
    if (isAlwaysDefd(mce, offset, sizeofIRType(ty))) {
       /* later: no ... */
       /* emit code to emit a complaint if any of the vbits are 1. */
@@ -1263,6 +1298,7 @@ IRExpr* shadow_GET ( MCEnv* mce, Int off
 {
    IRType tyS = shadowTypeV(ty);
    tl_assert(ty != Ity_I1);
+   tl_assert(ty != Ity_I128);
    if (isAlwaysDefd(mce, offset, sizeofIRType(ty))) {
       /* Always defined, return all zeroes of the relevant type */
       return definedOfType(tyS);
@@ -1414,6 +1450,22 @@ IRAtom* mkLazy3 ( MCEnv* mce, IRType fin
       return at;
    }
 
+   /* I32 x I128 x I128 -> I128 */
+   /* Standard FP idiom: rm x FParg1 x FParg2 -> FPresult */
+   if (t1 == Ity_I32 && t2 == Ity_I128 && t3 == Ity_I128
+       && finalVty == Ity_I128) {
+      if (0) VG_(printf)("mkLazy3: I32 x I128 x I128 -> I128\n");
+      /* Widen 1st arg to I128.  Since 1st arg is typically a rounding
+         mode indication which is fully defined, this should get
+         folded out later. */
+      at = mkPCastTo(mce, Ity_I128, va1);
+      /* Now fold in 2nd and 3rd args. */
+      at = mkUifU(mce, Ity_I128, at, va2);
+      at = mkUifU(mce, Ity_I128, at, va3);
+      /* and PCast once again. */
+      at = mkPCastTo(mce, Ity_I128, at);
+      return at;
+   }
    if (1) {
       VG_(printf)("mkLazy3: ");
       ppIRType(t1);
@@ -1474,6 +1526,19 @@ IRAtom* mkLazy4 ( MCEnv* mce, IRType fin
       at = mkPCastTo(mce, Ity_I64, at);
       return at;
    }
+   /* I32 x I32 x I32 x I32 -> I32 */
+   /* Standard FP idiom: rm x FParg1 x FParg2 x FParg3 -> FPresult */
+   if (t1 == Ity_I32 && t2 == Ity_I32 && t3 == Ity_I32 && t4 == Ity_I32
+       && finalVty == Ity_I32) {
+      if (0) VG_(printf)("mkLazy4: I32 x I32 x I32 x I32 -> I32\n");
+      at = va1;
+      /* Now fold in 2nd, 3rd, 4th args. */
+      at = mkUifU(mce, Ity_I32, at, va2);
+      at = mkUifU(mce, Ity_I32, at, va3);
+      at = mkUifU(mce, Ity_I32, at, va4);
+      at = mkPCastTo(mce, Ity_I32, at);
+      return at;
+   }
 
    if (1) {
       VG_(printf)("mkLazy4: ");
@@ -2136,6 +2201,12 @@ IRAtom* expr2vbits_Qop ( MCEnv* mce,
       case Iop_MSubF64r32:
          /* I32(rm) x F64 x F64 x F64 -> F64 */
          return mkLazy4(mce, Ity_I64, vatom1, vatom2, vatom3, vatom4);
+
+      case Iop_MAddF32:
+      case Iop_MSubF32:
+         /* I32(rm) x F32 x F32 x F32 -> F32 */
+         return mkLazy4(mce, Ity_I32, vatom1, vatom2, vatom3, vatom4);
+
       default:
          ppIROp(op);
          VG_(tool_panic)("memcheck:expr2vbits_Qop");
@@ -2162,6 +2233,12 @@ IRAtom* expr2vbits_Triop ( MCEnv* mce,
    tl_assert(sameKindedAtoms(atom2,vatom2));
    tl_assert(sameKindedAtoms(atom3,vatom3));
    switch (op) {
+      case Iop_AddF128:
+      case Iop_SubF128:
+      case Iop_MulF128:
+      case Iop_DivF128:
+         /* I32(rm) x F128 x F128 -> F128 */
+         return mkLazy3(mce, Ity_I128, vatom1, vatom2, vatom3);
       case Iop_AddF64:
       case Iop_AddF64r32:
       case Iop_SubF64:
@@ -2847,6 +2924,14 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
 
       /* Scalar floating point */
 
+      case Iop_F32toI64S:
+         /* I32(rm) x F32 -> I64 */
+         return mkLazy2(mce, Ity_I64, vatom1, vatom2);
+
+      case Iop_I64StoF32:
+         /* I32(rm) x I64 -> F32 */
+         return mkLazy2(mce, Ity_I32, vatom1, vatom2);
+
       case Iop_RoundF64toInt:
       case Iop_RoundF64toF32:
       case Iop_F64toI64S:
@@ -2864,6 +2949,26 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
          /* I32(rm) x I32/F32 -> I32/F32 */
          return mkLazy2(mce, Ity_I32, vatom1, vatom2);
 
+      case Iop_SqrtF128:
+         /* I32(rm) x F128 -> F128 */
+         return mkLazy2(mce, Ity_I128, vatom1, vatom2);
+
+      case Iop_I32StoF32:
+      case Iop_F32toI32S:
+         /* First arg is I32 (rounding mode), second is F32/I32 (data). */
+         return mkLazy2(mce, Ity_I32, vatom1, vatom2);
+
+      case Iop_F128toI32S: /* IRRoundingMode(I32) x F128 -> signed I32  */
+      case Iop_F128toF32:  /* IRRoundingMode(I32) x F128 -> F32         */
+         return mkLazy2(mce, Ity_I32, vatom1, vatom2);
+
+      case Iop_F128toI64S: /* IRRoundingMode(I32) x F128 -> signed I64  */
+      case Iop_F128toF64:  /* IRRoundingMode(I32) x F128 -> F64         */
+         return mkLazy2(mce, Ity_I64, vatom1, vatom2);
+
+      case Iop_F64HLto128:
+         return mkLazy2(mce, Ity_I128, vatom1, vatom2);
+
       case Iop_F64toI32U:
       case Iop_F64toI32S:
       case Iop_F64toF32:
@@ -2874,7 +2979,9 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
          /* First arg is I32 (rounding mode), second is F64 (data). */
          return mkLazy2(mce, Ity_I16, vatom1, vatom2);
 
+      case Iop_CmpF32:
       case Iop_CmpF64:
+      case Iop_CmpF128:
          return mkLazy2(mce, Ity_I32, vatom1, vatom2);
 
       /* non-FP after here */
@@ -2892,6 +2999,7 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce,
       case Iop_32HLto64:
          return assignNew('V', mce, Ity_I64, binop(op, vatom1, vatom2));
 
+      case Iop_DivModS64to64:
       case Iop_MullS64:
       case Iop_MullU64: {
          IRAtom* vLo64 = mkLeft64(mce, mkUifU64(mce, vatom1,vatom2));
@@ -3142,6 +3250,20 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IR
       case Iop_Reverse64_32x4:
          return assignNew('V', mce, Ity_V128, unop(op, vatom));
 
+      case Iop_F128HIto64:  /* F128 -> high half of F128 */
+      case Iop_F128to64:    /* F128 -> low  half of F128 */
+         return mkPCastTo(mce, Ity_I64, vatom);
+
+      case Iop_NegF128:
+      case Iop_AbsF128:
+         return mkPCastTo(mce, Ity_I128, vatom);
+
+      case Iop_I32StoF128: /* signed I32 -> F128 */
+      case Iop_I64StoF128: /* signed I64 -> F128 */
+      case Iop_F32toF128:  /* F32 -> F128 */
+      case Iop_F64toF128:  /* F64 -> F128 */
+         return mkPCastTo(mce, Ity_I128, vatom);
+
       case Iop_F32toF64: 
       case Iop_I32StoF64:
       case Iop_I32UtoF64:
@@ -3185,6 +3307,7 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IR
       case Iop_Reverse64_32x2:
          return assignNew('V', mce, Ity_I64, unop(op, vatom));
 
+      case Iop_I16StoF32:
       case Iop_64to32:
       case Iop_64HIto32:
       case Iop_1Uto32:
@@ -4536,6 +4659,7 @@ static Bool isBogusAtom ( IRAtom* at )
       case Ico_U32:  n = (ULong)con->Ico.U32; break;
       case Ico_U64:  n = (ULong)con->Ico.U64; break;
       case Ico_F64:  return False;
+      case Ico_F32i: return False;
       case Ico_F64i: return False;
       case Ico_V128: return False;
       default: ppIRExpr(at); tl_assert(0);
--- valgrind/memcheck/tests/Makefile.am
+++ valgrind/memcheck/tests/Makefile.am
@@ -295,8 +295,9 @@ origin4_many_CFLAGS	= $(AM_CFLAGS) -O
 origin5_bz2_CFLAGS	= $(AM_CFLAGS) -O -Wno-inline
 origin6_fp_CFLAGS	= $(AM_CFLAGS) -O
 
-# Don't allow GCC to inline memcpy(), because then we can't intercept it
-overlap_CFLAGS		= $(AM_CFLAGS) -fno-builtin-memcpy
+# Don't allow GCC to inline memcpy() and strcpy(),
+# because then we can't intercept it
+overlap_CFLAGS		= $(AM_CFLAGS) -fno-builtin-memcpy -fno-builtin-strcpy
 
 str_tester_CFLAGS	= $(AM_CFLAGS) -Wno-shadow
 
--- valgrind/memcheck/tests/atomic_incs.c
+++ valgrind/memcheck/tests/atomic_incs.c
@@ -76,6 +76,20 @@ __attribute__((noinline)) void atomic_ad
    } while (success != 1);
 #elif defined(VGA_arm)
    *p += n;
+#elif defined(VGA_s390x)
+   int dummy;
+   __asm__ __volatile__(
+      "   l	0,%0\n\t"
+      "0: st	0,%1\n\t"
+      "   icm	1,1,%1\n\t"
+      "   ar	1,%2\n\t"
+      "   stcm  1,1,%1\n\t"
+      "   l     1,%1\n\t"
+      "   cs	0,1,%0\n\t"
+      "   jl    0b\n\t"
+      : "+m" (*p), "+m" (dummy)
+      : "d" (n)
+      : "cc", "memory", "0", "1");
 #else
 # error "Unsupported arch"
 #endif
@@ -140,6 +154,20 @@ __attribute__((noinline)) void atomic_ad
    } while (success != 1);
 #elif defined(VGA_arm)
    *p += n;
+#elif defined(VGA_s390x)
+   int dummy;
+   __asm__ __volatile__(
+      "   l	0,%0\n\t"
+      "0: st	0,%1\n\t"
+      "   icm	1,3,%1\n\t"
+      "   ar	1,%2\n\t"
+      "   stcm  1,3,%1\n\t"
+      "   l     1,%1\n\t"
+      "   cs	0,1,%0\n\t"
+      "   jl    0b\n\t"
+      : "+m" (*p), "+m" (dummy)
+      : "d" (n)
+      : "cc", "memory", "0", "1");
 #else
 # error "Unsupported arch"
 #endif
@@ -216,6 +244,16 @@ __attribute__((noinline)) void atomic_ad
          : /*trash*/ "memory", "cc", "r5", "r8", "r9", "r10"
       );
    } while (block[2] != 0);
+#elif defined(VGA_s390x)
+   __asm__ __volatile__(
+      "   l	0,%0\n\t"
+      "0: lr	1,0\n\t"
+      "   ar	1,%1\n\t"
+      "   cs	0,1,%0\n\t"
+      "   jl    0b\n\t"
+      : "+m" (*p)
+      : "d" (n)
+      : "cc", "memory", "0", "1");
 #else
 # error "Unsupported arch"
 #endif
@@ -252,6 +290,16 @@ __attribute__((noinline)) void atomic_ad
          : /*trash*/ "memory", "cc", "r15"
       );
    } while (success != 1);
+#elif defined(VGA_s390x)
+   __asm__ __volatile__(
+      "   lg	0,%0\n\t"
+      "0: lgr	1,0\n\t"
+      "   agr	1,%1\n\t"
+      "   csg	0,1,%0\n\t"
+      "   jl    0b\n\t"
+      : "+m" (*p)
+      : "d" (n)
+      : "cc", "memory", "0", "1");
 #else
 # error "Unsupported arch"
 #endif
--- valgrind/memcheck/tests/linux/timerfd-syscall.c
+++ valgrind/memcheck/tests/linux/timerfd-syscall.c
@@ -61,6 +61,8 @@
 #define __NR_timerfd_create  322
 #elif defined(__powerpc__)
 #define __NR_timerfd_create  306
+#elif defined(__s390x__)
+#define __NR_timerfd_create  319
 #else
 #error Cannot detect your architecture!
 #endif
@@ -76,6 +78,9 @@
 #elif defined(__powerpc__)
 #define __NR_timerfd_settime 311
 #define __NR_timerfd_gettime 312
+#elif defined(__s390x__)
+#define __NR_timerfd_settime 320
+#define __NR_timerfd_gettime 321
 #else
 #error Cannot detect your architecture!
 #endif
--- valgrind/memcheck/tests/partiallydefinedeq.c
+++ valgrind/memcheck/tests/partiallydefinedeq.c
@@ -66,7 +66,7 @@ int main ( void )
 // Hence also on ARM we get 3 errors, not 2.
 static __attribute__((noinline)) void bar ( void )
 {
-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__arm__)
-  fprintf(stderr, "Currently running on ppc32/64/arm: this test should give 3 errors, not 2.\n");
+#if defined(__powerpc__) || defined(__powerpc64__) || defined(__arm__) || defined(__s390x__)
+  fprintf(stderr, "Currently running on ppc32/64/arm/s390x: this test should give 3 errors, not 2.\n");
 #endif
 }
--- valgrind/memcheck/tests/partiallydefinedeq.stderr.exp2
+++ valgrind/memcheck/tests/partiallydefinedeq.stderr.exp2
@@ -1,5 +1,5 @@
 
-Currently running on ppc32/64/arm: this test should give 3 errors, not 2.
+Currently running on ppc32/64/arm/s390x: this test should give 3 errors, not 2.
 Conditional jump or move depends on uninitialised value(s)
    at 0x........: foo (partiallydefinedeq.c:15)
    by 0x........: main (partiallydefinedeq.c:37)
--- valgrind/memcheck/tests/sigprocmask.c
+++ valgrind/memcheck/tests/sigprocmask.c
@@ -13,6 +13,7 @@ int main(void)
 {
 #if defined(__NR_sigprocmask)        \
     && !defined(__powerpc64__)       \
+    && !defined(__s390x__)           \
     && !defined(_AIX)                \
     && !defined(__arm__)
 
--- valgrind/memcheck/tests/supp_unknown.supp
+++ valgrind/memcheck/tests/supp_unknown.supp
@@ -6,3 +6,10 @@
    fun:(below main)
 }
 
+{
+   <insert a suppression name here>
+   Memcheck:Jump
+   obj:*
+   fun:main
+}
+
--- valgrind/none/tests/Makefile.am
+++ valgrind/none/tests/Makefile.am
@@ -19,6 +19,9 @@ endif
 if VGCONF_ARCHS_INCLUDE_ARM
 SUBDIRS += arm
 endif
+if VGCONF_ARCHS_INCLUDE_S390X
+SUBDIRS += s390x
+endif
 
 # OS-specific tests
 if VGCONF_OS_IS_LINUX
@@ -33,7 +36,7 @@ if VGCONF_PLATFORMS_INCLUDE_X86_LINUX
 SUBDIRS += x86-linux
 endif
 
-DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm linux darwin x86-linux .
+DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm s390x linux darwin x86-linux .
 
 dist_noinst_SCRIPTS = \
 	filter_cmdline0 \
--- valgrind/tests/arch_test.c
+++ valgrind/tests/arch_test.c
@@ -28,6 +28,7 @@ char* all_archs[] = {
    "ppc32",
    "ppc64",
    "arm",
+   "s390x",
    NULL
 };
 
@@ -47,6 +48,9 @@ static Bool go(char* arch)
    if ( 0 == strcmp( arch, "ppc64" ) ) return True;
    if ( 0 == strcmp( arch, "ppc32" ) ) return True;
 
+#elif defined(VGP_s390x_linux)
+   if ( 0 == strcmp( arch, "s390x" ) ) return True;
+
 #elif defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
    if (sizeof(void*) == 8) {
       /* CPU is in 64-bit mode */
--- valgrind/callgrind/Makefile.in	2010-10-21 03:16:11.000000000 +0200
+++ valgrind/callgrind/Makefile.in	2010-11-11 16:11:54.102579616 +0100
@@ -80,7 +80,8 @@ am__objects_1 = callgrind_@VGCONF_ARCH_P
 	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-x86-amd64.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc32.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc64.$(OBJEXT) \
-	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.$(OBJEXT)
+	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.$(OBJEXT) \
+	callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.$(OBJEXT)
 am_callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS = $(am__objects_1)
 callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS =  \
 	$(am_callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS)
@@ -88,7 +89,8 @@ am__callgrind_@VGCONF_ARCH_SEC@_@VGCONF_
 	callstack.c clo.c command.c context.c costs.c debug.c dump.c \
 	events.c fn.c jumps.c main.c sim.c threads.c \
 	../cachegrind/cg-x86-amd64.c ../cachegrind/cg-ppc32.c \
-	../cachegrind/cg-ppc64.c ../cachegrind/cg-arm.c
+	../cachegrind/cg-ppc64.c ../cachegrind/cg-arm.c \
+	../cachegrind/cg-s390x.c
 am__objects_2 = callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bbcc.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-callstack.$(OBJEXT) \
@@ -107,7 +109,8 @@ am__objects_2 = callgrind_@VGCONF_ARCH_S
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-x86-amd64.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc32.$(OBJEXT) \
 	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc64.$(OBJEXT) \
-	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.$(OBJEXT)
+	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.$(OBJEXT) \
+	callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.$(OBJEXT)
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS =  \
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_2)
 callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS =  \
@@ -427,6 +430,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -453,6 +461,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -501,6 +510,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -552,6 +564,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -589,6 +604,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = \
 	docs/callgrind_annotate-manpage.xml \
 	docs/callgrind_control-manpage.xml \
@@ -628,7 +648,8 @@ CALLGRIND_SOURCES_COMMON = \
 	../cachegrind/cg-x86-amd64.c \
 	../cachegrind/cg-ppc32.c \
 	../cachegrind/cg-ppc64.c \
-	../cachegrind/cg-arm.c
+ 	../cachegrind/cg-arm.c   \
+	../cachegrind/cg-s390x.c
 
 CALLGRIND_CFLAGS_COMMON = -I$(top_srcdir)/cachegrind
 callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
@@ -775,6 +796,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-x86-amd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-clo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-command.Po@am__quote@
@@ -794,6 +816,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-x86-amd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-clo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-command.Po@am__quote@
@@ -1088,6 +1111,20 @@ callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.obj `if test -f '../cachegrind/cg-arm.c'; then $(CYGPATH_W) '../cachegrind/cg-arm.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-arm.c'; fi`
 
+callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o: ../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o `test -f '../cachegrind/cg-s390x.c' || echo '$(srcdir)/'`../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-s390x.c' object='callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o `test -f '../cachegrind/cg-s390x.c' || echo '$(srcdir)/'`../cachegrind/cg-s390x.c
+
+callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj: ../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj `if test -f '../cachegrind/cg-s390x.c'; then $(CYGPATH_W) '../cachegrind/cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-s390x.c' object='callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj `if test -f '../cachegrind/cg-s390x.c'; then $(CYGPATH_W) '../cachegrind/cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-s390x.c'; fi`
+
 callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.o: bb.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.o -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.Tpo -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.o `test -f 'bb.c' || echo '$(srcdir)/'`bb.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-bb.Po
@@ -1353,6 +1390,20 @@ callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-arm.c' object='callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.obj `if test -f '../cachegrind/cg-arm.c'; then $(CYGPATH_W) '../cachegrind/cg-arm.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-arm.c'; fi`
+
+callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o: ../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o `test -f '../cachegrind/cg-s390x.c' || echo '$(srcdir)/'`../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-s390x.c' object='callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o `test -f '../cachegrind/cg-s390x.c' || echo '$(srcdir)/'`../cachegrind/cg-s390x.c
+
+callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj: ../cachegrind/cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj -MD -MP -MF $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj `if test -f '../cachegrind/cg-s390x.c'; then $(CYGPATH_W) '../cachegrind/cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='../cachegrind/cg-s390x.c' object='callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj `if test -f '../cachegrind/cg-s390x.c'; then $(CYGPATH_W) '../cachegrind/cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/../cachegrind/cg-s390x.c'; fi`
 install-pkgincludeHEADERS: $(pkginclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
--- valgrind/callgrind/tests/Makefile.in	2010-10-21 03:16:11.000000000 +0200
+++ valgrind/callgrind/tests/Makefile.in	2010-11-11 16:11:54.173579396 +0100
@@ -353,6 +353,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -379,6 +384,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/massif/perf/Makefile.in	2010-10-21 03:16:14.000000000 +0200
+++ valgrind/massif/perf/Makefile.in	2010-11-11 16:11:57.156704296 +0100
@@ -308,6 +308,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -334,6 +339,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/massif/Makefile.in	2010-10-21 03:16:14.000000000 +0200
+++ valgrind/massif/Makefile.in	2010-11-11 16:11:57.090704791 +0100
@@ -410,6 +410,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -436,6 +441,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -484,6 +490,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -535,6 +544,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -572,6 +584,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = \
 	docs/ms-manual.xml \
 	docs/ms_print-manpage.xml
--- valgrind/massif/tests/Makefile.in	2010-10-21 03:16:15.000000000 +0200
+++ valgrind/massif/tests/Makefile.in	2010-11-11 16:11:57.247704443 +0100
@@ -389,6 +389,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -415,6 +420,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/perf/Makefile.in	2010-10-21 03:16:17.000000000 +0200
+++ valgrind/perf/Makefile.in	2010-11-11 16:11:59.577704751 +0100
@@ -337,6 +337,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -363,6 +368,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/mpi/Makefile.in	2010-10-21 03:16:16.000000000 +0200
+++ valgrind/mpi/Makefile.in	2010-11-11 16:11:58.436704380 +0100
@@ -336,6 +336,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -362,6 +367,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 DEFAULT_INCLUDES = 
 EXTRA_DIST = \
 	libmpiwrap_aix5.exp \
--- valgrind/configure	2010-11-11 16:06:53.000000000 +0100
+++ valgrind/configure	2010-11-11 16:11:49.930454341 +0100
@@ -673,6 +673,8 @@ VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_FALS
 VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5_TRUE
 VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE
 VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_TRUE
+VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_FALSE
+VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_TRUE
 VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_FALSE
 VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_TRUE
 VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX_FALSE
@@ -683,6 +685,8 @@ VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_FAL
 VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE
 VGCONF_PLATFORMS_INCLUDE_X86_LINUX_FALSE
 VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE
+VGCONF_ARCHS_INCLUDE_S390X_FALSE
+VGCONF_ARCHS_INCLUDE_S390X_TRUE
 VGCONF_ARCHS_INCLUDE_ARM_FALSE
 VGCONF_ARCHS_INCLUDE_ARM_TRUE
 VGCONF_ARCHS_INCLUDE_PPC64_FALSE
@@ -5262,6 +5266,12 @@ $as_echo "ok (${host_cpu})" >&6; }
         esac
         ;;
 
+     s390x)
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5
+$as_echo "ok (${host_cpu})" >&6; }
+        ARCH_MAX="s390x"
+        ;;
+
      armv7*)
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5
 $as_echo "ok (${host_cpu})" >&6; }
@@ -5700,6 +5710,19 @@ $as_echo "ok (${ARCH_MAX}-${VGCONF_OS})"
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu}-${host_os})" >&5
 $as_echo "ok (${host_cpu}-${host_os})" >&6; }
 	;;
+     s390x-linux)
+        VGCONF_ARCH_PRI="s390x"
+        VGCONF_ARCH_SEC=""
+        VGCONF_PLATFORM_PRI_CAPS="S390X_LINUX"
+	VGCONF_PLATFORM_SEC_CAPS=""
+        # we want to have the generated code close to the dispatcher
+        valt_load_address_pri_norml="0x401000000"
+        valt_load_address_pri_inner="0x410000000"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5
+$as_echo "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; }
+        ;;
     *)
         VGCONF_ARCH_PRI="unknown"
         VGCONF_ARCH_SEC="unknown"
@@ -5767,6 +5790,14 @@ else
   VGCONF_ARCHS_INCLUDE_ARM_FALSE=
 fi
 
+ if test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then
+  VGCONF_ARCHS_INCLUDE_S390X_TRUE=
+  VGCONF_ARCHS_INCLUDE_S390X_FALSE='#'
+else
+  VGCONF_ARCHS_INCLUDE_S390X_TRUE='#'
+  VGCONF_ARCHS_INCLUDE_S390X_FALSE=
+fi
+
 
 # Set up VGCONF_PLATFORMS_INCLUDE_<platform>.  Either one or two of these
 # become defined.
@@ -5812,6 +5843,15 @@ else
   VGCONF_PLATFORMS_INCLUDE_ARM_LINUX_FALSE=
 fi
 
+ if test x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xS390X_LINUX; then
+  VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_TRUE=
+  VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_FALSE='#'
+else
+  VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_TRUE='#'
+  VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_FALSE=
+fi
+
 
  if test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \
                  -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_AIX5; then
@@ -5857,7 +5897,8 @@ fi
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
                  -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
-                 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX ; then
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX; then
   VGCONF_OS_IS_LINUX_TRUE=
   VGCONF_OS_IS_LINUX_FALSE='#'
 else
@@ -6229,17 +6270,13 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "GLIBC_213" >/dev/null 2>&1; then
+  $EGREP "GLIBC_213" >/dev/null 2>&1; then :
   GLIBC_VERSION="2.13"
 fi
 rm -f conftest*
 
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <standards.h>
@@ -6390,12 +6427,10 @@ $as_echo "#define GLIBC_2_12 1" >>confde
 	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
 	;;
      2.13)
-	echo "$as_me:$LINENO: result: 2.13 family" >&5
-echo "${ECHO_T}2.13 family" >&6
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.13 family" >&5
+$as_echo "2.13 family" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define GLIBC_2_13 1
-_ACEOF
+$as_echo "#define GLIBC_2_13 1" >>confdefs.h
 
 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
 	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
@@ -8442,7 +8477,8 @@ if test x$VGCONF_PLATFORM_PRI_CAPS = xX8
      -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX ; then
   mflag_primary=$FLAG_M32
 elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
-       -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX ; then
+       -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
+       -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then
   mflag_primary=$FLAG_M64
 elif test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 ; then
   mflag_primary=-q32
@@ -9177,7 +9213,7 @@ fi
 #----------------------------------------------------------------------------
 
 # Nb: VEX/Makefile is generated from Makefile.vex.in.
-ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp docs/Makefile tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/darwin/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/tests/ppc32/Makefile memcheck/tests/ppc64/Makefile memcheck/perf/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile massif/Makefile massif/tests/Makefile massif/perf/Makefile massif/ms_print lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/x86-linux/Makefile exp-ptrcheck/Makefile exp-ptrcheck/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile exp-bbv/tests/arm-linux/Makefile exp-dhat/Makefile exp-dhat/tests/Makefile"
+ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp docs/Makefile tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/darwin/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/tests/ppc32/Makefile memcheck/tests/ppc64/Makefile memcheck/perf/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile massif/Makefile massif/tests/Makefile massif/perf/Makefile massif/ms_print lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/s390x/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/x86-linux/Makefile exp-ptrcheck/Makefile exp-ptrcheck/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile exp-bbv/tests/arm-linux/Makefile exp-dhat/Makefile exp-dhat/tests/Makefile"
 
 ac_config_files="$ac_config_files coregrind/link_tool_exe_linux"
 
@@ -9330,6 +9366,10 @@ if test -z "${VGCONF_ARCHS_INCLUDE_ARM_T
   as_fn_error "conditional \"VGCONF_ARCHS_INCLUDE_ARM\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${VGCONF_ARCHS_INCLUDE_S390X_TRUE}" && test -z "${VGCONF_ARCHS_INCLUDE_S390X_FALSE}"; then
+  as_fn_error "conditional \"VGCONF_ARCHS_INCLUDE_S390X\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_X86_LINUX_FALSE}"; then
   as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_LINUX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -9350,6 +9390,10 @@ if test -z "${VGCONF_PLATFORMS_INCLUDE_A
   as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_ARM_LINUX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_S390X_LINUX_FALSE}"; then
+  as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_S390X_LINUX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5_FALSE}"; then
   as_fn_error "conditional \"VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -10094,6 +10138,7 @@ do
     "none/tests/ppc64/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/ppc64/Makefile" ;;
     "none/tests/x86/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/x86/Makefile" ;;
     "none/tests/arm/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/arm/Makefile" ;;
+    "none/tests/s390x/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/s390x/Makefile" ;;
     "none/tests/linux/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/linux/Makefile" ;;
     "none/tests/darwin/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/darwin/Makefile" ;;
     "none/tests/x86-linux/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/x86-linux/Makefile" ;;
--- valgrind/exp-bbv/Makefile.in	2010-10-21 03:16:12.000000000 +0200
+++ valgrind/exp-bbv/Makefile.in	2010-11-11 16:11:55.741704607 +0100
@@ -361,6 +361,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -387,6 +392,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -435,6 +441,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -486,6 +495,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -523,6 +535,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = docs/bbv-manual.xml
 BBV_SOURCES_COMMON = bbv_main.c
 exp_bbv_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
--- valgrind/exp-bbv/tests/x86/Makefile.in	2010-10-21 03:16:12.000000000 +0200
+++ valgrind/exp-bbv/tests/x86/Makefile.in	2010-11-11 16:11:56.161704361 +0100
@@ -324,6 +324,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -350,6 +355,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/exp-bbv/tests/x86-linux/Makefile.in	2010-10-21 03:16:12.000000000 +0200
+++ valgrind/exp-bbv/tests/x86-linux/Makefile.in	2010-11-11 16:11:56.089704452 +0100
@@ -315,6 +315,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -341,6 +346,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/exp-bbv/tests/amd64-linux/Makefile.in	2010-10-21 03:16:12.000000000 +0200
+++ valgrind/exp-bbv/tests/amd64-linux/Makefile.in	2010-11-11 16:11:55.881704444 +0100
@@ -332,6 +332,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -358,6 +363,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/exp-bbv/tests/ppc32-linux/Makefile.in	2010-10-21 03:16:12.000000000 +0200
+++ valgrind/exp-bbv/tests/ppc32-linux/Makefile.in	2010-11-11 16:11:56.019704238 +0100
@@ -315,6 +315,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -341,6 +346,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/exp-bbv/tests/arm-linux/Makefile.in	2010-10-21 03:16:12.000000000 +0200
+++ valgrind/exp-bbv/tests/arm-linux/Makefile.in	2010-11-11 16:11:55.950704308 +0100
@@ -315,6 +315,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -341,6 +346,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/exp-bbv/tests/Makefile.in	2010-10-21 03:16:12.000000000 +0200
+++ valgrind/exp-bbv/tests/Makefile.in	2010-11-11 16:11:55.806704330 +0100
@@ -343,6 +343,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -369,6 +374,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/cachegrind/Makefile.in	2010-10-21 03:16:10.000000000 +0200
+++ valgrind/cachegrind/Makefile.in	2010-11-11 16:11:53.736579423 +0100
@@ -70,19 +70,21 @@ am__objects_1 =  \
 	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-x86-amd64.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc32.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc64.$(OBJEXT) \
-	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.$(OBJEXT)
+	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.$(OBJEXT) \
+	cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.$(OBJEXT)
 am_cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS =  \
 	$(am__objects_1)
 cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS =  \
 	$(am_cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_OBJECTS)
 am__cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES_DIST = cg_main.c \
-	cg-x86-amd64.c cg-ppc32.c cg-ppc64.c cg-arm.c
+	cg-x86-amd64.c cg-ppc32.c cg-ppc64.c cg-arm.c cg-s390x.c
 am__objects_2 =  \
 	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-x86-amd64.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc32.$(OBJEXT) \
 	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc64.$(OBJEXT) \
-	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.$(OBJEXT)
+	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.$(OBJEXT) \
+	cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.$(OBJEXT)
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS =  \
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_2)
 cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_OBJECTS =  \
@@ -408,6 +410,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -434,6 +441,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -482,6 +490,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -533,6 +544,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -570,6 +584,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = \
 	docs/cg-manual.xml \
 	docs/cg_annotate-manpage.xml
@@ -594,7 +613,8 @@ CACHEGRIND_SOURCES_COMMON = \
 	cg-x86-amd64.c \
 	cg-ppc32.c \
 	cg-ppc64.c \
-	cg-arm.c
+ 	cg-arm.c   \
+	cg-s390x.c
 
 cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
 	$(CACHEGRIND_SOURCES_COMMON)
@@ -777,11 +797,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-x86-amd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg_main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-x86-amd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cg_merge-cg_merge.Po@am__quote@
@@ -870,6 +892,20 @@ cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-arm.obj `if test -f 'cg-arm.c'; then $(CYGPATH_W) 'cg-arm.c'; else $(CYGPATH_W) '$(srcdir)/cg-arm.c'; fi`
 
+cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o: cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o `test -f 'cg-s390x.c' || echo '$(srcdir)/'`cg-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cg-s390x.c' object='cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.o `test -f 'cg-s390x.c' || echo '$(srcdir)/'`cg-s390x.c
+
+cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj: cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj `if test -f 'cg-s390x.c'; then $(CYGPATH_W) 'cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/cg-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cg-s390x.c' object='cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@-cg-s390x.obj `if test -f 'cg-s390x.c'; then $(CYGPATH_W) 'cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/cg-s390x.c'; fi`
+
 cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.o: cg_main.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.o -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.Tpo -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.o `test -f 'cg_main.c' || echo '$(srcdir)/'`cg_main.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg_main.Po
@@ -940,6 +976,20 @@ cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-arm.obj `if test -f 'cg-arm.c'; then $(CYGPATH_W) 'cg-arm.c'; else $(CYGPATH_W) '$(srcdir)/cg-arm.c'; fi`
 
+cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o: cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o `test -f 'cg-s390x.c' || echo '$(srcdir)/'`cg-s390x.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cg-s390x.c' object='cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.o `test -f 'cg-s390x.c' || echo '$(srcdir)/'`cg-s390x.c
+
+cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj: cg-s390x.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -MT cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj -MD -MP -MF $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj `if test -f 'cg-s390x.c'; then $(CYGPATH_W) 'cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/cg-s390x.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Tpo $(DEPDIR)/cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cg-s390x.c' object='cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS) $(CPPFLAGS) $(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) $(CFLAGS) -c -o cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@-cg-s390x.obj `if test -f 'cg-s390x.c'; then $(CYGPATH_W) 'cg-s390x.c'; else $(CYGPATH_W) '$(srcdir)/cg-s390x.c'; fi`
+
 cg_merge-cg_merge.o: cg_merge.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cg_merge_CPPFLAGS) $(CPPFLAGS) $(cg_merge_CFLAGS) $(CFLAGS) -MT cg_merge-cg_merge.o -MD -MP -MF $(DEPDIR)/cg_merge-cg_merge.Tpo -c -o cg_merge-cg_merge.o `test -f 'cg_merge.c' || echo '$(srcdir)/'`cg_merge.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cg_merge-cg_merge.Tpo $(DEPDIR)/cg_merge-cg_merge.Po
--- valgrind/cachegrind/tests/x86/Makefile.in	2010-10-21 03:16:10.000000000 +0200
+++ valgrind/cachegrind/tests/x86/Makefile.in	2010-11-11 16:11:53.879579404 +0100
@@ -312,6 +312,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -338,6 +343,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/cachegrind/tests/Makefile.in	2010-10-21 03:16:10.000000000 +0200
+++ valgrind/cachegrind/tests/Makefile.in	2010-11-11 16:11:53.812579352 +0100
@@ -360,6 +360,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -386,6 +391,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/drd/Makefile.in	2010-10-21 03:16:12.000000000 +0200
+++ valgrind/drd/Makefile.in	2010-11-11 16:11:55.446704890 +0100
@@ -455,6 +455,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -481,6 +486,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -529,6 +535,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -580,6 +589,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -617,6 +629,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = docs/drd-manual.xml
 
 #----------------------------------------------------------------------------
--- valgrind/drd/tests/Makefile.in	2010-10-21 03:16:12.000000000 +0200
+++ valgrind/drd/tests/Makefile.in	2010-11-11 16:11:55.652704373 +0100
@@ -672,6 +672,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -698,6 +703,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/helgrind/Makefile.in	2010-10-21 03:16:13.000000000 +0200
+++ valgrind/helgrind/Makefile.in	2010-11-11 16:11:56.683704289 +0100
@@ -428,6 +428,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -454,6 +459,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -502,6 +508,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -553,6 +562,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -590,6 +602,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = \
 	docs/hg-manual.xml \
 	README_MSMProp2.txt \
--- valgrind/helgrind/tests/Makefile.in	2010-10-21 03:16:13.000000000 +0200
+++ valgrind/helgrind/tests/Makefile.in	2010-11-11 16:11:56.809704383 +0100
@@ -516,6 +516,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -542,6 +547,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/coregrind/Makefile.in	2010-10-21 03:16:11.000000000 +0200
+++ valgrind/coregrind/Makefile.in	2010-11-11 16:11:55.170705499 +0100
@@ -184,6 +184,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARC
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT) \
@@ -204,6 +205,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARC
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT) \
@@ -213,6 +215,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARC
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT) \
@@ -228,6 +231,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARC
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT) \
@@ -277,6 +281,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCO
 	m_dispatch/dispatch-ppc32-linux.S \
 	m_dispatch/dispatch-ppc64-linux.S \
 	m_dispatch/dispatch-arm-linux.S \
+	m_dispatch/dispatch-s390x-linux.S \
 	m_dispatch/dispatch-ppc32-aix5.S \
 	m_dispatch/dispatch-ppc64-aix5.S \
 	m_dispatch/dispatch-x86-darwin.S \
@@ -291,6 +296,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCO
 	m_sigframe/sigframe-ppc32-linux.c \
 	m_sigframe/sigframe-ppc64-linux.c \
 	m_sigframe/sigframe-arm-linux.c \
+	m_sigframe/sigframe-s390x-linux.c \
 	m_sigframe/sigframe-ppc32-aix5.c \
 	m_sigframe/sigframe-ppc64-aix5.c \
 	m_sigframe/sigframe-x86-darwin.c \
@@ -298,8 +304,8 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCO
 	m_syswrap/syscall-x86-linux.S m_syswrap/syscall-amd64-linux.S \
 	m_syswrap/syscall-ppc32-linux.S \
 	m_syswrap/syscall-ppc64-linux.S m_syswrap/syscall-arm-linux.S \
-	m_syswrap/syscall-ppc32-aix5.S m_syswrap/syscall-ppc64-aix5.S \
-	m_syswrap/syscall-x86-darwin.S \
+	m_syswrap/syscall-s390x-linux.S m_syswrap/syscall-ppc32-aix5.S \
+	m_syswrap/syscall-ppc64-aix5.S m_syswrap/syscall-x86-darwin.S \
 	m_syswrap/syscall-amd64-darwin.S m_syswrap/syswrap-main.c \
 	m_syswrap/syswrap-generic.c m_syswrap/syswrap-linux.c \
 	m_syswrap/syswrap-linux-variants.c m_syswrap/syswrap-aix5.c \
@@ -307,8 +313,8 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCO
 	m_syswrap/syswrap-amd64-linux.c \
 	m_syswrap/syswrap-ppc32-linux.c \
 	m_syswrap/syswrap-ppc64-linux.c m_syswrap/syswrap-arm-linux.c \
-	m_syswrap/syswrap-ppc32-aix5.c m_syswrap/syswrap-ppc64-aix5.c \
-	m_syswrap/syswrap-x86-darwin.c \
+	m_syswrap/syswrap-s390x-linux.c m_syswrap/syswrap-ppc32-aix5.c \
+	m_syswrap/syswrap-ppc64-aix5.c m_syswrap/syswrap-x86-darwin.c \
 	m_syswrap/syswrap-amd64-darwin.c m_ume/elf.c m_ume/macho.c \
 	m_ume/main.c m_ume/script.c
 am__objects_5 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_commandline.$(OBJEXT) \
@@ -375,6 +381,7 @@ am__objects_5 = libcoregrind_@VGCONF_ARC
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT) \
@@ -395,6 +402,7 @@ am__objects_5 = libcoregrind_@VGCONF_ARC
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT) \
@@ -404,6 +412,7 @@ am__objects_5 = libcoregrind_@VGCONF_ARC
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT) \
@@ -419,6 +428,7 @@ am__objects_5 = libcoregrind_@VGCONF_ARC
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc64-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-arm-linux.$(OBJEXT) \
+	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc64-aix5.$(OBJEXT) \
 	libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT) \
@@ -769,6 +779,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -795,6 +810,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 EXTRA_DIST = \
 	m_debuginfo/UNUSED_STABS.txt \
 	m_debuginfo/README.txt
@@ -1014,7 +1030,8 @@ COREGRIND_SOURCES_COMMON = \
 	m_dispatch/dispatch-amd64-linux.S \
 	m_dispatch/dispatch-ppc32-linux.S \
 	m_dispatch/dispatch-ppc64-linux.S \
-	m_dispatch/dispatch-arm-linux.S \
+ 	m_dispatch/dispatch-arm-linux.S \
+	m_dispatch/dispatch-s390x-linux.S \
 	m_dispatch/dispatch-ppc32-aix5.S \
 	m_dispatch/dispatch-ppc64-aix5.S \
 	m_dispatch/dispatch-x86-darwin.S \
@@ -1034,7 +1051,8 @@ COREGRIND_SOURCES_COMMON = \
 	m_sigframe/sigframe-amd64-linux.c \
 	m_sigframe/sigframe-ppc32-linux.c \
 	m_sigframe/sigframe-ppc64-linux.c \
-	m_sigframe/sigframe-arm-linux.c \
+ 	m_sigframe/sigframe-arm-linux.c \
+	m_sigframe/sigframe-s390x-linux.c \
 	m_sigframe/sigframe-ppc32-aix5.c \
 	m_sigframe/sigframe-ppc64-aix5.c \
 	m_sigframe/sigframe-x86-darwin.c \
@@ -1043,7 +1061,8 @@ COREGRIND_SOURCES_COMMON = \
 	m_syswrap/syscall-amd64-linux.S \
 	m_syswrap/syscall-ppc32-linux.S \
 	m_syswrap/syscall-ppc64-linux.S \
-	m_syswrap/syscall-arm-linux.S \
+ 	m_syswrap/syscall-arm-linux.S \
+	m_syswrap/syscall-s390x-linux.S \
 	m_syswrap/syscall-ppc32-aix5.S \
 	m_syswrap/syscall-ppc64-aix5.S \
 	m_syswrap/syscall-x86-darwin.S \
@@ -1058,7 +1077,8 @@ COREGRIND_SOURCES_COMMON = \
 	m_syswrap/syswrap-amd64-linux.c \
 	m_syswrap/syswrap-ppc32-linux.c \
 	m_syswrap/syswrap-ppc64-linux.c \
-	m_syswrap/syswrap-arm-linux.c \
+ 	m_syswrap/syswrap-arm-linux.c \
+	m_syswrap/syswrap-s390x-linux.c \
 	m_syswrap/syswrap-ppc32-aix5.c \
 	m_syswrap/syswrap-ppc64-aix5.c \
 	m_syswrap/syswrap-x86-darwin.c \
@@ -1309,6 +1329,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dyn-string.Po@am__quote@
@@ -1380,6 +1401,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-storage.Po@am__quote@
@@ -1390,6 +1412,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-aix5.Po@am__quote@
@@ -1405,6 +1428,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-taskUser.Po@am__quote@
@@ -1429,6 +1453,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dyn-string.Po@am__quote@
@@ -1500,6 +1525,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-storage.Po@am__quote@
@@ -1510,6 +1536,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-aix5.Po@am__quote@
@@ -1525,6 +1552,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc64-aix5.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc64-linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-taskUser.Po@am__quote@
@@ -1654,6 +1682,20 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_O
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.obj `if test -f 'm_dispatch/dispatch-arm-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-arm-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-arm-linux.S'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o: m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o `test -f 'm_dispatch/dispatch-s390x-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_dispatch/dispatch-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.o `test -f 'm_dispatch/dispatch-s390x-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-s390x-linux.S
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj: m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj `if test -f 'm_dispatch/dispatch-s390x-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-s390x-linux.S'; fi`
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_dispatch/dispatch-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-s390x-linux.obj `if test -f 'm_dispatch/dispatch-s390x-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-s390x-linux.S'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o: m_dispatch/dispatch-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o `test -f 'm_dispatch/dispatch-ppc32-aix5.S' || echo '$(srcdir)/'`m_dispatch/dispatch-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Po
@@ -1808,6 +1850,20 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_O
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.obj `if test -f 'm_syswrap/syscall-arm-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-arm-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-arm-linux.S'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o: m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o `test -f 'm_syswrap/syscall-s390x-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_syswrap/syscall-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.o `test -f 'm_syswrap/syscall-s390x-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-s390x-linux.S
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj: m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj `if test -f 'm_syswrap/syscall-s390x-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-s390x-linux.S'; fi`
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_syswrap/syscall-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-s390x-linux.obj `if test -f 'm_syswrap/syscall-s390x-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-s390x-linux.S'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.o: m_syswrap/syscall-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.o `test -f 'm_syswrap/syscall-ppc32-aix5.S' || echo '$(srcdir)/'`m_syswrap/syscall-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-ppc32-aix5.Po
@@ -1962,6 +2018,20 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_O
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.obj `if test -f 'm_dispatch/dispatch-arm-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-arm-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-arm-linux.S'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o: m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o `test -f 'm_dispatch/dispatch-s390x-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_dispatch/dispatch-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.o `test -f 'm_dispatch/dispatch-s390x-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-s390x-linux.S
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj: m_dispatch/dispatch-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj `if test -f 'm_dispatch/dispatch-s390x-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-s390x-linux.S'; fi`
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_dispatch/dispatch-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-s390x-linux.obj `if test -f 'm_dispatch/dispatch-s390x-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-s390x-linux.S'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o: m_dispatch/dispatch-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.o `test -f 'm_dispatch/dispatch-ppc32-aix5.S' || echo '$(srcdir)/'`m_dispatch/dispatch-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-ppc32-aix5.Po
@@ -2116,6 +2186,20 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_O
 @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.obj `if test -f 'm_syswrap/syscall-arm-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-arm-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-arm-linux.S'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o: m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o `test -f 'm_syswrap/syscall-s390x-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_syswrap/syscall-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.o `test -f 'm_syswrap/syscall-s390x-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-s390x-linux.S
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj: m_syswrap/syscall-s390x-linux.S
+@am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj `if test -f 'm_syswrap/syscall-s390x-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-s390x-linux.S'; fi`
+@am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='m_syswrap/syscall-s390x-linux.S' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-s390x-linux.obj `if test -f 'm_syswrap/syscall-s390x-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-s390x-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-s390x-linux.S'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.o: m_syswrap/syscall-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.o `test -f 'm_syswrap/syscall-ppc32-aix5.S' || echo '$(srcdir)/'`m_syswrap/syscall-ppc32-aix5.S
 @am__fastdepCCAS_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-ppc32-aix5.Po
@@ -3180,6 +3264,20 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_O
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.obj `if test -f 'm_sigframe/sigframe-arm-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-arm-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-arm-linux.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o: m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o `test -f 'm_sigframe/sigframe-s390x-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_sigframe/sigframe-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.o `test -f 'm_sigframe/sigframe-s390x-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-s390x-linux.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj: m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj `if test -f 'm_sigframe/sigframe-s390x-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-s390x-linux.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_sigframe/sigframe-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-s390x-linux.obj `if test -f 'm_sigframe/sigframe-s390x-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-s390x-linux.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o: m_sigframe/sigframe-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o `test -f 'm_sigframe/sigframe-ppc32-aix5.c' || echo '$(srcdir)/'`m_sigframe/sigframe-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Po
@@ -3390,6 +3488,20 @@ libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_O
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-arm-linux.obj `if test -f 'm_syswrap/syswrap-arm-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-arm-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-arm-linux.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o: m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o `test -f 'm_syswrap/syswrap-s390x-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_syswrap/syswrap-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.o `test -f 'm_syswrap/syswrap-s390x-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-s390x-linux.c
+
+libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj: m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj `if test -f 'm_syswrap/syswrap-s390x-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-s390x-linux.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_syswrap/syswrap-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-s390x-linux.obj `if test -f 'm_syswrap/syswrap-s390x-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-s390x-linux.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o: m_syswrap/syswrap-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o `test -f 'm_syswrap/syswrap-ppc32-aix5.c' || echo '$(srcdir)/'`m_syswrap/syswrap-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Po
@@ -4552,6 +4664,20 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_O
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.obj `if test -f 'm_sigframe/sigframe-arm-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-arm-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-arm-linux.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o: m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o `test -f 'm_sigframe/sigframe-s390x-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_sigframe/sigframe-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.o `test -f 'm_sigframe/sigframe-s390x-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-s390x-linux.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj: m_sigframe/sigframe-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj `if test -f 'm_sigframe/sigframe-s390x-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-s390x-linux.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_sigframe/sigframe-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-s390x-linux.obj `if test -f 'm_sigframe/sigframe-s390x-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-s390x-linux.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o: m_sigframe/sigframe-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.o `test -f 'm_sigframe/sigframe-ppc32-aix5.c' || echo '$(srcdir)/'`m_sigframe/sigframe-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-ppc32-aix5.Po
@@ -4762,6 +4888,20 @@ libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_O
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-arm-linux.obj `if test -f 'm_syswrap/syswrap-arm-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-arm-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-arm-linux.c'; fi`
 
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o: m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o `test -f 'm_syswrap/syswrap-s390x-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_syswrap/syswrap-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.o `test -f 'm_syswrap/syswrap-s390x-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-s390x-linux.c
+
+libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj: m_syswrap/syswrap-s390x-linux.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj `if test -f 'm_syswrap/syswrap-s390x-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-s390x-linux.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='m_syswrap/syswrap-s390x-linux.c' object='libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-s390x-linux.obj `if test -f 'm_syswrap/syswrap-s390x-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-s390x-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-s390x-linux.c'; fi`
+
 libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o: m_syswrap/syswrap-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o -MD -MP -MF $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Tpo -c -o libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.o `test -f 'm_syswrap/syswrap-ppc32-aix5.c' || echo '$(srcdir)/'`m_syswrap/syswrap-ppc32-aix5.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Tpo $(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-ppc32-aix5.Po
--- valgrind/auxprogs/Makefile.in	2010-10-21 03:16:10.000000000 +0200
+++ valgrind/auxprogs/Makefile.in	2010-11-11 16:11:53.604579588 +0100
@@ -314,6 +314,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -340,6 +345,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 dist_noinst_SCRIPTS = \
 	gen-mdg \
 	gsl16test \
--- valgrind/memcheck/perf/Makefile.in	2010-10-21 03:16:15.000000000 +0200
+++ valgrind/memcheck/perf/Makefile.in	2010-11-11 16:11:57.457704299 +0100
@@ -308,6 +308,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -334,6 +339,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/memcheck/Makefile.in	2010-10-21 03:16:15.000000000 +0200
+++ valgrind/memcheck/Makefile.in	2010-11-11 16:11:57.391705111 +0100
@@ -428,6 +428,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -454,6 +459,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -502,6 +508,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -553,6 +562,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -590,6 +602,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = docs/mc-manual.xml docs/mc-tech-docs.xml
 
 #----------------------------------------------------------------------------
--- valgrind/memcheck/tests/x86/Makefile.in	2010-10-21 03:16:16.000000000 +0200
+++ valgrind/memcheck/tests/x86/Makefile.in	2010-11-11 16:11:58.355704279 +0100
@@ -357,6 +357,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -383,6 +388,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/memcheck/tests/amd64/Makefile.in	2010-10-21 03:16:15.000000000 +0200
+++ valgrind/memcheck/tests/amd64/Makefile.in	2010-11-11 16:11:57.895704272 +0100
@@ -331,6 +331,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -357,6 +362,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/memcheck/tests/x86-linux/Makefile.in	2010-10-21 03:16:16.000000000 +0200
+++ valgrind/memcheck/tests/x86-linux/Makefile.in	2010-11-11 16:11:58.263704389 +0100
@@ -335,6 +335,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -361,6 +366,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/memcheck/tests/ppc32/Makefile.in	2010-10-21 03:16:16.000000000 +0200
+++ valgrind/memcheck/tests/ppc32/Makefile.in	2010-11-11 16:11:58.117704463 +0100
@@ -312,6 +312,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -338,6 +343,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/memcheck/tests/linux/Makefile.in	2010-10-21 03:16:16.000000000 +0200
+++ valgrind/memcheck/tests/linux/Makefile.in	2010-11-11 16:11:58.045704326 +0100
@@ -335,6 +335,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -361,6 +366,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/memcheck/tests/amd64-linux/Makefile.in	2010-10-21 03:16:15.000000000 +0200
+++ valgrind/memcheck/tests/amd64-linux/Makefile.in	2010-11-11 16:11:57.818704287 +0100
@@ -315,6 +315,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -341,6 +346,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/memcheck/tests/ppc64/Makefile.in	2010-10-21 03:16:16.000000000 +0200
+++ valgrind/memcheck/tests/ppc64/Makefile.in	2010-11-11 16:11:58.188704231 +0100
@@ -312,6 +312,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -338,6 +343,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/memcheck/tests/darwin/Makefile.in	2010-10-21 03:16:15.000000000 +0200
+++ valgrind/memcheck/tests/darwin/Makefile.in	2010-11-11 16:11:57.970704278 +0100
@@ -335,6 +335,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -361,6 +366,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/memcheck/tests/Makefile.in	2010-10-21 03:16:15.000000000 +0200
+++ valgrind/memcheck/tests/Makefile.in	2010-11-11 16:11:57.742704318 +0100
@@ -865,6 +865,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -891,6 +896,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
@@ -1090,8 +1096,9 @@ origin4_many_CFLAGS = $(AM_CFLAGS) -O
 origin5_bz2_CFLAGS = $(AM_CFLAGS) -O -Wno-inline
 origin6_fp_CFLAGS = $(AM_CFLAGS) -O
 
-# Don't allow GCC to inline memcpy(), because then we can't intercept it
-overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy
+# Don't allow GCC to inline memcpy() and strcpy(),
+# because then we can't intercept it
+overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy -fno-builtin-strcpy
 str_tester_CFLAGS = $(AM_CFLAGS) -Wno-shadow
 supp_unknown_SOURCES = badjump.c
 supp1_SOURCES = supp.c
--- valgrind/exp-dhat/Makefile.in	2010-10-21 03:16:13.000000000 +0200
+++ valgrind/exp-dhat/Makefile.in	2010-11-11 16:11:56.254704329 +0100
@@ -385,6 +385,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -411,6 +416,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -459,6 +465,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -510,6 +519,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -547,6 +559,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 
 #SUBDIRS += perf
 EXTRA_DIST = docs/dh-manual.xml
--- valgrind/include/Makefile.in	2010-10-21 03:16:14.000000000 +0200
+++ valgrind/include/Makefile.in	2010-11-11 16:11:56.861704269 +0100
@@ -256,17 +256,20 @@ nobase_pkginclude_HEADERS = \
 	vki/vki-posixtypes-ppc32-linux.h \
 	vki/vki-posixtypes-ppc64-linux.h \
 	vki/vki-posixtypes-x86-linux.h	 \
-	vki/vki-posixtypes-arm-linux.h	 \
+ 	vki/vki-posixtypes-arm-linux.h	 \
+	vki/vki-posixtypes-s390x-linux.h \
 	vki/vki-amd64-linux.h		\
 	vki/vki-ppc32-linux.h		\
 	vki/vki-ppc64-linux.h		\
 	vki/vki-x86-linux.h		\
-	vki/vki-arm-linux.h		\
+ 	vki/vki-arm-linux.h		\
+	vki/vki-s390x-linux.h		\
 	vki/vki-scnums-amd64-linux.h	\
 	vki/vki-scnums-ppc32-linux.h	\
 	vki/vki-scnums-ppc64-linux.h	\
 	vki/vki-scnums-x86-linux.h	\
-	vki/vki-scnums-arm-linux.h	\
+ 	vki/vki-scnums-arm-linux.h	\
+	vki/vki-scnums-s390x-linux.h	\
 	vki/vki-scnums-darwin.h
 
 noinst_HEADERS = \
--- valgrind/Makefile.vex.in	2010-10-21 03:16:10.000000000 +0200
+++ valgrind/Makefile.vex.in	2010-11-11 16:11:53.532580350 +0100
@@ -101,6 +101,12 @@ am__objects_1 =  \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_ppc_toIR.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_helpers.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.$(OBJEXT) \
@@ -112,7 +118,15 @@ am__objects_1 =  \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_ppc_defs.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_ppc_isel.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_arm_defs.$(OBJEXT) \
-	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_arm_isel.$(OBJEXT)
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_arm_isel.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.$(OBJEXT)
 am_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS = $(am__objects_1)
 libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS =  \
 	$(am_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS)
@@ -126,12 +140,19 @@ am__libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@
 	priv/guest_amd64_helpers.c priv/guest_amd64_toIR.c \
 	priv/guest_ppc_helpers.c priv/guest_ppc_toIR.c \
 	priv/guest_arm_helpers.c priv/guest_arm_toIR.c \
+	priv/guest_s390_helpers.c priv/guest_s390_spechelper.c \
+	priv/guest_s390_toIR.c priv/guest_s390_cc.c \
+	priv/guest_s390_decoder.c priv/guest_s390_irgen.c \
 	priv/host_generic_regs.c priv/host_generic_simd64.c \
 	priv/host_generic_simd128.c priv/host_generic_reg_alloc2.c \
 	priv/host_x86_defs.c priv/host_x86_isel.c \
 	priv/host_amd64_defs.c priv/host_amd64_isel.c \
 	priv/host_ppc_defs.c priv/host_ppc_isel.c priv/host_arm_defs.c \
-	priv/host_arm_isel.c
+	priv/host_arm_isel.c priv/host_s390_defs.c \
+	priv/host_s390_isel.c priv/host_s390_amode.c \
+	priv/host_s390_disasm.c priv/host_s390_emit.c \
+	priv/host_s390_hreg.c priv/host_s390_insn.c \
+	priv/host_s390_wrapper.c
 am__objects_2 =  \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_main.$(OBJEXT) \
@@ -149,6 +170,12 @@ am__objects_2 =  \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_ppc_toIR.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_helpers.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.$(OBJEXT) \
@@ -160,7 +187,15 @@ am__objects_2 =  \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_ppc_defs.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_ppc_isel.$(OBJEXT) \
 	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_defs.$(OBJEXT) \
-	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_isel.$(OBJEXT)
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_isel.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.$(OBJEXT) \
+	libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.$(OBJEXT)
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS =  \
 @VGCONF_HAVE_PLATFORM_SEC_TRUE@	$(am__objects_2)
 libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS =  \
@@ -418,6 +453,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -444,6 +484,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # Headers, etc
@@ -466,6 +507,7 @@ pkginclude_HEADERS = \
 	pub/libvex_guest_ppc32.h \
 	pub/libvex_guest_ppc64.h \
 	pub/libvex_guest_arm.h \
+	pub/libvex_guest_s390x.h \
 	pub/libvex_ir.h \
 	pub/libvex_trc_values.h
 
@@ -480,13 +522,23 @@ noinst_HEADERS = \
 	priv/guest_amd64_defs.h \
 	priv/guest_ppc_defs.h \
 	priv/guest_arm_defs.h \
+	priv/guest_s390_defs.h \
+	priv/guest_s390_cc.h \
+	priv/guest_s390_priv.h \
 	priv/host_generic_regs.h \
 	priv/host_generic_simd64.h \
 	priv/host_generic_simd128.h \
 	priv/host_x86_defs.h \
 	priv/host_amd64_defs.h \
 	priv/host_ppc_defs.h \
-	priv/host_arm_defs.h
+	priv/host_arm_defs.h \
+	priv/host_s390_defs.h \
+	priv/host_s390_amode.h \
+	priv/host_s390_disasm.h \
+	priv/host_s390_emit.h \
+	priv/host_s390_hreg.h \
+	priv/host_s390_insn.h \
+	priv/host_s390_isel.h
 
 BUILT_SOURCES = pub/libvex_guest_offsets.h
 CLEANFILES = pub/libvex_guest_offsets.h
@@ -513,6 +565,12 @@ LIBVEX_SOURCES_COMMON = \
 	priv/guest_ppc_toIR.c \
 	priv/guest_arm_helpers.c \
 	priv/guest_arm_toIR.c \
+	priv/guest_s390_helpers.c \
+	priv/guest_s390_spechelper.c \
+	priv/guest_s390_toIR.c \
+	priv/guest_s390_cc.c \
+	priv/guest_s390_decoder.c \
+	priv/guest_s390_irgen.c \
 	priv/host_generic_regs.c \
 	priv/host_generic_simd64.c \
 	priv/host_generic_simd128.c \
@@ -524,7 +582,15 @@ LIBVEX_SOURCES_COMMON = \
 	priv/host_ppc_defs.c \
 	priv/host_ppc_isel.c \
 	priv/host_arm_defs.c \
-	priv/host_arm_isel.c
+	priv/host_arm_isel.c \
+	priv/host_s390_defs.c \
+	priv/host_s390_isel.c \
+	priv/host_s390_amode.c \
+	priv/host_s390_disasm.c \
+	priv/host_s390_emit.c \
+	priv/host_s390_hreg.c \
+	priv/host_s390_insn.c \
+	priv/host_s390_wrapper.c
 
 LIBVEX_CFLAGS = \
 	-Wbad-function-cast \
@@ -636,6 +702,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_ppc_helpers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_ppc_toIR.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_x86_helpers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_x86_toIR.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_amd64_defs.Po@am__quote@
@@ -648,6 +720,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_ppc_defs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_ppc_isel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_x86_defs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_x86_isel.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-ir_defs.Po@am__quote@
@@ -664,6 +744,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_ppc_helpers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_ppc_toIR.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_x86_helpers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_x86_toIR.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_amd64_defs.Po@am__quote@
@@ -676,6 +762,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_ppc_defs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_ppc_isel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_x86_defs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_x86_isel.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-ir_defs.Po@am__quote@
@@ -923,6 +1017,90 @@ libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-g
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.obj `if test -f 'priv/guest_arm_toIR.c'; then $(CYGPATH_W) 'priv/guest_arm_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_arm_toIR.c'; fi`
 
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o: priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o `test -f 'priv/guest_s390_helpers.c' || echo '$(srcdir)/'`priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_helpers.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.o `test -f 'priv/guest_s390_helpers.c' || echo '$(srcdir)/'`priv/guest_s390_helpers.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj: priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj `if test -f 'priv/guest_s390_helpers.c'; then $(CYGPATH_W) 'priv/guest_s390_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_helpers.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_helpers.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_helpers.obj `if test -f 'priv/guest_s390_helpers.c'; then $(CYGPATH_W) 'priv/guest_s390_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_helpers.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.o: priv/guest_s390_spechelper.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.o `test -f 'priv/guest_s390_spechelper.c' || echo '$(srcdir)/'`priv/guest_s390_spechelper.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_spechelper.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.o `test -f 'priv/guest_s390_spechelper.c' || echo '$(srcdir)/'`priv/guest_s390_spechelper.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.obj: priv/guest_s390_spechelper.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.obj `if test -f 'priv/guest_s390_spechelper.c'; then $(CYGPATH_W) 'priv/guest_s390_spechelper.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_spechelper.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_spechelper.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_spechelper.obj `if test -f 'priv/guest_s390_spechelper.c'; then $(CYGPATH_W) 'priv/guest_s390_spechelper.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_spechelper.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o: priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o `test -f 'priv/guest_s390_toIR.c' || echo '$(srcdir)/'`priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_toIR.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.o `test -f 'priv/guest_s390_toIR.c' || echo '$(srcdir)/'`priv/guest_s390_toIR.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj: priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj `if test -f 'priv/guest_s390_toIR.c'; then $(CYGPATH_W) 'priv/guest_s390_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_toIR.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_toIR.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_toIR.obj `if test -f 'priv/guest_s390_toIR.c'; then $(CYGPATH_W) 'priv/guest_s390_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_toIR.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.o: priv/guest_s390_cc.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.o `test -f 'priv/guest_s390_cc.c' || echo '$(srcdir)/'`priv/guest_s390_cc.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_cc.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.o `test -f 'priv/guest_s390_cc.c' || echo '$(srcdir)/'`priv/guest_s390_cc.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.obj: priv/guest_s390_cc.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.obj `if test -f 'priv/guest_s390_cc.c'; then $(CYGPATH_W) 'priv/guest_s390_cc.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_cc.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_cc.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_cc.obj `if test -f 'priv/guest_s390_cc.c'; then $(CYGPATH_W) 'priv/guest_s390_cc.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_cc.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.o: priv/guest_s390_decoder.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.o `test -f 'priv/guest_s390_decoder.c' || echo '$(srcdir)/'`priv/guest_s390_decoder.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_decoder.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.o `test -f 'priv/guest_s390_decoder.c' || echo '$(srcdir)/'`priv/guest_s390_decoder.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.obj: priv/guest_s390_decoder.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.obj `if test -f 'priv/guest_s390_decoder.c'; then $(CYGPATH_W) 'priv/guest_s390_decoder.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_decoder.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_decoder.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_decoder.obj `if test -f 'priv/guest_s390_decoder.c'; then $(CYGPATH_W) 'priv/guest_s390_decoder.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_decoder.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.o: priv/guest_s390_irgen.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.o `test -f 'priv/guest_s390_irgen.c' || echo '$(srcdir)/'`priv/guest_s390_irgen.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_irgen.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.o `test -f 'priv/guest_s390_irgen.c' || echo '$(srcdir)/'`priv/guest_s390_irgen.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.obj: priv/guest_s390_irgen.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.obj `if test -f 'priv/guest_s390_irgen.c'; then $(CYGPATH_W) 'priv/guest_s390_irgen.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_irgen.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_irgen.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_s390_irgen.obj `if test -f 'priv/guest_s390_irgen.c'; then $(CYGPATH_W) 'priv/guest_s390_irgen.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_irgen.c'; fi`
+
 libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o: priv/host_generic_regs.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o `test -f 'priv/host_generic_regs.c' || echo '$(srcdir)/'`priv/host_generic_regs.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Po
@@ -1091,6 +1269,118 @@ libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-h
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_arm_isel.obj `if test -f 'priv/host_arm_isel.c'; then $(CYGPATH_W) 'priv/host_arm_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_arm_isel.c'; fi`
 
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o: priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o `test -f 'priv/host_s390_defs.c' || echo '$(srcdir)/'`priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_defs.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.o `test -f 'priv/host_s390_defs.c' || echo '$(srcdir)/'`priv/host_s390_defs.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj: priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj `if test -f 'priv/host_s390_defs.c'; then $(CYGPATH_W) 'priv/host_s390_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_defs.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_defs.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_defs.obj `if test -f 'priv/host_s390_defs.c'; then $(CYGPATH_W) 'priv/host_s390_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_defs.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o: priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o `test -f 'priv/host_s390_isel.c' || echo '$(srcdir)/'`priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_isel.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.o `test -f 'priv/host_s390_isel.c' || echo '$(srcdir)/'`priv/host_s390_isel.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj: priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj `if test -f 'priv/host_s390_isel.c'; then $(CYGPATH_W) 'priv/host_s390_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_isel.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_isel.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_isel.obj `if test -f 'priv/host_s390_isel.c'; then $(CYGPATH_W) 'priv/host_s390_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_isel.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.o: priv/host_s390_amode.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.o `test -f 'priv/host_s390_amode.c' || echo '$(srcdir)/'`priv/host_s390_amode.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_amode.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.o `test -f 'priv/host_s390_amode.c' || echo '$(srcdir)/'`priv/host_s390_amode.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.obj: priv/host_s390_amode.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.obj `if test -f 'priv/host_s390_amode.c'; then $(CYGPATH_W) 'priv/host_s390_amode.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_amode.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_amode.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_amode.obj `if test -f 'priv/host_s390_amode.c'; then $(CYGPATH_W) 'priv/host_s390_amode.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_amode.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o: priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o `test -f 'priv/host_s390_disasm.c' || echo '$(srcdir)/'`priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_disasm.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.o `test -f 'priv/host_s390_disasm.c' || echo '$(srcdir)/'`priv/host_s390_disasm.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj: priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj `if test -f 'priv/host_s390_disasm.c'; then $(CYGPATH_W) 'priv/host_s390_disasm.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_disasm.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_disasm.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_disasm.obj `if test -f 'priv/host_s390_disasm.c'; then $(CYGPATH_W) 'priv/host_s390_disasm.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_disasm.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.o: priv/host_s390_emit.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.o `test -f 'priv/host_s390_emit.c' || echo '$(srcdir)/'`priv/host_s390_emit.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_emit.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.o `test -f 'priv/host_s390_emit.c' || echo '$(srcdir)/'`priv/host_s390_emit.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.obj: priv/host_s390_emit.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.obj `if test -f 'priv/host_s390_emit.c'; then $(CYGPATH_W) 'priv/host_s390_emit.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_emit.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_emit.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_emit.obj `if test -f 'priv/host_s390_emit.c'; then $(CYGPATH_W) 'priv/host_s390_emit.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_emit.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.o: priv/host_s390_hreg.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.o `test -f 'priv/host_s390_hreg.c' || echo '$(srcdir)/'`priv/host_s390_hreg.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_hreg.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.o `test -f 'priv/host_s390_hreg.c' || echo '$(srcdir)/'`priv/host_s390_hreg.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.obj: priv/host_s390_hreg.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.obj `if test -f 'priv/host_s390_hreg.c'; then $(CYGPATH_W) 'priv/host_s390_hreg.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_hreg.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_hreg.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_hreg.obj `if test -f 'priv/host_s390_hreg.c'; then $(CYGPATH_W) 'priv/host_s390_hreg.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_hreg.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.o: priv/host_s390_insn.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.o `test -f 'priv/host_s390_insn.c' || echo '$(srcdir)/'`priv/host_s390_insn.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_insn.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.o `test -f 'priv/host_s390_insn.c' || echo '$(srcdir)/'`priv/host_s390_insn.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.obj: priv/host_s390_insn.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.obj `if test -f 'priv/host_s390_insn.c'; then $(CYGPATH_W) 'priv/host_s390_insn.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_insn.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_insn.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_insn.obj `if test -f 'priv/host_s390_insn.c'; then $(CYGPATH_W) 'priv/host_s390_insn.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_insn.c'; fi`
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.o: priv/host_s390_wrapper.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.o `test -f 'priv/host_s390_wrapper.c' || echo '$(srcdir)/'`priv/host_s390_wrapper.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_wrapper.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.o `test -f 'priv/host_s390_wrapper.c' || echo '$(srcdir)/'`priv/host_s390_wrapper.c
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.obj: priv/host_s390_wrapper.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.Tpo -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.obj `if test -f 'priv/host_s390_wrapper.c'; then $(CYGPATH_W) 'priv/host_s390_wrapper.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_wrapper.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_wrapper.c' object='libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_s390_wrapper.obj `if test -f 'priv/host_s390_wrapper.c'; then $(CYGPATH_W) 'priv/host_s390_wrapper.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_wrapper.c'; fi`
+
 libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o: priv/main_globals.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o `test -f 'priv/main_globals.c' || echo '$(srcdir)/'`priv/main_globals.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Po
@@ -1315,6 +1605,90 @@ libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-g
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.obj `if test -f 'priv/guest_arm_toIR.c'; then $(CYGPATH_W) 'priv/guest_arm_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_arm_toIR.c'; fi`
 
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o: priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o `test -f 'priv/guest_s390_helpers.c' || echo '$(srcdir)/'`priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_helpers.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.o `test -f 'priv/guest_s390_helpers.c' || echo '$(srcdir)/'`priv/guest_s390_helpers.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj: priv/guest_s390_helpers.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj `if test -f 'priv/guest_s390_helpers.c'; then $(CYGPATH_W) 'priv/guest_s390_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_helpers.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_helpers.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_helpers.obj `if test -f 'priv/guest_s390_helpers.c'; then $(CYGPATH_W) 'priv/guest_s390_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_helpers.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.o: priv/guest_s390_spechelper.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.o `test -f 'priv/guest_s390_spechelper.c' || echo '$(srcdir)/'`priv/guest_s390_spechelper.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_spechelper.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.o `test -f 'priv/guest_s390_spechelper.c' || echo '$(srcdir)/'`priv/guest_s390_spechelper.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.obj: priv/guest_s390_spechelper.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.obj `if test -f 'priv/guest_s390_spechelper.c'; then $(CYGPATH_W) 'priv/guest_s390_spechelper.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_spechelper.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_spechelper.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_spechelper.obj `if test -f 'priv/guest_s390_spechelper.c'; then $(CYGPATH_W) 'priv/guest_s390_spechelper.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_spechelper.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o: priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o `test -f 'priv/guest_s390_toIR.c' || echo '$(srcdir)/'`priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_toIR.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.o `test -f 'priv/guest_s390_toIR.c' || echo '$(srcdir)/'`priv/guest_s390_toIR.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj: priv/guest_s390_toIR.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj `if test -f 'priv/guest_s390_toIR.c'; then $(CYGPATH_W) 'priv/guest_s390_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_toIR.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_toIR.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_toIR.obj `if test -f 'priv/guest_s390_toIR.c'; then $(CYGPATH_W) 'priv/guest_s390_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_toIR.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.o: priv/guest_s390_cc.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.o `test -f 'priv/guest_s390_cc.c' || echo '$(srcdir)/'`priv/guest_s390_cc.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_cc.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.o `test -f 'priv/guest_s390_cc.c' || echo '$(srcdir)/'`priv/guest_s390_cc.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.obj: priv/guest_s390_cc.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.obj `if test -f 'priv/guest_s390_cc.c'; then $(CYGPATH_W) 'priv/guest_s390_cc.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_cc.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_cc.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_cc.obj `if test -f 'priv/guest_s390_cc.c'; then $(CYGPATH_W) 'priv/guest_s390_cc.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_cc.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.o: priv/guest_s390_decoder.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.o `test -f 'priv/guest_s390_decoder.c' || echo '$(srcdir)/'`priv/guest_s390_decoder.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_decoder.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.o `test -f 'priv/guest_s390_decoder.c' || echo '$(srcdir)/'`priv/guest_s390_decoder.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.obj: priv/guest_s390_decoder.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.obj `if test -f 'priv/guest_s390_decoder.c'; then $(CYGPATH_W) 'priv/guest_s390_decoder.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_decoder.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_decoder.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_decoder.obj `if test -f 'priv/guest_s390_decoder.c'; then $(CYGPATH_W) 'priv/guest_s390_decoder.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_decoder.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.o: priv/guest_s390_irgen.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.o `test -f 'priv/guest_s390_irgen.c' || echo '$(srcdir)/'`priv/guest_s390_irgen.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_irgen.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.o `test -f 'priv/guest_s390_irgen.c' || echo '$(srcdir)/'`priv/guest_s390_irgen.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.obj: priv/guest_s390_irgen.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.obj `if test -f 'priv/guest_s390_irgen.c'; then $(CYGPATH_W) 'priv/guest_s390_irgen.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_irgen.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/guest_s390_irgen.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_s390_irgen.obj `if test -f 'priv/guest_s390_irgen.c'; then $(CYGPATH_W) 'priv/guest_s390_irgen.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_s390_irgen.c'; fi`
+
 libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o: priv/host_generic_regs.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o `test -f 'priv/host_generic_regs.c' || echo '$(srcdir)/'`priv/host_generic_regs.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Po
@@ -1482,6 +1856,118 @@ libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-h
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_arm_isel.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_isel.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_arm_isel.obj `if test -f 'priv/host_arm_isel.c'; then $(CYGPATH_W) 'priv/host_arm_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_arm_isel.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o: priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o `test -f 'priv/host_s390_defs.c' || echo '$(srcdir)/'`priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_defs.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.o `test -f 'priv/host_s390_defs.c' || echo '$(srcdir)/'`priv/host_s390_defs.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj: priv/host_s390_defs.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj `if test -f 'priv/host_s390_defs.c'; then $(CYGPATH_W) 'priv/host_s390_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_defs.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_defs.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_defs.obj `if test -f 'priv/host_s390_defs.c'; then $(CYGPATH_W) 'priv/host_s390_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_defs.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o: priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o `test -f 'priv/host_s390_isel.c' || echo '$(srcdir)/'`priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_isel.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.o `test -f 'priv/host_s390_isel.c' || echo '$(srcdir)/'`priv/host_s390_isel.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj: priv/host_s390_isel.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj `if test -f 'priv/host_s390_isel.c'; then $(CYGPATH_W) 'priv/host_s390_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_isel.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_isel.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_isel.obj `if test -f 'priv/host_s390_isel.c'; then $(CYGPATH_W) 'priv/host_s390_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_isel.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.o: priv/host_s390_amode.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.o `test -f 'priv/host_s390_amode.c' || echo '$(srcdir)/'`priv/host_s390_amode.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_amode.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.o `test -f 'priv/host_s390_amode.c' || echo '$(srcdir)/'`priv/host_s390_amode.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.obj: priv/host_s390_amode.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.obj `if test -f 'priv/host_s390_amode.c'; then $(CYGPATH_W) 'priv/host_s390_amode.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_amode.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_amode.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_amode.obj `if test -f 'priv/host_s390_amode.c'; then $(CYGPATH_W) 'priv/host_s390_amode.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_amode.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o: priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o `test -f 'priv/host_s390_disasm.c' || echo '$(srcdir)/'`priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_disasm.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.o `test -f 'priv/host_s390_disasm.c' || echo '$(srcdir)/'`priv/host_s390_disasm.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj: priv/host_s390_disasm.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj `if test -f 'priv/host_s390_disasm.c'; then $(CYGPATH_W) 'priv/host_s390_disasm.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_disasm.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_disasm.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_disasm.obj `if test -f 'priv/host_s390_disasm.c'; then $(CYGPATH_W) 'priv/host_s390_disasm.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_disasm.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.o: priv/host_s390_emit.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.o `test -f 'priv/host_s390_emit.c' || echo '$(srcdir)/'`priv/host_s390_emit.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_emit.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.o `test -f 'priv/host_s390_emit.c' || echo '$(srcdir)/'`priv/host_s390_emit.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.obj: priv/host_s390_emit.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.obj `if test -f 'priv/host_s390_emit.c'; then $(CYGPATH_W) 'priv/host_s390_emit.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_emit.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_emit.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_emit.obj `if test -f 'priv/host_s390_emit.c'; then $(CYGPATH_W) 'priv/host_s390_emit.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_emit.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.o: priv/host_s390_hreg.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.o `test -f 'priv/host_s390_hreg.c' || echo '$(srcdir)/'`priv/host_s390_hreg.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_hreg.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.o `test -f 'priv/host_s390_hreg.c' || echo '$(srcdir)/'`priv/host_s390_hreg.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.obj: priv/host_s390_hreg.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.obj `if test -f 'priv/host_s390_hreg.c'; then $(CYGPATH_W) 'priv/host_s390_hreg.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_hreg.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_hreg.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_hreg.obj `if test -f 'priv/host_s390_hreg.c'; then $(CYGPATH_W) 'priv/host_s390_hreg.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_hreg.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.o: priv/host_s390_insn.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.o `test -f 'priv/host_s390_insn.c' || echo '$(srcdir)/'`priv/host_s390_insn.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_insn.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.o `test -f 'priv/host_s390_insn.c' || echo '$(srcdir)/'`priv/host_s390_insn.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.obj: priv/host_s390_insn.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.obj `if test -f 'priv/host_s390_insn.c'; then $(CYGPATH_W) 'priv/host_s390_insn.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_insn.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_insn.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_insn.obj `if test -f 'priv/host_s390_insn.c'; then $(CYGPATH_W) 'priv/host_s390_insn.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_insn.c'; fi`
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.o: priv/host_s390_wrapper.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.o -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.o `test -f 'priv/host_s390_wrapper.c' || echo '$(srcdir)/'`priv/host_s390_wrapper.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_wrapper.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.o `test -f 'priv/host_s390_wrapper.c' || echo '$(srcdir)/'`priv/host_s390_wrapper.c
+
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.obj: priv/host_s390_wrapper.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.obj -MD -MP -MF $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.Tpo -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.obj `if test -f 'priv/host_s390_wrapper.c'; then $(CYGPATH_W) 'priv/host_s390_wrapper.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_wrapper.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.Tpo $(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='priv/host_s390_wrapper.c' object='libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_s390_wrapper.obj `if test -f 'priv/host_s390_wrapper.c'; then $(CYGPATH_W) 'priv/host_s390_wrapper.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_s390_wrapper.c'; fi`
 install-pkgincludeHEADERS: $(pkginclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@@ -1781,7 +2267,8 @@ pub/libvex_guest_offsets.h: auxprogs/gen
 			    pub/libvex_guest_amd64.h \
 			    pub/libvex_guest_ppc32.h \
 			    pub/libvex_guest_ppc64.h \
-			    pub/libvex_guest_arm.h
+			    pub/libvex_guest_arm.h \
+			    pub/libvex_guest_s390x.h
 	rm -f auxprogs/genoffsets.s
 	$(CC) $(LIBVEX_CFLAGS) \
 	      $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
--- valgrind/lackey/Makefile.in	2010-10-21 03:16:14.000000000 +0200
+++ valgrind/lackey/Makefile.in	2010-11-11 16:11:56.948704282 +0100
@@ -361,6 +361,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -387,6 +392,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -435,6 +441,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -486,6 +495,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -523,6 +535,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = docs/lk-manual.xml
 LACKEY_SOURCES_COMMON = lk_main.c
 lackey_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
--- valgrind/Makefile.in	2010-10-21 03:16:18.000000000 +0200
+++ valgrind/Makefile.in	2010-11-11 16:11:59.729704614 +0100
@@ -377,6 +377,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -403,6 +408,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 TOOLS = memcheck \
 		cachegrind \
 		callgrind \
--- valgrind/exp-ptrcheck/Makefile.in	2010-10-21 03:16:13.000000000 +0200
+++ valgrind/exp-ptrcheck/Makefile.in	2010-11-11 16:11:56.422704844 +0100
@@ -406,6 +406,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -432,6 +437,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -480,6 +486,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -531,6 +540,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -568,6 +580,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = docs/pc-manual.xml
 
 #----------------------------------------------------------------------------
--- valgrind/exp-ptrcheck/tests/Makefile.in	2010-10-21 03:16:13.000000000 +0200
+++ valgrind/exp-ptrcheck/tests/Makefile.in	2010-11-11 16:11:56.540704264 +0100
@@ -454,6 +454,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -480,6 +485,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/tests/Makefile.in	2010-10-21 03:16:17.000000000 +0200
+++ valgrind/tests/Makefile.in	2010-11-11 16:11:59.654704626 +0100
@@ -326,6 +326,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -352,6 +357,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/none/Makefile.in	2010-10-21 03:16:16.000000000 +0200
+++ valgrind/none/Makefile.in	2010-11-11 16:11:58.524704658 +0100
@@ -359,6 +359,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -385,6 +390,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 
 #----------------------------------------------------------------------------
 # <tool>-<platform> stuff
@@ -433,6 +439,9 @@ TOOL_LDFLAGS_PPC64_LINUX = \
 TOOL_LDFLAGS_ARM_LINUX = \
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
 
+TOOL_LDFLAGS_S390X_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -484,6 +493,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
 LIBREPLACEMALLOC_AMD64_DARWIN = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
 
+LIBREPLACEMALLOC_S390X_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
+
 LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
 	-Wl,--whole-archive \
 	$(LIBREPLACEMALLOC_X86_LINUX) \
@@ -521,6 +533,11 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
 LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
 	$(LIBREPLACEMALLOC_AMD64_DARWIN)
 
+LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_S390X_LINUX) \
+	-Wl,--no-whole-archive
+
 EXTRA_DIST = docs/nl-manual.xml
 NONE_SOURCES_COMMON = nl_main.c
 none_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
--- valgrind/none/tests/x86/Makefile.in	2010-10-21 03:16:17.000000000 +0200
+++ valgrind/none/tests/x86/Makefile.in	2010-11-11 16:11:59.491705047 +0100
@@ -483,6 +483,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -509,6 +514,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/none/tests/amd64/Makefile.in	2010-11-11 16:06:53.769705036 +0100
+++ valgrind/none/tests/amd64/Makefile.in	2010-11-11 16:11:58.815704572 +0100
@@ -459,6 +459,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -485,6 +490,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/none/tests/x86-linux/Makefile.in	2010-10-21 03:16:17.000000000 +0200
+++ valgrind/none/tests/x86-linux/Makefile.in	2010-11-11 16:11:59.363704625 +0100
@@ -313,6 +313,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -339,6 +344,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/none/tests/ppc32/Makefile.in	2010-10-21 03:16:17.000000000 +0200
+++ valgrind/none/tests/ppc32/Makefile.in	2010-11-11 16:11:59.140704903 +0100
@@ -369,6 +369,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -395,6 +400,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/none/tests/linux/Makefile.in	2010-10-21 03:16:17.000000000 +0200
+++ valgrind/none/tests/linux/Makefile.in	2010-11-11 16:11:59.050704304 +0100
@@ -316,6 +316,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -342,6 +347,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/none/tests/ppc64/Makefile.in	2010-10-21 03:16:17.000000000 +0200
+++ valgrind/none/tests/ppc64/Makefile.in	2010-11-11 16:11:59.219704975 +0100
@@ -337,6 +337,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -363,6 +368,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/none/tests/arm/Makefile.in	2010-10-21 03:16:17.000000000 +0200
+++ valgrind/none/tests/arm/Makefile.in	2010-11-11 16:11:58.910704327 +0100
@@ -339,6 +339,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -365,6 +370,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/none/tests/darwin/Makefile.in	2010-10-21 03:16:17.000000000 +0200
+++ valgrind/none/tests/darwin/Makefile.in	2010-11-11 16:11:58.980704338 +0100
@@ -317,6 +317,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -343,6 +348,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
--- valgrind/none/tests/Makefile.in	2010-10-21 03:16:16.000000000 +0200
+++ valgrind/none/tests/Makefile.in	2010-11-11 16:11:58.701704771 +0100
@@ -55,13 +55,14 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(n
 @VGCONF_ARCHS_INCLUDE_PPC32_TRUE@am__append_3 = ppc32
 @VGCONF_ARCHS_INCLUDE_PPC64_TRUE@am__append_4 = ppc64
 @VGCONF_ARCHS_INCLUDE_ARM_TRUE@am__append_5 = arm
+@VGCONF_ARCHS_INCLUDE_S390X_TRUE@am__append_6 = s390x
 
 # OS-specific tests
-@VGCONF_OS_IS_LINUX_TRUE@am__append_6 = linux
-@VGCONF_OS_IS_DARWIN_TRUE@am__append_7 = darwin
+@VGCONF_OS_IS_LINUX_TRUE@am__append_7 = linux
+@VGCONF_OS_IS_DARWIN_TRUE@am__append_8 = darwin
 
 # Platform-specific tests
-@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_8 = x86-linux
+@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_9 = x86-linux
 check_PROGRAMS = ansi$(EXEEXT) args$(EXEEXT) async-sigs$(EXEEXT) \
 	bitfield1$(EXEEXT) bug129866$(EXEEXT) closeall$(EXEEXT) \
 	coolo_strlen$(EXEEXT) discard$(EXEEXT) exec-sigmask$(EXEEXT) \
@@ -100,7 +101,7 @@ check_PROGRAMS = ansi$(EXEEXT) args$(EXE
 # --61831:0:aspacem  NSegment{    , start=0x10067a000, end=0x109a1efff,
 #                    smode=SmFixed, dev=0, ino=0, offset=0, fnIdx=-1, hasR=0,
 #                    hasW=0, hasX=0, hasT=0, mark=0, name="(none)"}
-@VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE@am__append_9 = \
+@VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE@am__append_10 = \
 @VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE@	manythreads \
 @VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_FALSE@	thread-exits
 
@@ -672,6 +673,11 @@ AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch
 			    -mmacosx-version-min=10.5 -fno-stack-protector
 
 AM_CCASFLAGS_AMD64_DARWIN = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_S390X_LINUX = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
+                            @FLAG_M64@ -g
+
 
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
@@ -698,6 +704,7 @@ PRELOAD_LDFLAGS_PPC32_AIX5 = $(PRELOAD_L
 PRELOAD_LDFLAGS_PPC64_AIX5 = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
 PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
 PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
 		-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
 		-I$(top_srcdir)/VEX/pub \
@@ -715,8 +722,8 @@ AM_CCASFLAGS = $(AM_CPPFLAGS)
 @VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS)
 SUBDIRS = . $(am__append_1) $(am__append_2) $(am__append_3) \
 	$(am__append_4) $(am__append_5) $(am__append_6) \
-	$(am__append_7) $(am__append_8)
-DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm linux darwin x86-linux .
+	$(am__append_7) $(am__append_8) $(am__append_9)
+DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm s390x linux darwin x86-linux .
 dist_noinst_SCRIPTS = \
 	filter_cmdline0 \
 	filter_cmdline1 \