Index: nss/mozilla/nsprpub/pr/include/pratom.h |
=================================================================== |
--- nss/mozilla/nsprpub/pr/include/pratom.h (revision 55475) |
+++ nss/mozilla/nsprpub/pr/include/pratom.h (working copy) |
@@ -125,16 +125,20 @@ |
long __cdecl _InterlockedExchangeAdd(long volatile *Addend, long Value); |
#pragma intrinsic(_InterlockedExchangeAdd) |
-#define PR_ATOMIC_INCREMENT(val) _InterlockedIncrement(val) |
-#define PR_ATOMIC_DECREMENT(val) _InterlockedDecrement(val) |
-#define PR_ATOMIC_SET(val, newval) _InterlockedExchange(val, newval) |
-#define PR_ATOMIC_ADD(ptr, val) (_InterlockedExchangeAdd(ptr, val) + (val)) |
+#define PR_ATOMIC_INCREMENT(val) _InterlockedIncrement((long volatile *)(val)) |
+#define PR_ATOMIC_DECREMENT(val) _InterlockedDecrement((long volatile *)(val)) |
+#define PR_ATOMIC_SET(val, newval) \ |
+ _InterlockedExchange((long volatile *)(val), (long)(newval)) |
+#define PR_ATOMIC_ADD(ptr, val) \ |
+ (_InterlockedExchangeAdd((long volatile *)(ptr), (long)(val)) + (val)) |
#elif ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) && \ |
((defined(DARWIN) && \ |
- (defined(__ppc__) || defined(__i386__))) || \ |
+ (defined(__ppc__) || defined(__i386__) || defined(__x86_64__))) || \ |
(defined(LINUX) && \ |
- (defined(__i386__) || defined(__ia64__) || defined(__x86_64__) || \ |
+ ((defined(__i386__) && \ |
+ defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)) || \ |
+ defined(__ia64__) || defined(__x86_64__) || \ |
(defined(__powerpc__) && !defined(__powerpc64__)) || \ |
defined(__alpha)))) |