diff options
Diffstat (limited to 'arch/arm/include/asm/futex.h')
| -rw-r--r-- | arch/arm/include/asm/futex.h | 9 | 
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h index e42cf597f6e..53e69dae796 100644 --- a/arch/arm/include/asm/futex.h +++ b/arch/arm/include/asm/futex.h @@ -3,11 +3,6 @@  #ifdef __KERNEL__ -#if defined(CONFIG_CPU_USE_DOMAINS) && defined(CONFIG_SMP) -/* ARM doesn't provide unprivileged exclusive memory accessors */ -#include <asm-generic/futex.h> -#else -  #include <linux/futex.h>  #include <linux/uaccess.h>  #include <asm/errno.h> @@ -28,6 +23,7 @@  #define __futex_atomic_op(insn, ret, oldval, tmp, uaddr, oparg)	\  	smp_mb();						\ +	prefetchw(uaddr);					\  	__asm__ __volatile__(					\  	"1:	ldrex	%1, [%3]\n"				\  	"	" insn "\n"					\ @@ -51,6 +47,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,  		return -EFAULT;  	smp_mb(); +	/* Prefetching cannot fault */ +	prefetchw(uaddr);  	__asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"  	"1:	ldrex	%1, [%4]\n"  	"	teq	%1, %2\n" @@ -164,6 +162,5 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)  	return ret;  } -#endif /* !(CPU_USE_DOMAINS && SMP) */  #endif /* __KERNEL__ */  #endif /* _ASM_ARM_FUTEX_H */  | 
