X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Farchitecture.h;h=353d49bedf02b314602bfdd4a21af63ae0dfef8b;hb=7c63b23f499069b7bbdf5e74d3e7a622918341e9;hp=7163d1fcafa0b48ec0749325f5f999536c745d7b;hpb=0881d7af14eb6105d825c3a32a1f8ad11ed5d092;p=elogind.git diff --git a/src/shared/architecture.h b/src/shared/architecture.h index 7163d1fca..353d49bed 100644 --- a/src/shared/architecture.h +++ b/src/shared/architecture.h @@ -21,9 +21,14 @@ along with systemd; If not, see . ***/ +#include + #include "util.h" -/* A cleaned up architecture definition */ +/* A cleaned up architecture definition. We don't want to get lost in + * processor features, models, generations or even ABIs. Hence we + * focus on general family, and distuignish word width and + * endianness. */ typedef enum Architecture { ARCHITECTURE_X86 = 0, @@ -77,15 +82,15 @@ Architecture uname_architecture(void); # define native_architecture() ARCHITECTURE_X86 # define LIB_ARCH_TUPLE "i386-linux-gnu" #elif defined(__powerpc64__) -# if defined(WORDS_BIGENDIAN) +# if __BYTE_ORDER == __BIG_ENDIAN # define native_architecture() ARCHITECTURE_PPC64 # define LIB_ARCH_TUPLE "ppc64-linux-gnu" # else # define native_architecture() ARCHITECTURE_PPC64_LE -# error "Missing LIB_ARCH_TUPLE for PPC64LE" +# define LIB_ARCH_TUPLE "powerpc64le-linux-gnu" # endif #elif defined(__powerpc__) -# if defined(WORDS_BIGENDIAN) +# if __BYTE_ORDER == __BIG_ENDIAN # define native_architecture() ARCHITECTURE_PPC # define LIB_ARCH_TUPLE "powerpc-linux-gnu" # else @@ -114,7 +119,7 @@ Architecture uname_architecture(void); # define native_architecture() ARCHITECTURE_SPARC # define LIB_ARCH_TUPLE "sparc-linux-gnu" #elif defined(__mips64__) -# if defined(WORDS_BIGENDIAN) +# if __BYTE_ORDER == __BIG_ENDIAN # define native_architecture() ARCHITECTURE_MIPS64 # error "Missing LIB_ARCH_TUPLE for MIPS64" # else @@ -122,7 +127,7 @@ Architecture uname_architecture(void); # error "Missing LIB_ARCH_TUPLE for MIPS64_LE" # endif #elif defined(__mips__) -# if defined(WORDS_BIGENDIAN) +# if __BYTE_ORDER == __BIG_ENDIAN # define native_architecture() ARCHITECTURE_MIPS # define LIB_ARCH_TUPLE "mips-linux-gnu" # else @@ -133,7 +138,7 @@ Architecture uname_architecture(void); # define native_architecture() ARCHITECTURE_ALPHA # define LIB_ARCH_TUPLE "alpha-linux-gnu" #elif defined(__aarch64__) -# if defined(WORDS_BIGENDIAN) +# if __BYTE_ORDER == __BIG_ENDIAN # define native_architecture() ARCHITECTURE_ARM64_BE # define LIB_ARCH_TUPLE "aarch64_be-linux-gnu" # else @@ -141,19 +146,27 @@ Architecture uname_architecture(void); # define LIB_ARCH_TUPLE "aarch64-linux-gnu" # endif #elif defined(__arm__) -# if defined(WORDS_BIGENDIAN) +# if __BYTE_ORDER == __BIG_ENDIAN # define native_architecture() ARCHITECTURE_ARM_BE -# if defined(__ARM_PCS_VFP) -# define LIB_ARCH_TUPLE "armeb-linux-gnueabihf" +# if defined(__ARM_EABI__) +# if defined(__ARM_PCS_VFP) +# define LIB_ARCH_TUPLE "armeb-linux-gnueabihf" +# else +# define LIB_ARCH_TUPLE "armeb-linux-gnueabi" +# endif # else -# define LIB_ARCH_TUPLE "armeb-linux-gnueabi" +# define LIB_ARCH_TUPLE "armeb-linux-gnu" # endif # else # define native_architecture() ARCHITECTURE_ARM -# if defined(__ARM_PCS_VFP) -# define LIB_ARCH_TUPLE "arm-linux-gnueabihf" +# if defined(__ARM_EABI__) +# if defined(__ARM_PCS_VFP) +# define LIB_ARCH_TUPLE "arm-linux-gnueabihf" +# else +# define LIB_ARCH_TUPLE "arm-linux-gnueabi" +# endif # else -# define LIB_ARCH_TUPLE "arm-linux-gnueabi" +# define LIB_ARCH_TUPLE "arm-linux-gnu" # endif # endif #elif defined(__sh64__)