svn commit: r336832 - head/sys/sparc64/include
Marius Strobl
marius at FreeBSD.org
Sat Jul 28 15:42:58 UTC 2018
Author: marius
Date: Sat Jul 28 15:42:57 2018
New Revision: 336832
URL: https://svnweb.freebsd.org/changeset/base/336832
Log:
Implement atomic_swap_{32,64,int,long,ptr}(9).
Modified:
head/sys/sparc64/include/atomic.h
Modified: head/sys/sparc64/include/atomic.h
==============================================================================
--- head/sys/sparc64/include/atomic.h Sat Jul 28 12:53:10 2018 (r336831)
+++ head/sys/sparc64/include/atomic.h Sat Jul 28 15:42:57 2018 (r336832)
@@ -154,14 +154,15 @@
e; \
})
-#define atomic_st(p, v, sz) do { \
+#define atomic_st(p, v, sz) ({ \
itype(sz) e, r; \
for (e = *(volatile itype(sz) *)(p);; e = r) { \
r = atomic_cas((p), e, (v), sz); \
if (r == e) \
break; \
} \
-} while (0)
+ e; \
+})
#define atomic_st_acq(p, v, sz) do { \
atomic_st((p), (v), sz); \
@@ -310,6 +311,12 @@ static __inline void \
atomic_store_rel_ ## name(volatile ptype p, vtype v) \
{ \
atomic_st_rel((p), (v), sz); \
+} \
+ \
+static __inline vtype \
+atomic_swap_ ## name(volatile ptype p, vtype v) \
+{ \
+ return ((vtype)atomic_st((p), (v), sz)); \
}
static __inline void
More information about the svn-src-all
mailing list