summaryrefslogtreecommitdiffstats
path: root/src/corelib/arch/qatomic_ia64.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/arch/qatomic_ia64.h')
-rw-r--r--src/corelib/arch/qatomic_ia64.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/corelib/arch/qatomic_ia64.h b/src/corelib/arch/qatomic_ia64.h
index 5108751f2a..a2bca55c03 100644
--- a/src/corelib/arch/qatomic_ia64.h
+++ b/src/corelib/arch/qatomic_ia64.h
@@ -140,7 +140,8 @@ template<> struct QAtomicIntegerTraits<unsigned long long> { enum { IsInteger =
template <int size> struct QBasicAtomicOps: QGenericAtomicOps<QBasicAtomicOps<size> >
{
- static void orderedMemoryFence();
+ template <typename T>
+ static void orderedMemoryFence(const T &);
template <typename T> static inline
T loadAcquire(const T &_q_value)
@@ -202,8 +203,8 @@ inline bool _q_ia64_fetchadd_immediate(register int value)
// intrinsics provided by the Intel C++ Compiler
#include <ia64intrin.h>
-template<int size> inline
-void QBasicAtomicOps<size>::orderedMemoryFence()
+template<int size> template <typename T> inline
+void QBasicAtomicOps<size>::orderedMemoryFence(const T &)
{
__memory_barrier();
}
@@ -332,8 +333,8 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueTo
#elif defined(Q_CC_GNU)
-template<int size> inline
-void QBasicAtomicOps<size>::orderedMemoryFence()
+template<int size> template <typename T> inline
+void QBasicAtomicOps<size>::orderedMemoryFence(const T &)
{
asm volatile("mf" ::: "memory");
}
@@ -1045,7 +1046,7 @@ bool QBasicAtomicOps<size>::testAndSetRelaxed(T &_q_value, T expectedValue, T ne
template<int size> template <typename T> inline
bool QBasicAtomicOps<size>::testAndSetOrdered(T &_q_value, T expectedValue, T newValue)
{
- orderedMemoryFence();
+ orderedMemoryFence(_q_value);
return testAndSetAcquire(_q_value, expectedValue, newValue);
}
@@ -1058,7 +1059,7 @@ T QBasicAtomicOps<size>::fetchAndStoreRelaxed(T &_q_value, T newValue)
template<int size> template <typename T> inline
T QBasicAtomicOps<size>::fetchAndStoreRelease(T &_q_value, T newValue)
{
- orderedMemoryFence();
+ orderedMemoryFence(_q_value);
return fetchAndStoreAcquire(_q_value, newValue);
}
@@ -1077,7 +1078,7 @@ T QBasicAtomicOps<size>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiv
template<int size> template <typename T> inline
T QBasicAtomicOps<size>::fetchAndAddOrdered(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- orderedMemoryFence();
+ orderedMemoryFence(_q_value);
return fetchAndAddRelease(_q_value, valueToAdd);
}