diff options
author | Will Deacon <will.deacon@arm.com> | 2015-04-23 20:08:49 +0100 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2015-07-27 15:28:51 +0100 |
commit | c342f78217e822d2178265b0b1de232eeb717149 (patch) | |
tree | 2c1de7284bb6671aa9cb4e8a0f85a119d64de3a2 /arch/arm64/include/asm/atomic.h | |
parent | c8366ba0fb65063b6b4f69c7af1ea74152435590 (diff) | |
download | lwn-c342f78217e822d2178265b0b1de232eeb717149.tar.gz lwn-c342f78217e822d2178265b0b1de232eeb717149.zip |
arm64: cmpxchg: patch in lse instructions when supported by the CPU
On CPUs which support the LSE atomic instructions introduced in ARMv8.1,
it makes sense to use them in preference to ll/sc sequences.
This patch introduces runtime patching of our cmpxchg primitives so that
the LSE cas instruction is used instead.
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/include/asm/atomic.h')
-rw-r--r-- | arch/arm64/include/asm/atomic.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/atomic.h b/arch/arm64/include/asm/atomic.h index 836226d5e12c..1fe8f209aeb4 100644 --- a/arch/arm64/include/asm/atomic.h +++ b/arch/arm64/include/asm/atomic.h @@ -24,7 +24,6 @@ #include <linux/types.h> #include <asm/barrier.h> -#include <asm/cmpxchg.h> #include <asm/lse.h> #define ATOMIC_INIT(i) { (i) } @@ -41,6 +40,8 @@ #undef __ARM64_IN_ATOMIC_IMPL +#include <asm/cmpxchg.h> + /* * On ARM, ordinary assignment (str instruction) doesn't clear the local * strex/ldrex monitor on some implementations. The reason we can use it for |