From d903bbe25416771c10fa1557195d5c419f4f4b68 Mon Sep 17 00:00:00 2001 From: Love Hornquist Astrand Date: Fri, 26 Nov 2010 08:35:39 -0800 Subject: [PATCH] condition on HAVE___SYNC_ADD_AND_FETCH --- base/baselocl.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/base/baselocl.h b/base/baselocl.h index 931258bf3..d023cca23 100644 --- a/base/baselocl.h +++ b/base/baselocl.h @@ -54,7 +54,8 @@ #include #endif -#ifdef __GNUC__ +#if defined(__GNUC__) && defined(HAVE___SYNC_ADD_AND_FETCH) + #define heim_base_atomic_inc(x) __sync_add_and_fetch((x), 1) #define heim_base_atomic_dec(x) __sync_sub_and_fetch((x), 1) #define heim_base_atomic_type unsigned int @@ -72,7 +73,14 @@ #define heim_base_exchange_pointer(t,v) InterlockedExchangePointer((t),(v)) #else -#error "provide atomic integer operations for your compiler" + +#warning "provide atomic integer operations for your compiler" + +#define heim_base_atomic_inc(x) ((x)++) +#define heim_base_atomic_dec(x) ((x)--) +#define heim_base_atomic_type long +#define heim_base_atomic_max MAXLONG + #endif /* tagged strings/object/XXX */