diff options
author | Will Deacon <will.deacon@arm.com> | 2013-10-09 12:17:18 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-10-29 07:06:09 -0400 |
commit | 775ebcc16b940ebf61bf54d6054a5e639f68b9d6 (patch) | |
tree | 82d626994ad89ae7d23475721e3f11df798114bc /arch/arm/include | |
parent | 2523c67bb6962f98193dce1c73b6efb65a6ea92c (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.h | 4 |
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 */ |