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 e42cf597f6e6..53e69dae796f 100644 --- a/arch/arm/include/asm/futex.h +++ b/arch/arm/include/asm/futex.h | |||
@@ -3,11 +3,6 @@ | |||
3 | 3 | ||
4 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
5 | 5 | ||
6 | #if defined(CONFIG_CPU_USE_DOMAINS) && defined(CONFIG_SMP) | ||
7 | /* ARM doesn't provide unprivileged exclusive memory accessors */ | ||
8 | #include <asm-generic/futex.h> | ||
9 | #else | ||
10 | |||
11 | #include <linux/futex.h> | 6 | #include <linux/futex.h> |
12 | #include <linux/uaccess.h> | 7 | #include <linux/uaccess.h> |
13 | #include <asm/errno.h> | 8 | #include <asm/errno.h> |
@@ -28,6 +23,7 @@ | |||
28 | 23 | ||
29 | #define __futex_atomic_op(insn, ret, oldval, tmp, uaddr, oparg) \ | 24 | #define __futex_atomic_op(insn, ret, oldval, tmp, uaddr, oparg) \ |
30 | smp_mb(); \ | 25 | smp_mb(); \ |
26 | prefetchw(uaddr); \ | ||
31 | __asm__ __volatile__( \ | 27 | __asm__ __volatile__( \ |
32 | "1: ldrex %1, [%3]\n" \ | 28 | "1: ldrex %1, [%3]\n" \ |
33 | " " insn "\n" \ | 29 | " " insn "\n" \ |
@@ -51,6 +47,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, | |||
51 | return -EFAULT; | 47 | return -EFAULT; |
52 | 48 | ||
53 | smp_mb(); | 49 | smp_mb(); |
50 | /* Prefetching cannot fault */ | ||
51 | prefetchw(uaddr); | ||
54 | __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n" | 52 | __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n" |
55 | "1: ldrex %1, [%4]\n" | 53 | "1: ldrex %1, [%4]\n" |
56 | " teq %1, %2\n" | 54 | " teq %1, %2\n" |
@@ -164,6 +162,5 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr) | |||
164 | return ret; | 162 | return ret; |
165 | } | 163 | } |
166 | 164 | ||
167 | #endif /* !(CPU_USE_DOMAINS && SMP) */ | ||
168 | #endif /* __KERNEL__ */ | 165 | #endif /* __KERNEL__ */ |
169 | #endif /* _ASM_ARM_FUTEX_H */ | 166 | #endif /* _ASM_ARM_FUTEX_H */ |