Description: Definte generic atomic function to prevent FTBFS on most architectures. Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=725611 Author: Alessio Treglia --- src/qtractorAtomic.h | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) --- qtractor.orig/src/qtractorAtomic.h +++ qtractor/src/qtractorAtomic.h @@ -35,33 +35,7 @@ extern "C" { #if defined(__GNUC__) -#if defined(powerpc) || defined(__ppc__) - -static inline int ATOMIC_CAS1 ( - volatile int *pAddr, int iOldValue, int iNewValue ) -{ - register int result; - asm volatile ( - "# ATOMIC_CAS1 \n" - " lwarx r0, 0, %1 \n" - " cmpw r0, %2 \n" - " bne- 1f \n" - " sync \n" - " stwcx. %3, 0, %1 \n" - " bne- 1f \n" - " li %0, 1 \n" - " b 2f \n" - "1: \n" - " li %0, 0 \n" - "2: \n" - : "=r" (result) - : "r" (pValue), "r" (iOldValue), "r" (iNewValue) - : "r0" - ); - return result; -} - -#elif defined(__i386__) || defined(__x86_64__) +#if defined(__i386__) || defined(__x86_64__) static inline int ATOMIC_CAS1 ( volatile int *pValue, int iOldValue, int iNewValue ) @@ -79,7 +53,17 @@ static inline int ATOMIC_CAS1 ( } #else -# error "qtractorAtomic.h: unsupported target compiler processor (GNUC)." + +#if QT_VERSION < 0x040400 + +static inline int ATOMIC_CAS1 ( + volatile int *pAddr, int iOldValue, int iNewValue ) +{ + return q_atomic_test_and_set_int(pAddr, iOldValue, iNewValue); +} + +#endif + #endif #elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32)