From 6b8f3c0c595e3ac3c291a8cb4da248418cc8d792 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Loyet?= Date: Sat, 21 Aug 2010 06:46:18 +0000 Subject: [PATCH] - Fix #52407 (use __sync_bool_compare_and_swap in fpm_atomic.h if gcc >= 4.1 is used - credit to geissert) --- sapi/fpm/fpm/fpm_atomic.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sapi/fpm/fpm/fpm_atomic.h b/sapi/fpm/fpm/fpm_atomic.h index 8c287ddfbb..e2e64d8a5d 100644 --- a/sapi/fpm/fpm/fpm_atomic.h +++ b/sapi/fpm/fpm/fpm_atomic.h @@ -12,7 +12,19 @@ #endif #include -#if ( __i386__ || __i386 ) +#if (__GNUC__) && (__GNUC__ >= 4 && __GNUC_MINOR__ >= 1) + +/** + * all the cases below (as provided by upstream) define: + * word as atomic_int_t, and + * unsigned word as atomic_uint_t + * and only use volatile atomic_uint_t as atomic_t + */ + +typedef volatile unsigned long atomic_t; +#define atomic_cmp_set(a,b,c) __sync_bool_compare_and_swap(a,b,c) + +#elif ( __i386__ || __i386 ) typedef int32_t atomic_int_t; typedef uint32_t atomic_uint_t; -- 2.40.0