aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/include
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2013-10-09 12:17:18 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2013-10-29 07:06:09 -0400
commit775ebcc16b940ebf61bf54d6054a5e639f68b9d6 (patch)
tree82d626994ad89ae7d23475721e3f11df798114bc /arch/arm/include
parent2523c67bb6962f98193dce1c73b6efb65a6ea92c (diff)
ARM: 7853/1: cmpxchg: implement cmpxchg64_relaxed
This patch introduces cmpxchg64_relaxed for arm, which performs a 64-bit cmpxchg operation without barrier semantics. cmpxchg64_local is updated to use the new operation. Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include')
-rw-r--r--arch/arm/include/asm/cmpxchg.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h
index fbd978fc248f..df2fbba7efc8 100644
--- a/arch/arm/include/asm/cmpxchg.h
+++ b/arch/arm/include/asm/cmpxchg.h
@@ -270,11 +270,13 @@ static inline unsigned long long __cmpxchg64_mb(unsigned long long *ptr,
270 (unsigned long long)(o), \ 270 (unsigned long long)(o), \
271 (unsigned long long)(n))) 271 (unsigned long long)(n)))
272 272
273#define cmpxchg64_local(ptr, o, n) \ 273#define cmpxchg64_relaxed(ptr, o, n) \
274 ((__typeof__(*(ptr)))__cmpxchg64((ptr), \ 274 ((__typeof__(*(ptr)))__cmpxchg64((ptr), \
275 (unsigned long long)(o), \ 275 (unsigned long long)(o), \
276 (unsigned long long)(n))) 276 (unsigned long long)(n)))
277 277
278#define cmpxchg64_local(ptr, o, n) cmpxchg64_relaxed((ptr), (o), (n))
279
278#endif /* __LINUX_ARM_ARCH__ >= 6 */ 280#endif /* __LINUX_ARM_ARCH__ >= 6 */
279 281
280#endif /* __ASM_ARM_CMPXCHG_H */ 282#endif /* __ASM_ARM_CMPXCHG_H */