Browse Source

HPCC-14720 Use __pause for 32bit GNU build

Signed-off-by: Mark Kelly <mark.kelly@lexisnexis.com>
Mark Kelly 9 years ago
parent
commit
aaa1f945f1
1 changed files with 15 additions and 2 deletions
  1. 15 2
      system/jlib/jatomic.hpp

+ 15 - 2
system/jlib/jatomic.hpp

@@ -22,9 +22,22 @@
 
 #ifdef _WIN32
 inline static void spinPause() { YieldProcessor(); }
-#else
-#include "xmmintrin.h"
+#elif defined(_ARCH_X86_64_) || defined(_ARCH_X86_)
+# include "x86intrin.h"
+# if defined(_ARCH_X86_)
+inline static void spinPause() { __pause(); }
+  // or could use
+  // __asm__ __volatile__ ("rep; nop" ::: "memory");
+  // __asm__ __volatile__ ("pause" ::: "memory");
+# else
 inline static void spinPause() { _mm_pause(); }
+# endif
+#else
+// _ARCH_ARM64_ || _ARCH_ARM32_
+// inline static void spinPause() { __nop(); }
+// _ARCH_PPC64EL_
+// __asm__ __volatile__ ("or 0,0,0");
+inline static void spinPause() { }
 #endif
 
 #ifdef _WIN32