summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorcomex <comexk@gmail.com>2013-09-23 15:00:53 -0400
committercomex <comexk@gmail.com>2013-09-23 15:01:38 -0400
commitf81df136c231d77d4a91dac571c0205075ac4f2c (patch)
tree9d6e903f1aa602576eceec56b37212a44c051465 /Source/Core
parent1745bfdc455e1d03106a5547689cf6bafc0c9393 (diff)
Add an explicit error message for outdated GCC, and remove some commented out code.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Common/Src/Atomic_GCC.h49
1 files changed, 4 insertions, 45 deletions
diff --git a/Source/Core/Common/Src/Atomic_GCC.h b/Source/Core/Common/Src/Atomic_GCC.h
index d255c72bc1..22dffbe66d 100644
--- a/Source/Core/Common/Src/Atomic_GCC.h
+++ b/Source/Core/Common/Src/Atomic_GCC.h
@@ -56,6 +56,10 @@ _Atomic(T)* ToC11Atomic(volatile T* loc)
#define __atomic_exchange_n(p, v, m) __c11_atomic_exchange(ToC11Atomic(p), v, m)
#endif
+#ifndef __ATOMIC_RELAXED
+#error __ATOMIC_RELAXED not defined; your compiler version is too old.
+#endif
+
template <typename T>
inline T AtomicLoad(volatile T& src) {
return __atomic_load_n(&src, __ATOMIC_RELAXED);
@@ -83,49 +87,4 @@ inline T* AtomicExchangeAcquire(T* volatile& loc, U newval) {
}
-// Old code kept here for reference in case we need the parts with __asm__ __volatile__.
-#if 0
-LONG SyncInterlockedIncrement(LONG *Dest)
-{
-#if defined(__GNUC__) && defined (__GNUC_MINOR__) && ((4 < __GNUC__) || (4 == __GNUC__ && 1 <= __GNUC_MINOR__))
- return __sync_add_and_fetch(Dest, 1);
-#else
- register int result;
- __asm__ __volatile__("lock; xadd %0,%1"
- : "=r" (result), "=m" (*Dest)
- : "0" (1), "m" (*Dest)
- : "memory");
- return result;
-#endif
-}
-
-LONG SyncInterlockedExchangeAdd(LONG *Dest, LONG Val)
-{
-#if defined(__GNUC__) && defined (__GNUC_MINOR__) && ((4 < __GNUC__) || (4 == __GNUC__ && 1 <= __GNUC_MINOR__))
- return __sync_add_and_fetch(Dest, Val);
-#else
- register int result;
- __asm__ __volatile__("lock; xadd %0,%1"
- : "=r" (result), "=m" (*Dest)
- : "0" (Val), "m" (*Dest)
- : "memory");
- return result;
-#endif
-}
-
-LONG SyncInterlockedExchange(LONG *Dest, LONG Val)
-{
-#if defined(__GNUC__) && defined (__GNUC_MINOR__) && ((4 < __GNUC__) || (4 == __GNUC__ && 1 <= __GNUC_MINOR__))
- return __sync_lock_test_and_set(Dest, Val);
-#else
- register int result;
- __asm__ __volatile__("lock; xchg %0,%1"
- : "=r" (result), "=m" (*Dest)
- : "0" (Val), "m" (*Dest)
- : "memory");
- return result;
-#endif
-}
-#endif
-
#endif