arm64: Use acquire/release semantics instead of explicit DMB
authorCatalin Marinas <catalin.marinas@arm.com>
Tue, 30 Apr 2013 14:58:37 +0000 (15:58 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 30 Apr 2013 14:58:37 +0000 (15:58 +0100)
This patch changes the test_and_*_bit functions to use the
load-acquire/store-release instructions instead of explicit DMB.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/lib/bitops.S

index eaed8bb..36216d3 100644 (file)
@@ -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  )