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 <onw...@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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to