From c1ca667d4a9f42cda9dd7486f9826db07baacd2a Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 2 May 2016 09:55:08 +0200 Subject: 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. --- intern/atomic/atomic_ops.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'intern/atomic') diff --git a/intern/atomic/atomic_ops.h b/intern/atomic/atomic_ops.h index dc06a51f859..06eb8f21da6 100644 --- a/intern/atomic/atomic_ops.h +++ b/intern/atomic/atomic_ops.h @@ -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 -- cgit v1.2.3