X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=include%2Fwimlib%2Fcompiler-gcc.h;h=3a9d8e7e1007ab59533a7b8bc58ec972586c7472;hb=de58d5f57732df8129fbfd71d46ae5968ac59646;hp=db6e3249b68ee92d06335bb02bb4a73460907198;hpb=0ecb0529b5fcacc1abafa1f3f02a40c44783ada8;p=wimlib diff --git a/include/wimlib/compiler-gcc.h b/include/wimlib/compiler-gcc.h index db6e3249..3a9d8e7e 100644 --- a/include/wimlib/compiler-gcc.h +++ b/include/wimlib/compiler-gcc.h @@ -19,14 +19,26 @@ #define _may_alias_attribute __attribute__((may_alias)) #define likely(expr) __builtin_expect(!!(expr), 1) #define unlikely(expr) __builtin_expect(!!(expr), 0) -#define prefetch(addr) __builtin_prefetch(addr) +#define prefetchr(addr) __builtin_prefetch((addr), 0) +#define prefetchw(addr) __builtin_prefetch((addr), 1) #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) # define _cold_attribute __attribute__((cold)) #endif #define _malloc_attribute __attribute__((malloc)) #define inline inline __attribute__((always_inline)) +#define noinline __attribute__((noinline)) -#define CPU_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +/* Newer gcc supports __BYTE_ORDER__. Older gcc doesn't. */ +#ifdef __BYTE_ORDER__ +# define CPU_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#elif defined(HAVE_CONFIG_H) +# include "config.h" +# ifdef WORDS_BIGENDIAN +# define CPU_IS_BIG_ENDIAN 1 +# else +# define CPU_IS_BIG_ENDIAN 0 +# endif +#endif #if defined(__x86_64__) || defined(__i386__) # define UNALIGNED_ACCESS_SPEED 3