summaryrefslogtreecommitdiffstats
path: root/src/corelib/arch/qatomic_armv5.h
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@digia.com>2013-03-20 13:46:57 +0100
committerOswald Buddenhagen <oswald.buddenhagen@digia.com>2013-03-20 13:49:28 +0100
commit76c0be34cd4ff4564693162fa7528463e23ce9d8 (patch)
treef165b7bc319548fb0082365411a871028f92e89e /src/corelib/arch/qatomic_armv5.h
parent27b4fe96b59e9e63d1e570e802c072e9afdfb2d4 (diff)
parent36cb3f3f655a9090c82de609010cbfb88651a0f3 (diff)
Merge branch 'dev' into stable
This starts Qt 5.1 release cycle Conflicts: src/gui/text/qfontdatabase.cpp src/gui/text/qharfbuzz_copy_p.h src/widgets/kernel/qapplication.cpp src/widgets/kernel/qcoreapplication.cpp Change-Id: I72fbf83ab3c2206aeea1b089428b0fc2a89bd62b
Diffstat (limited to 'src/corelib/arch/qatomic_armv5.h')
-rw-r--r--src/corelib/arch/qatomic_armv5.h15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/corelib/arch/qatomic_armv5.h b/src/corelib/arch/qatomic_armv5.h
index cdb9c8f979..e0a50b3c24 100644
--- a/src/corelib/arch/qatomic_armv5.h
+++ b/src/corelib/arch/qatomic_armv5.h
@@ -45,15 +45,12 @@
#include <QtCore/qgenericatomic.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
#if 0
// silence syncqt warnings
QT_END_NAMESPACE
-QT_END_HEADER
-
+#pragma qt_sync_skip_header_check
#pragma qt_sync_stop_processing
#endif
@@ -167,12 +164,20 @@ __asm T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL
template<> template <typename T> inline
T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW
{
+#if defined(__thumb__)
+ register T originalValue;
+ do {
+ originalValue = _q_value;
+ } while (_q_cmpxchg(originalValue, newValue, &_q_value) != 0);
+ return originalValue;
+#else
T originalValue;
asm volatile("swp %0,%2,[%3]"
: "=&r"(originalValue), "=m" (_q_value)
: "r"(newValue), "r"(&_q_value)
: "cc", "memory");
return originalValue;
+#endif
}
#endif // Q_CC_RVCT
@@ -190,6 +195,4 @@ T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveTy
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QATOMIC_ARMV5_H