|
[Xbmc-svn] [xbmc/xbmc] branch, master,
updated. ee92ffde4afe3aa5f0e8d086fafdbd25057a364a
From: www-data <git@xb...> - 2012-06-22 23:34
|
The branch, master has been updated
via ee92ffde4afe3aa5f0e8d086fafdbd25057a364a (commit)
from 3d4ab0b0afb37e0d779093e231d6676e3fe1b3af (commit)
https://github.com/xbmc/xbmc/commit/ee92ffde4afe3aa5f0e8d086fafdbd25057a364a
commit ee92ffde4afe3aa5f0e8d086fafdbd25057a364a
Author: Andres Mejia <amejia004@...>
Date: Fri Jun 22 19:32:18 2012 -0400
Fix atomic add and atomic subtract. Now passes tests.
diff --git a/xbmc/threads/Atomics.cpp b/xbmc/threads/Atomics.cpp
index 5b09f18..bddde83 100644
--- a/xbmc/threads/Atomics.cpp
+++ b/xbmc/threads/Atomics.cpp
@@ -306,6 +306,25 @@ long AtomicAdd(volatile long* pAddr, long amount)
return amount;
}
+#elif defined(__GNUC__)
+
+long AtomicAdd(volatile long* pAddr, long amount)
+{
+ return __sync_add_and_fetch(pAddr, amount);
+}
+
+#elif defined(__x86_64__)
+
+long AtomicAdd(volatile long* pAddr, long amount)
+{
+ register long result;
+ __asm__ __volatile__ (
+ "lock/xaddq %q0, %1"
+ : "=r" (result), "=m" (*pAddr)
+ : "0" ((long) (amount)), "m" (*pAddr));
+ return *pAddr;
+}
+
#else // Linux / OSX86 (GCC)
long AtomicAdd(volatile long* pAddr, long amount)
@@ -466,6 +485,25 @@ long AtomicSubtract(volatile long* pAddr, long amount)
return amount;
}
+#elif defined(__GNUC__)
+
+long AtomicSubtract(volatile long* pAddr, long amount)
+{
+ return __sync_sub_and_fetch(pAddr, amount);
+}
+
+#elif defined(__x86_64__)
+
+long AtomicSubtract(volatile long* pAddr, long amount)
+{
+ register long result;
+ __asm__ __volatile__ (
+ "lock/xaddq %q0, %1"
+ : "=r" (result), "=m" (*pAddr)
+ : "0" ((long) (-1 * amount)), "m" (*pAddr));
+ return *pAddr;
+}
+
#else // Linux / OSX86 (GCC)
long AtomicSubtract(volatile long* pAddr, long amount)
-----------------------------------------------------------------------
Summary of changes:
xbmc/threads/Atomics.cpp | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
hooks/post-receive
--
[xbmc/xbmc]
|
| Thread | Author | Date |
|---|---|---|
| [Xbmc-svn] [xbmc/xbmc] branch, master, updated. ee92ffde4afe3aa5f0e8d086fafdbd25057a364a | www-data <git@xb...> |