Fix compilation error on Armel architecture

__GCC_HAVE_SYNC_COMPARE_AND_SWAP_n are not defined on this architecture
for some reason, however those functions are available.

Adding a workaround for newly used __sync_fetch_and_and() function.
This commit is contained in:
Sergey Sharybin 2016-05-02 09:55:08 +02:00
parent 4e4ff72d13
commit c1ca667d4a
1 changed files with 7 additions and 0 deletions

View File

@ -45,6 +45,7 @@
* arm7 architecture does have both 32 and 64bit atomics, however
* it's gcc doesn't have __GCC_HAVE_SYNC_COMPARE_AND_SWAP_n defined.
*/
# define JE_FORCE_SYNC_COMPARE_AND_SWAP_1
# define JE_FORCE_SYNC_COMPARE_AND_SWAP_8
# define JE_FORCE_SYNC_COMPARE_AND_SWAP_4
#endif
@ -399,6 +400,12 @@ atomic_fetch_and_and_uint8(uint8_t *p, uint8_t b)
return _InterlockedAnd8((char *)p, (char)b);
#endif
}
#elif defined(JE_FORCE_SYNC_COMPARE_AND_SWAP_1)
ATOMIC_INLINE uint8_t
atomic_fetch_and_and_uint8(uint8_t *p, uint8_t b)
{
return __sync_fetch_and_and(p, b);
}
#else
# error "Missing implementation for 8-bit atomic operations"
#endif