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:
@@ -45,6 +45,7 @@
|
|||||||
* arm7 architecture does have both 32 and 64bit atomics, however
|
* arm7 architecture does have both 32 and 64bit atomics, however
|
||||||
* it's gcc doesn't have __GCC_HAVE_SYNC_COMPARE_AND_SWAP_n defined.
|
* 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_8
|
||||||
# define JE_FORCE_SYNC_COMPARE_AND_SWAP_4
|
# define JE_FORCE_SYNC_COMPARE_AND_SWAP_4
|
||||||
#endif
|
#endif
|
||||||
@@ -399,6 +400,12 @@ atomic_fetch_and_and_uint8(uint8_t *p, uint8_t b)
|
|||||||
return _InterlockedAnd8((char *)p, (char)b);
|
return _InterlockedAnd8((char *)p, (char)b);
|
||||||
#endif
|
#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
|
#else
|
||||||
# error "Missing implementation for 8-bit atomic operations"
|
# error "Missing implementation for 8-bit atomic operations"
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user