summaryrefslogtreecommitdiffstats
path: root/arch/sparc/include/asm/atomic_32.h
diff options
context:
space:
mode:
authorAndreas Larsson <andreas@gaisler.com>2014-11-05 15:52:08 +0100
committerDavid S. Miller <davem@davemloft.net>2014-11-07 12:51:44 -0800
commit1a17fdc4f4ed06b63fac1937470378a5441a663a (patch)
tree1590a724b9a40458ba1a990ceb41fc51839196fc /arch/sparc/include/asm/atomic_32.h
parentab5c780913bca0a5763ca05dd5c2cb5cb08ccb26 (diff)
sparc32: Implement xchg and atomic_xchg using ATOMIC_HASH locks
Atomicity between xchg and cmpxchg cannot be guaranteed when xchg is implemented with a swap and cmpxchg is implemented with locks. Without this, e.g. mcs_spin_lock and mcs_spin_unlock are broken. Signed-off-by: Andreas Larsson <andreas@gaisler.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include/asm/atomic_32.h')
-rw-r--r--arch/sparc/include/asm/atomic_32.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/sparc/include/asm/atomic_32.h b/arch/sparc/include/asm/atomic_32.h
index 765c1776ec9f..0e69b7e7a439 100644
--- a/arch/sparc/include/asm/atomic_32.h
+++ b/arch/sparc/include/asm/atomic_32.h
@@ -22,7 +22,7 @@
int atomic_add_return(int, atomic_t *);
int atomic_cmpxchg(atomic_t *, int, int);
-#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
+int atomic_xchg(atomic_t *, int);
int __atomic_add_unless(atomic_t *, int, int);
void atomic_set(atomic_t *, int);