]> wimlib.net Git - wimlib/blobdiff - include/wimlib/compiler-gcc.h
extract.c: replace tempnam() with mkstemp() on non-Windows
[wimlib] / include / wimlib / compiler-gcc.h
index 46983308ec8f6b2e1bae224d2b971e4bccdd361b..3a9d8e7e1007ab59533a7b8bc58ec972586c7472 100644 (file)
@@ -19,7 +19,8 @@
 #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 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