]> git.proxmox.com Git - mirror_spl.git/commitdiff
Either _ILP32 or _LP64 must be defined
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 9 Dec 2015 22:46:59 +0000 (14:46 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 10 Dec 2015 19:53:29 +0000 (11:53 -0800)
For some arm, powerpc, and sparc platforms it was possible that
neither _ILP32 of _LP64 would be defined.  Update the isa_defs.h
header to explicitly set these macros and generate a compile error
in the case neither are defined.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: tuxoko <tuxoko@gmail.com>
Issue zfsonlinux/zfs#4048

include/sys/isa_defs.h

index aa5ae43c2683224e2bd912cbd5a449038e42a07f..49fe773d42050322d62d3a49756974944bbc0cb3 100644 (file)
@@ -60,7 +60,7 @@
 #endif
 
 /* powerpc (ppc64) arch specific defines */
-#elif defined(__powerpc) || defined(__powerpc__)
+#elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__)
 
 #if !defined(__powerpc)
 #define __powerpc
 #define __powerpc__
 #endif
 
+#if defined(__powerpc64__)
 #if !defined(_LP64)
 #define _LP64
 #endif
+#else
+#if !defined(_ILP32)
+#define _ILP32
+#endif
+#endif
 
 /* arm arch specific defines */
 #elif defined(__arm) || defined(__arm__) || defined(__aarch64__)
 #define __arm__
 #endif
 
+#if defined(__aarch64__)
+#if !defined(_LP64)
+#define _LP64
+#endif
+#else
+#if !defined(_ILP32)
+#define _ILP32
+#endif
+#endif
+
 #if defined(__ARMEL__) || defined(__AARCH64EL__)
 #define _LITTLE_ENDIAN
 #else
 #define __sparc__
 #endif
 
-#define _BIG_ENDIAN
-#define _SUNOS_VTOC_16
-
-/* sparc64 arch specific defines */
-#elif defined(__sparc64) || defined(__sparc64__)
-
-#if !defined(__sparc64)
-#define __sparc64
+#if !defined(_ILP32)
+#define _ILP32
 #endif
 
-#if !defined(__sparc64__)
-#define __sparc64__
+#if defined(__arch64__)
+#if !defined(_LP64)
+#define _LP64
+#endif
+#else
+#if !defined(_ILP32)
+#define _ILP32
+#endif
 #endif
 
 #define _BIG_ENDIAN
 #error "Both _ILP32 and _LP64 are defined"
 #endif
 
+#if !defined(_ILP32) && !defined(_LP64)
+#error "Neither _ILP32 or _LP64 are defined"
+#endif
+
 #include <sys/byteorder.h>
 
 #if defined(__LITTLE_ENDIAN) && !defined(_LITTLE_ENDIAN)