Author: cem
Date: Mon Mar 23 23:00:13 2020
New Revision: 359264
URL: https://svnweb.freebsd.org/changeset/base/359264

Log:
  arm: Fix atomic long APIs to correct 'u_long' signedness
  
  As defined in atomic(9) and implemented on other architectures, the
  atomic(9) functions all act on unsigned pointers and types.  Prior to this
  revision, arm implemented some atomic(9) 'long' sized routines with correct
  unsigned type, but others were incorrectly signed.
  
  Reviewed by:  tinderbox
  Sponsored by: Dell EMC Isilon

Modified:
  head/sys/arm/include/atomic-v6.h

Modified: head/sys/arm/include/atomic-v6.h
==============================================================================
--- head/sys/arm/include/atomic-v6.h    Mon Mar 23 21:26:32 2020        
(r359263)
+++ head/sys/arm/include/atomic-v6.h    Mon Mar 23 23:00:13 2020        
(r359264)
@@ -325,31 +325,31 @@ atomic_fcmpset_rel_32(volatile uint32_t *_ptr, uint32_
 }
 
 static __inline int
-atomic_fcmpset_long(volatile long *_ptr, long *_old, long _new)
+atomic_fcmpset_long(volatile u_long *_ptr, u_long *_old, u_long _new)
 {
        int ret;
 
-       ATOMIC_FCMPSET_CODE(ret, long, "");
+       ATOMIC_FCMPSET_CODE(ret, u_long, "");
        return (ret);
 }
 
 static __inline int
-atomic_fcmpset_acq_long(volatile long *_ptr, long *_old, long _new)
+atomic_fcmpset_acq_long(volatile u_long *_ptr, u_long *_old, u_long _new)
 {
        int ret;
 
-       ATOMIC_FCMPSET_CODE(ret, long, "");
+       ATOMIC_FCMPSET_CODE(ret, u_long, "");
        dmb();
        return (ret);
 }
 
 static __inline int
-atomic_fcmpset_rel_long(volatile long *_ptr, long *_old, long _new)
+atomic_fcmpset_rel_long(volatile u_long *_ptr, u_long *_old, u_long _new)
 {
        int ret;
 
        dmb();
-       ATOMIC_FCMPSET_CODE(ret, long, "");
+       ATOMIC_FCMPSET_CODE(ret, u_long, "");
        return (ret);
 }
 
@@ -509,7 +509,7 @@ atomic_cmpset_rel_32(volatile uint32_t *_ptr, uint32_t
 }
 
 static __inline int
-atomic_cmpset_long(volatile long *_ptr, long _old, long _new)
+atomic_cmpset_long(volatile u_long *_ptr, u_long _old, u_long _new)
 {
        int ret;
 
@@ -518,7 +518,7 @@ atomic_cmpset_long(volatile long *_ptr, long _old, lon
 }
 
 static __inline int
-atomic_cmpset_acq_long(volatile long *_ptr, long _old, long _new)
+atomic_cmpset_acq_long(volatile u_long *_ptr, u_long _old, u_long _new)
 {
        int ret;
 
@@ -528,7 +528,7 @@ atomic_cmpset_acq_long(volatile long *_ptr, long _old,
 }
 
 static __inline int
-atomic_cmpset_rel_long(volatile long *_ptr, long _old, long _new)
+atomic_cmpset_rel_long(volatile u_long *_ptr, u_long _old, u_long _new)
 {
        int ret;
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to