summaryrefslogtreecommitdiff
path: root/arch/arm64/lib
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/lib')
-rw-r--r--arch/arm64/lib/bitops.S6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/arm64/lib/bitops.S b/arch/arm64/lib/bitops.S
index eaed8bbd78fc..36216d30cb9a 100644
--- a/arch/arm64/lib/bitops.S
+++ b/arch/arm64/lib/bitops.S
@@ -46,13 +46,11 @@ ENTRY( \name )
mov x2, #1
add x1, x1, x0, lsr #3 // Get word offset
lsl x4, x2, x3 // Create mask
- smp_dmb ish
-1: ldxr x2, [x1]
+1: ldaxr x2, [x1]
lsr x0, x2, x3 // Save old value of bit
\instr x2, x2, x4 // toggle bit
- stxr w5, x2, [x1]
+ stlxr w5, x2, [x1]
cbnz w5, 1b
- smp_dmb ish
and x0, x0, #1
3: ret
ENDPROC(\name )