Handle aarch64 defines seperate from arm

aarch64 is a different architecture than arm. Some
compilers might choke when both __arm__ and __aarch64__
are defined.

This change separates the checks for arm and for
aarch64 in the isa_defs.h header files.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Windel Bouwman <windel@windel.nl>
Closes #10335 
Closes #13151
This commit is contained in:
Windel Bouwman 2022-03-08 02:49:34 +01:00 committed by GitHub
parent db7f1a91de
commit 9955b9ba2e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 16 deletions

View File

@ -95,7 +95,7 @@
#define _ALIGNMENT_REQUIRED 1 #define _ALIGNMENT_REQUIRED 1
/* arm arch specific defines */ /* arm arch specific defines */
#elif defined(__arm) || defined(__arm__) || defined(__aarch64__) #elif defined(__arm) || defined(__arm__)
#if !defined(__arm) #if !defined(__arm)
#define __arm #define __arm
@ -105,17 +105,11 @@
#define __arm__ #define __arm__
#endif #endif
#if defined(__aarch64__)
#if !defined(_LP64)
#define _LP64
#endif
#else
#if !defined(_ILP32) #if !defined(_ILP32)
#define _ILP32 #define _ILP32
#endif #endif
#endif
#if defined(__ARMEL__) || defined(__AARCH64EL__) #if defined(__ARMEL__)
#define _ZFS_LITTLE_ENDIAN #define _ZFS_LITTLE_ENDIAN
#else #else
#define _ZFS_BIG_ENDIAN #define _ZFS_BIG_ENDIAN
@ -127,6 +121,19 @@
*/ */
#define _ALIGNMENT_REQUIRED 1 #define _ALIGNMENT_REQUIRED 1
/* aarch64 arch specific defines */
#elif defined(__aarch64__)
#if !defined(_LP64)
#define _LP64
#endif
#if defined(__AARCH64EL__)
#define _ZFS_LITTLE_ENDIAN
#else
#define _ZFS_BIG_ENDIAN
#endif
/* sparc arch specific defines */ /* sparc arch specific defines */
#elif defined(__sparc) || defined(__sparc__) #elif defined(__sparc) || defined(__sparc__)

View File

@ -126,7 +126,7 @@ extern "C" {
#endif #endif
/* arm arch specific defines */ /* arm arch specific defines */
#elif defined(__arm) || defined(__arm__) || defined(__aarch64__) #elif defined(__arm) || defined(__arm__)
#if !defined(__arm) #if !defined(__arm)
#define __arm #define __arm
@ -136,17 +136,11 @@ extern "C" {
#define __arm__ #define __arm__
#endif #endif
#if defined(__aarch64__)
#if !defined(_LP64)
#define _LP64
#endif
#else
#if !defined(_ILP32) #if !defined(_ILP32)
#define _ILP32 #define _ILP32
#endif #endif
#endif
#if defined(__ARMEL__) || defined(__AARCH64EL__) #if defined(__ARMEL__)
#define _ZFS_LITTLE_ENDIAN #define _ZFS_LITTLE_ENDIAN
#else #else
#define _ZFS_BIG_ENDIAN #define _ZFS_BIG_ENDIAN
@ -158,6 +152,21 @@ extern "C" {
#define HAVE_EFFICIENT_UNALIGNED_ACCESS #define HAVE_EFFICIENT_UNALIGNED_ACCESS
#endif #endif
/* aarch64 arch specific defines */
#elif defined(__aarch64__)
#if !defined(_LP64)
#define _LP64
#endif
#if defined(__AARCH64EL__)
#define _ZFS_LITTLE_ENDIAN
#else
#define _ZFS_BIG_ENDIAN
#endif
#define _SUNOS_VTOC_16
/* sparc arch specific defines */ /* sparc arch specific defines */
#elif defined(__sparc) || defined(__sparc__) #elif defined(__sparc) || defined(__sparc__)