7692aeb
diff -up hdf-4.2.4-snap8/hdf/src/hdfi.h.s390 hdf-4.2.4-snap8/hdf/src/hdfi.h
7692aeb
--- hdf-4.2.4-snap8/hdf/src/hdfi.h.s390	2010-02-01 13:28:25.387386871 -0700
7692aeb
+++ hdf-4.2.4-snap8/hdf/src/hdfi.h	2010-02-01 13:31:46.343387138 -0700
e8897ea
@@ -78,6 +78,7 @@
e8897ea
 #define     DFMT_POWERPC64      0x1111
e8897ea
 #define     DFMT_LINUXPPC       0x1111
e8897ea
 #define     DFMT_LINUXSPARC     0x1111
e8897ea
+#define     DFMT_LINUX390       0x1111
e8897ea
 
e8897ea
 /* I/O library constants */
e8897ea
 #define UNIXUNBUFIO 1
7692aeb
@@ -1453,6 +1454,66 @@ typedef int               hdf_pint_t;   
e8897ea
 
e8897ea
 #endif /* Linux Sparc32/64 */
e8897ea
 
e8897ea
+/* Linux s390/s390x */
e8897ea
+#if defined __s390__ || defined __s390x__
e8897ea
+
e8897ea
+#ifdef GOT_MACHINE
e8897ea
+If you get an error on this line more than one machine type has been defined.
e8897ea
+Please check your Makefile.
e8897ea
+#endif
e8897ea
+#define GOT_MACHINE
e8897ea
+
e8897ea
+#include <sys/file.h>               /* for unbuffered i/o stuff */
e8897ea
+#include <sys/stat.h>
e8897ea
+#define DF_MT             DFMT_LINUX390
e8897ea
+typedef void              VOID;
e8897ea
+typedef void              *VOIDP;
e8897ea
+typedef char              *_fcd;
e8897ea
+typedef char              char8;
e8897ea
+typedef unsigned char     uchar8;
e8897ea
+typedef char              int8;
e8897ea
+typedef unsigned char     uint8;
e8897ea
+typedef short int         int16;
e8897ea
+typedef unsigned short int uint16;
e8897ea
+#ifdef __s390x__ /* 64-bit environment */
e8897ea
+typedef int               int32;
e8897ea
+typedef unsigned int      uint32;
e8897ea
+#else /* 32-bit environment */
e8897ea
+typedef long int          int32;
e8897ea
+typedef unsigned long int uint32;
e8897ea
+#endif
e8897ea
+typedef int               intn;
e8897ea
+typedef unsigned int      uintn;
e8897ea
+typedef int               intf;     /* size of INTEGERs in Fortran compiler */
e8897ea
+typedef float             float32;
e8897ea
+typedef double            float64;
e8897ea
+#ifdef __s390x__ /* 64-bit environment */
e8897ea
+typedef long              hdf_pint_t;   /* an integer the same size as a pointer */
e8897ea
+#else /* 32-bit environment */
e8897ea
+typedef int               hdf_pint_t;   /* an integer the same size as a pointer */
e8897ea
+#endif
e8897ea
+#define FNAME_POST_UNDERSCORE
e8897ea
+#define _fcdtocp(desc) (desc)
e8897ea
+#ifdef  HAVE_FMPOOL
e8897ea
+#define FILELIB PAGEBUFIO  /* enable page buffering */
e8897ea
+#else
e8897ea
+#define FILELIB UNIXBUFIO
e8897ea
+#endif
e8897ea
+
e8897ea
+/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
e8897ea
+
e8897ea
+/* Determine the memory manager we are going to use. Valid values are: */
e8897ea
+/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
e8897ea
+/*  what each does */
e8897ea
+#define JMEMSYS         MEM_ANSI
e8897ea
+
e8897ea
+#ifdef __GNUC__
e8897ea
+#define HAVE_STDC
e8897ea
+#define INCLUDES_ARE_ANSI
e8897ea
+#endif
e8897ea
+
e8897ea
+#endif /* Linux s390/s390x */
e8897ea
+
7692aeb
 /*-----------------------------------------------------*/
7692aeb
 /* 64-bit Free BSD */
7692aeb
 
