summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/util/u_atomic.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/auxiliary/util/u_atomic.h')
-rw-r--r--src/gallium/auxiliary/util/u_atomic.h46
1 files changed, 35 insertions, 11 deletions
diff --git a/src/gallium/auxiliary/util/u_atomic.h b/src/gallium/auxiliary/util/u_atomic.h
index 1c042c3ede9..e30280a1e10 100644
--- a/src/gallium/auxiliary/util/u_atomic.h
+++ b/src/gallium/auxiliary/util/u_atomic.h
@@ -12,11 +12,6 @@
#include "pipe/p_compiler.h"
#include "pipe/p_defines.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
/* Favor OS-provided implementations.
*
* Where no OS-provided implementation is available, fall back to
@@ -44,10 +39,13 @@ extern "C" {
#define PIPE_ATOMIC "GCC x86 assembly"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define p_atomic_set(_v, _i) (*(_v) = (_i))
#define p_atomic_read(_v) (*(_v))
-
static INLINE boolean
p_atomic_dec_zero(int32_t *v)
{
@@ -76,6 +74,11 @@ p_atomic_cmpxchg(int32_t *v, int32_t old, int32_t _new)
{
return __sync_val_compare_and_swap(v, old, _new);
}
+
+#ifdef __cplusplus
+}
+#endif
+
#endif
@@ -86,10 +89,13 @@ p_atomic_cmpxchg(int32_t *v, int32_t old, int32_t _new)
#define PIPE_ATOMIC "GCC Sync Intrinsics"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define p_atomic_set(_v, _i) (*(_v) = (_i))
#define p_atomic_read(_v) (*(_v))
-
static INLINE boolean
p_atomic_dec_zero(int32_t *v)
{
@@ -113,6 +119,11 @@ p_atomic_cmpxchg(int32_t *v, int32_t old, int32_t _new)
{
return __sync_val_compare_and_swap(v, old, _new);
}
+
+#ifdef __cplusplus
+}
+#endif
+
#endif
@@ -140,6 +151,10 @@ p_atomic_cmpxchg(int32_t *v, int32_t old, int32_t _new)
#define PIPE_ATOMIC "MSVC x86 assembly"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define p_atomic_set(_v, _i) (*(_v) = (_i))
#define p_atomic_read(_v) (*(_v))
@@ -190,6 +205,11 @@ p_atomic_cmpxchg(int32_t *v, int32_t old, int32_t _new)
return orig;
}
+
+#ifdef __cplusplus
+}
+#endif
+
#endif
@@ -203,6 +223,10 @@ p_atomic_cmpxchg(int32_t *v, int32_t old, int32_t _new)
#pragma intrinsic(_InterlockedDecrement)
#pragma intrinsic(_InterlockedCompareExchange)
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define p_atomic_set(_v, _i) (*(_v) = (_i))
#define p_atomic_read(_v) (*(_v))
@@ -230,6 +254,10 @@ p_atomic_cmpxchg(int32_t *v, int32_t old, int32_t _new)
return _InterlockedCompareExchange(v, _new, old);
}
+#ifdef __cplusplus
+}
+#endif
+
#endif
@@ -240,8 +268,4 @@ p_atomic_cmpxchg(int32_t *v, int32_t old, int32_t _new)
-#ifdef __cplusplus
-}
-#endif
-
#endif /* U_ATOMIC_H */