[ARM] barriers: improve xchg, bitops and atomic SMP barriers
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Mon, 25 May 2009 19:58:00 +0000 (20:58 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 28 May 2009 18:39:27 +0000 (19:39 +0100)
commitbac4e960b5ce2453d862beaf20e59aa68af3b43a
tree69ba3b450a769fa4a613a1f8c4e6454cdcfae5aa
parent290815710b51de23f9ed6799d3e0bb762d4f907c
[ARM] barriers: improve xchg, bitops and atomic SMP barriers

Mathieu Desnoyers pointed out that the ARM barriers were lacking:

- cmpxchg, xchg and atomic add return need memory barriers on
  architectures which can reorder the relative order in which memory
  read/writes can be seen between CPUs, which seems to include recent
  ARM architectures. Those barriers are currently missing on ARM.

- test_and_xxx_bit were missing SMP barriers.

So put these barriers in.  Provide separate atomic_add/atomic_sub
operations which do not require barriers.

Reported-Reviewed-and-Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/include/asm/assembler.h
arch/arm/include/asm/atomic.h
arch/arm/include/asm/system.h
arch/arm/kernel/entry-armv.S
arch/arm/lib/bitops.h