mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
65 lines
1.6 KiB
Diff
65 lines
1.6 KiB
Diff
|
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 <alessio@debian.org>
|
||
|
---
|
||
|
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)
|