7692aeb
diff -up hdf-4.2.4-snap8/mfhdf/fortran/config/jackets-linux.c.s390 hdf-4.2.4-snap8/mfhdf/fortran/config/jackets-linux.c
7692aeb
--- hdf-4.2.4-snap8/mfhdf/fortran/config/jackets-linux.c.s390	2010-02-01 13:28:25.373389124 -0700
7692aeb
+++ hdf-4.2.4-snap8/mfhdf/fortran/config/jackets-linux.c	2010-02-01 13:28:25.419387130 -0700
e8897ea
@@ -34,7 +34,7 @@
e8897ea
 
e8897ea
 struct ncfils {			/* This will be a common block from Fortran */
e8897ea
     double dd;
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
     int ll;
e8897ea
 #else
e8897ea
     long ll;
7692aeb
@@ -65,7 +65,7 @@ struct ncfils {			/* This will be a comm
e8897ea
 
e8897ea
 struct ncfils {			/* This will be a common block from Fortran */
e8897ea
     double dd;
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
     int ll;
e8897ea
 #else
e8897ea
     long ll;
7692aeb
@@ -430,7 +430,7 @@ stoig(shorts, ints, dims, basis, ndims)
e8897ea
 }
e8897ea
 #endif /* FORTRAN_HAS_NO_SHORT */
e8897ea
 
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 /*
e8897ea
  * Convert multi-dimensional array of NCLONGs stored in ints to packed
e8897ea
  * array of longs, in malloc'ed space.  Returns pointer to longs or NULL
7692aeb
@@ -916,7 +916,7 @@ nncvpt1(cdfid, varid, indices, value, rc
e8897ea
 	return;
e8897ea
     }				/* else */
e8897ea
 #endif				/* FORTRAN_HAS_NO_SHORT */
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 #ifdef HDF
e8897ea
     if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) {
e8897ea
 	long          longs = *(int *)value;
7692aeb
@@ -1030,7 +1030,7 @@ nncvpt(cdfid, varid, start, count, value
e8897ea
 	return;
e8897ea
     }				/* else */
e8897ea
 #endif				/* FORTRAN_HAS_NO_SHORT */
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 #ifdef HDF
e8897ea
     if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) {
e8897ea
 	long *longs = itol (value, ncount, ndims);
7692aeb
@@ -1141,7 +1141,7 @@ nncvptg(cdfid, varid, start, count, stri
e8897ea
 	tmpbasis	= nctypelen(NC_LONG);
e8897ea
     else
e8897ea
 #endif
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
     if (datatype == NC_LONG)
e8897ea
 	tmpbasis	= sizeof(int);
e8897ea
     else
7692aeb
@@ -1198,7 +1198,7 @@ nncvptg(cdfid, varid, start, count, stri
e8897ea
 	return;
e8897ea
     }				/* else */
e8897ea
 #endif				/* FORTRAN_HAS_NO_SHORT */
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 #ifdef HDF
e8897ea
     if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) {
e8897ea
 	long *longs = itolg (value, ncount, nbasis, ndims);
7692aeb
@@ -1334,7 +1334,7 @@ nncvgt1(cdfid, varid, indices, value, rc
e8897ea
 	return;
e8897ea
     }				/* else */
e8897ea
 #endif				/* FORTRAN_HAS_NO_SHORT */
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 #ifdef HDF
e8897ea
     if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) {
e8897ea
 	long          longs;
7692aeb
@@ -1476,7 +1476,7 @@ nncvgt(cdfid, varid, start, count, value
e8897ea
 	return;
e8897ea
     }				/* else */
e8897ea
 #endif				/* FORTRAN_HAS_NO_SHORT */
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 #ifdef HDF
e8897ea
     if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) {
e8897ea
 	long iocount = dimprod (ncount, ndims);	/* product of dimensions */
7692aeb
@@ -1614,7 +1614,7 @@ nncvgtg(cdfid, varid, start, count, stri
e8897ea
 	tmpbasis	= nctypelen(NC_LONG);
e8897ea
     else
e8897ea
 #endif
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
     if (datatype == NC_LONG)
e8897ea
 	tmpbasis	= sizeof(int);
e8897ea
     else
7692aeb
@@ -1685,7 +1685,7 @@ nncvgtg(cdfid, varid, start, count, stri
e8897ea
 	return;
e8897ea
     }				/* else */
e8897ea
 #endif				/* FORTRAN_HAS_NO_SHORT */
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 #ifdef HDF
e8897ea
     if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) {
e8897ea
 	long iocount = dimprod (ncount, ndims);	/* product of dimensions */
7692aeb
@@ -1851,7 +1851,7 @@ nncapt(cdfid, varid, attname, datatype, 
e8897ea
 	return;
e8897ea
     }				/* else */
e8897ea
 #endif				/* FORTRAN_HAS_NO_SHORT */
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 #ifdef HDF
e8897ea
     if ((nc_type) *datatype == NC_LONG && handle->file_type!=HDF_FILE) {
e8897ea
 	long *longs = itol (value, attlen, 1);
7692aeb
@@ -2016,7 +2016,7 @@ nncagt(cdfid, varid, attname, value, rco
e8897ea
 	return;
e8897ea
     }				/* else */
e8897ea
 #endif				/* FORTRAN_HAS_NO_SHORT */
e8897ea
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 #ifdef HDF
e8897ea
     if ((nc_type) datatype == NC_LONG && handle->file_type!=HDF_FILE) {
e8897ea
 /* EIP  We need to use int buffer to read data in on the platforms where long is 8 bytes
7692aeb
diff -up hdf-4.2.4-snap8/mfhdf/libsrc/array.c.s390 hdf-4.2.4-snap8/mfhdf/libsrc/array.c
7692aeb
--- hdf-4.2.4-snap8/mfhdf/libsrc/array.c.s390	2010-01-17 21:24:53.000000000 -0700
7692aeb
+++ hdf-4.2.4-snap8/mfhdf/libsrc/array.c	2010-02-01 13:28:25.422387595 -0700
7692aeb
@@ -622,7 +622,7 @@ xdr_NC_array(xdrs, app)
7692aeb
 	case NC_LONG :
7692aeb
 #if defined _CRAYMPP
7692aeb
 		xdr_NC_fnct = xdr_short;
7692aeb
-#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ 
7692aeb
+#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
7692aeb
 		xdr_NC_fnct = xdr_int ;
e8897ea
 #else
7692aeb
 		xdr_NC_fnct = xdr_long ;
7692aeb
diff -up hdf-4.2.4-snap8/mfhdf/libsrc/cdf.c.s390 hdf-4.2.4-snap8/mfhdf/libsrc/cdf.c
7692aeb
--- hdf-4.2.4-snap8/mfhdf/libsrc/cdf.c.s390	2010-01-17 21:24:53.000000000 -0700
7692aeb
+++ hdf-4.2.4-snap8/mfhdf/libsrc/cdf.c	2010-02-01 13:28:25.424387272 -0700
7692aeb
@@ -3657,7 +3657,7 @@ NC_var *vp ;
7692aeb
         alen /= 4 ;
7692aeb
 #if defined _CRAYMPP
7692aeb
         xdr_NC_fnct = xdr_short;
7692aeb
-#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ 
7692aeb
+#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
7692aeb
         xdr_NC_fnct = xdr_int ;
7692aeb
 #else
7692aeb
         xdr_NC_fnct = xdr_long ;
7692aeb
diff -up hdf-4.2.4-snap8/mfhdf/libsrc/config/netcdf-linux.h.s390 hdf-4.2.4-snap8/mfhdf/libsrc/config/netcdf-linux.h
7692aeb
--- hdf-4.2.4-snap8/mfhdf/libsrc/config/netcdf-linux.h.s390	2010-02-01 13:28:25.380387278 -0700
7692aeb
+++ hdf-4.2.4-snap8/mfhdf/libsrc/config/netcdf-linux.h	2010-02-01 13:28:25.418387640 -0700
7692aeb
@@ -304,7 +304,7 @@ typedef double        ncdouble;
7692aeb
  */
7692aeb
 #if defined _CRAYMPP
7692aeb
 typedef short	nclong;
7692aeb
-#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined __x86_64__ || defined __powerpc64__
7692aeb
+#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
7692aeb
 typedef int     nclong;   
7692aeb
 #else
7692aeb
 typedef long    nclong;         /* default, compatible type */
7692aeb
diff -up hdf-4.2.4-snap8/mfhdf/libsrc/netcdf.h.in.s390 hdf-4.2.4-snap8/mfhdf/libsrc/netcdf.h.in
7692aeb
--- hdf-4.2.4-snap8/mfhdf/libsrc/netcdf.h.in.s390	2010-02-01 13:28:25.380387278 -0700
7692aeb
+++ hdf-4.2.4-snap8/mfhdf/libsrc/netcdf.h.in	2010-02-01 13:28:25.417387775 -0700
7692aeb
@@ -295,7 +295,7 @@ typedef double        ncdouble;
7692aeb
  */
7692aeb
 #if defined _CRAYMPP
7692aeb
 typedef short	nclong;
7692aeb
-#elif defined __alpha || (_MIPS_SZLONG == 64) || defined IA64 || (defined __sun__ && defined _LP64) || defined AIX5L64 || defined __powerpc64__
7692aeb
+#elif defined __alpha || (_MIPS_SZLONG == 64) || defined IA64 || (defined __sun__ && defined _LP64) || defined AIX5L64 || defined __powerpc64__ || defined __s390x__
7692aeb
 typedef int     nclong;   
7692aeb
 #else
7692aeb
 typedef long    nclong;         /* default, compatible type */
7692aeb
diff -up hdf-4.2.4-snap8/mfhdf/libsrc/putget.c.s390 hdf-4.2.4-snap8/mfhdf/libsrc/putget.c
7692aeb
--- hdf-4.2.4-snap8/mfhdf/libsrc/putget.c.s390	2010-01-17 21:24:53.000000000 -0700
7692aeb
+++ hdf-4.2.4-snap8/mfhdf/libsrc/putget.c	2010-02-01 13:28:25.421386028 -0700
7692aeb
@@ -652,7 +652,7 @@ Void *values ;
e8897ea
 	case NC_LONG :
e8897ea
 #if defined _CRAYMPP
e8897ea
 		return( xdr_short(xdrs, (nclong *)values) ) ;
e8897ea
-#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ 
e8897ea
+#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 		return( xdr_int(xdrs, (nclong *)values) ) ;
e8897ea
 #else
e8897ea
 		return( xdr_long(xdrs, (nclong *)values) ) ;
7692aeb
@@ -1966,7 +1966,7 @@ Void *values ;
e8897ea
 	case NC_LONG :
e8897ea
 #if defined _CRAYMPP
e8897ea
                 xdr_NC_fnct = xdr_short;
e8897ea
-#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#elif defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 		xdr_NC_fnct = xdr_int ;
e8897ea
 #else
e8897ea
 		xdr_NC_fnct = xdr_long ;
7692aeb
diff -up hdf-4.2.4-snap8/mfhdf/libsrc/xdrposix.c.s390 hdf-4.2.4-snap8/mfhdf/libsrc/xdrposix.c
7692aeb
--- hdf-4.2.4-snap8/mfhdf/libsrc/xdrposix.c.s390	2010-01-17 21:24:53.000000000 -0700
7692aeb
+++ hdf-4.2.4-snap8/mfhdf/libsrc/xdrposix.c	2010-02-01 13:28:25.425387348 -0700
7692aeb
@@ -283,7 +283,7 @@ int nbytes;
e8897ea
 
e8897ea
 static bool_t   xdrposix_getlong();
e8897ea
 static bool_t   xdrposix_putlong();
e8897ea
-#if (_MIPS_SZLONG == 64) || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if (_MIPS_SZLONG == 64) || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 static bool_t   xdrposix_getint();
e8897ea
 static bool_t   xdrposix_putint();
e8897ea
 #endif
7692aeb
@@ -300,7 +300,7 @@ static long *    xdrposix_inline();
e8897ea
 #if (defined __sun && defined _LP64)
e8897ea
 static rpc_inline_t *    xdrposix_inline();
e8897ea
 #else
e8897ea
-#if ((defined __x86_64__ ) && !(defined __sun && defined _LP64)) || defined __powerpc64__
e8897ea
+#if ((defined __x86_64__ ) && !(defined __sun && defined _LP64)) || defined __powerpc64__ || defined __s390x__
e8897ea
 static int32_t *    xdrposix_inline();
e8897ea
 #else
e8897ea
 #if (defined __alpha )
7692aeb
@@ -331,9 +331,9 @@ static struct xdr_ops   xdrposix_ops = {
e8897ea
     xdrposix_getpos,    /* get offset in the stream */
e8897ea
     xdrposix_setpos,    /* set offset in the stream */
e8897ea
     xdrposix_inline,    /* prime stream for inline macros */
e8897ea
-#if (defined __sun && defined _LP64) || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if (defined __sun && defined _LP64) || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
     xdrposix_destroy,   /* destroy stream */
e8897ea
-#if !(defined __x86_64__) && !(defined __powerpc64__) || (defined  __sun && defined _LP64) /* i.e. we are on SUN/Intel in 64-bit mode */
e8897ea
+#if !(defined __s390x__) && !(defined __x86_64__) && !(defined __powerpc64__) || (defined  __sun && defined _LP64) /* i.e. we are on SUN/Intel in 64-bit mode */
e8897ea
     NULL,               /* no xdr_control function defined */
e8897ea
 #endif 
e8897ea
     /* Solaris 64-bit (arch=v9 and arch=amd64) has 64 bits long and 32 bits int. */
7692aeb
@@ -468,7 +468,7 @@ xdrposix_getlong(xdrs, lp)
e8897ea
 #endif
e8897ea
 {
e8897ea
     unsigned char *up = (unsigned char *)lp ;
e8897ea
-#if (defined CRAY || defined AIX5L64 || defined __powerpc64__ || (defined __hpux && __LP64__))  
e8897ea
+#if (defined CRAY || defined AIX5L64 || defined __powerpc64__ || defined __s390x__ || (defined __hpux && __LP64__))  
e8897ea
     *lp = 0 ;
e8897ea
     up += (sizeof(long) - 4) ;
e8897ea
 #endif
7692aeb
@@ -495,7 +495,7 @@ xdrposix_putlong(xdrs, lp)
e8897ea
     netlong mycopy = htonl(*lp);
e8897ea
     up = (unsigned char *)&mycopy;
e8897ea
 #endif
e8897ea
-#if (defined CRAY || defined AIX5L64  || defined __powerpc64__ || (defined __hpux && __LP64__))
e8897ea
+#if (defined CRAY || defined AIX5L64  || defined __powerpc64__ || defined __s390x__ || (defined __hpux && __LP64__))
e8897ea
     up += (sizeof(long) - 4) ;
e8897ea
 #endif
e8897ea
 
7692aeb
@@ -592,7 +592,7 @@ static rpc_inline_t *
e8897ea
 #if (defined  __alpha)
e8897ea
 static int* 
e8897ea
 #else
e8897ea
-#if ((defined  __x86_64__) && !(defined __sun && defined _LP64)) || defined __powerpc64__
e8897ea
+#if ((defined  __x86_64__) && !(defined __sun && defined _LP64)) || defined __powerpc64__ || defined __s390x__
e8897ea
 static int32_t * 
e8897ea
 #else
e8897ea
 static netlong * 
7692aeb
@@ -621,7 +621,7 @@ int 
e8897ea
     return (NULL);
e8897ea
 }
e8897ea
 
e8897ea
-#if (_MIPS_SZLONG == 64) || (defined __sun && defined _LP64) || defined AIX5L64  || defined __x86_64__ || defined __powerpc64__
e8897ea
+#if (_MIPS_SZLONG == 64) || (defined __sun && defined _LP64) || defined AIX5L64  || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
e8897ea
 
e8897ea
 static bool_t
e8897ea
 xdrposix_getint(xdrs, lp)
7692aeb
diff -up hdf-4.2.4-snap8/mfhdf/ncgen/ncgen.l.s390 hdf-4.2.4-snap8/mfhdf/ncgen/ncgen.l
7692aeb
--- hdf-4.2.4-snap8/mfhdf/ncgen/ncgen.l.s390	2010-02-01 13:28:25.381387100 -0700
7692aeb
+++ hdf-4.2.4-snap8/mfhdf/ncgen/ncgen.l	2010-02-01 13:28:25.420387234 -0700
7692aeb
@@ -134,7 +134,7 @@ FloatInf|Infinity|Inf	{    /* float miss
7692aeb
 		    yyerror(errstr);
7692aeb
 		}
7692aeb
 
7692aeb
-#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__
7692aeb
+#if defined __alpha || (_MIPS_SZLONG == 64) || defined __ia64 || (defined __sun && defined _LP64) || defined AIX5L64 || defined __x86_64__ || defined __powerpc64__ || defined __s390x__
7692aeb
 		if (dd < INT_MIN  ||  dd > INT_MAX) 
7692aeb
 #else
7692aeb
 #if defined (_CRAYMPP)