diff options
Diffstat (limited to 'arch/tile/include/asm/atomic.h')
| -rw-r--r-- | arch/tile/include/asm/atomic.h | 50 | 
1 files changed, 2 insertions, 48 deletions
diff --git a/arch/tile/include/asm/atomic.h b/arch/tile/include/asm/atomic.h index bb696da5d7c..f2461429a4a 100644 --- a/arch/tile/include/asm/atomic.h +++ b/arch/tile/include/asm/atomic.h @@ -17,6 +17,8 @@  #ifndef _ASM_TILE_ATOMIC_H  #define _ASM_TILE_ATOMIC_H +#include <asm/cmpxchg.h> +  #ifndef __ASSEMBLY__  #include <linux/compiler.h> @@ -121,54 +123,6 @@ static inline int atomic_read(const atomic_t *v)   */  #define atomic_add_negative(i, v)	(atomic_add_return((i), (v)) < 0) -/* Nonexistent functions intended to cause link errors. */ -extern unsigned long __xchg_called_with_bad_pointer(void); -extern unsigned long __cmpxchg_called_with_bad_pointer(void); - -#define xchg(ptr, x)							\ -	({								\ -		typeof(*(ptr)) __x;					\ -		switch (sizeof(*(ptr))) {				\ -		case 4:							\ -			__x = (typeof(__x))(typeof(__x-__x))atomic_xchg( \ -				(atomic_t *)(ptr),			\ -				(u32)(typeof((x)-(x)))(x));		\ -			break;						\ -		case 8:							\ -			__x = (typeof(__x))(typeof(__x-__x))atomic64_xchg( \ -				(atomic64_t *)(ptr),			\ -				(u64)(typeof((x)-(x)))(x));		\ -			break;						\ -		default:						\ -			__xchg_called_with_bad_pointer();		\ -		}							\ -		__x;							\ -	}) - -#define cmpxchg(ptr, o, n)						\ -	({								\ -		typeof(*(ptr)) __x;					\ -		switch (sizeof(*(ptr))) {				\ -		case 4:							\ -			__x = (typeof(__x))(typeof(__x-__x))atomic_cmpxchg( \ -				(atomic_t *)(ptr),			\ -				(u32)(typeof((o)-(o)))(o),		\ -				(u32)(typeof((n)-(n)))(n));		\ -			break;						\ -		case 8:							\ -			__x = (typeof(__x))(typeof(__x-__x))atomic64_cmpxchg( \ -				(atomic64_t *)(ptr),			\ -				(u64)(typeof((o)-(o)))(o),		\ -				(u64)(typeof((n)-(n)))(n));		\ -			break;						\ -		default:						\ -			__cmpxchg_called_with_bad_pointer();		\ -		}							\ -		__x;							\ -	}) - -#define tas(ptr) (xchg((ptr), 1)) -  #endif /* __ASSEMBLY__ */  #ifndef __tilegx__  |