svn commit: r279338 - head/sys/arm/include
Ian Lepore
ian at FreeBSD.org
Thu Feb 26 23:05:48 UTC 2015
Author: ian
Date: Thu Feb 26 23:05:46 2015
New Revision: 279338
URL: https://svnweb.freebsd.org/changeset/base/279338
Log:
Add casting to make atomic ops work for pointers. (Apparently nobody has
ever done atomic ops on pointers before now on arm).
Submitted by: Svatopluk Kraus <onwahe at gmail.com>
Modified:
head/sys/arm/include/atomic.h
Modified: head/sys/arm/include/atomic.h
==============================================================================
--- head/sys/arm/include/atomic.h Thu Feb 26 22:46:01 2015 (r279337)
+++ head/sys/arm/include/atomic.h Thu Feb 26 23:05:46 2015 (r279338)
@@ -1103,13 +1103,23 @@ atomic_store_long(volatile u_long *dst,
*dst = src;
}
-#define atomic_clear_ptr atomic_clear_32
-#define atomic_set_ptr atomic_set_32
-#define atomic_cmpset_ptr atomic_cmpset_32
-#define atomic_cmpset_rel_ptr atomic_cmpset_rel_32
-#define atomic_cmpset_acq_ptr atomic_cmpset_acq_32
-#define atomic_store_ptr atomic_store_32
-#define atomic_store_rel_ptr atomic_store_rel_32
+#define atomic_clear_ptr(p, v) \
+ atomic_clear_32((volatile uint32_t *)(p), (uint32_t)(v))
+#define atomic_set_ptr(p, v) \
+ atomic_set_32((volatile uint32_t *)(p), (uint32_t)(v))
+#define atomic_cmpset_ptr(p, cmpval, newval) \
+ atomic_cmpset_32((volatile u_int32_t *)(p), (u_int32_t)(cmpval), \
+ (u_int32_t)(newval))
+#define atomic_cmpset_rel_ptr(p, cmpval, newval) \
+ atomic_cmpset_rel_32((volatile u_int32_t *)(p), (u_int32_t)(cmpval), \
+ (u_int32_t)(newval))
+#define atomic_cmpset_acq_ptr(p, cmpval, newval) \
+ atomic_cmpset_acq_32((volatile u_int32_t *)(p), (u_int32_t)(cmpval), \
+ (u_int32_t)(newval))
+#define atomic_store_ptr(p, v) \
+ atomic_store_32((volatile uint32_t *)(p), (uint32_t)(v))
+#define atomic_store_rel_ptr(p, v) \
+ atomic_store_rel_32((volatile uint32_t *)(p), (uint32_t)(v))
#define atomic_add_int atomic_add_32
#define atomic_add_acq_int atomic_add_acq_32
More information about the svn-src-head
mailing list