Separated out the minimum functionality that we need from gcc for our spinlock fallback.
This commit is contained in:
parent
68afef61c9
commit
2c31531800
3 changed files with 14 additions and 1 deletions
12
configure.in
12
configure.in
|
@ -312,6 +312,18 @@ if test x$enable_gcc_atomics = xyes; then
|
|||
if test x$have_gcc_atomics = xyes; then
|
||||
AC_DEFINE(HAVE_GCC_ATOMICS)
|
||||
fi
|
||||
|
||||
# See if we have the minimum operation needed for GCC atomics
|
||||
AC_TRY_LINK([
|
||||
],[
|
||||
int a;
|
||||
__sync_lock_test_and_set(&a, 1);
|
||||
],[
|
||||
have_gcc_sync_lock_test_and_set=yes
|
||||
])
|
||||
if test x$have_gcc_sync_lock_test_and_set = xyes; then
|
||||
AC_DEFINE(HAVE_GCC_SYNC_LOCK_TEST_AND_SET)
|
||||
fi
|
||||
fi
|
||||
|
||||
# Standard C sources
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
#undef SIZEOF_VOIDP
|
||||
#undef SDL_HAS_64BIT_TYPE
|
||||
#undef HAVE_GCC_ATOMICS
|
||||
#undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET
|
||||
|
||||
/* Comment this if you want to build without any C library requirements */
|
||||
#undef HAVE_LIBC
|
||||
|
|
|
@ -36,7 +36,7 @@ SDL_AtomicTryLock(SDL_SpinLock *lock)
|
|||
#elif defined(__MACOSX__)
|
||||
return OSAtomicCompareAndSwap32Barrier(0, 1, lock);
|
||||
|
||||
#elif defined(HAVE_GCC_ATOMICS)
|
||||
#elif defined(HAVE_GCC_SYNC_LOCK_TEST_AND_SET)
|
||||
return (__sync_lock_test_and_set(lock, 1) == 0);
|
||||
|
||||
#elif defined(__GNUC__) && defined(__arm__) && defined(__ARM_ARCH_5__)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue