* include/private/gc_locks.h [BASE_ATOMIC_OPS_EMULATED && GC_PTHREADS]
(USE_PTHREAD_LOCKS): Define.
* include/private/gc_locks.h [BASE_ATOMIC_OPS_EMULATED && GC_PTHREADS]
(USE_SPIN_LOCK): Undefine.
* pthread_support.c [(USE_SPIN_LOCK || !NO_PTHREAD_TRYLOCK)
&& AO_CLEAR] (GC_pause): Do not use AO_compiler_barrier() if
BASE_ATOMIC_OPS_EMULATED.
* pthread_support.c [AO_HAVE_char_load] (is_collecting): Do not use
AO_char_load() if BASE_ATOMIC_OPS_EMULATED.
# if (!defined(AO_HAVE_test_and_set_acquire) || defined(GC_RTEMS_PTHREADS) \
|| defined(SN_TARGET_ORBIS) || defined(SN_TARGET_PS3) \
- || defined(GC_WIN32_THREADS) || defined(LINT2)) && defined(GC_PTHREADS)
+ || defined(GC_WIN32_THREADS) || defined(BASE_ATOMIC_OPS_EMULATED) \
+ || defined(LINT2)) && defined(GC_PTHREADS)
# define USE_PTHREAD_LOCKS
# undef USE_SPIN_LOCK
# endif
for (i = 0; i < GC_PAUSE_SPIN_CYCLES; ++i) {
/* Something that's unlikely to be optimized away. */
-# ifdef AO_CLEAR
+# if defined(AO_CLEAR) && !defined(BASE_ATOMIC_OPS_EMULATED)
AO_compiler_barrier();
# else
GC_noop1(i);
#endif /* !USE_SPIN_LOCK || ... */
-#ifdef AO_HAVE_char_load
+#if defined(AO_HAVE_char_load) && !defined(BASE_ATOMIC_OPS_EMULATED)
# define is_collecting() \
((GC_bool)AO_char_load((unsigned char *)&GC_collecting))
#else