Author: dougb
Date: Wed Jul  6 00:47:27 2011
New Revision: 223811
URL: http://svn.freebsd.org/changeset/base/223811

Log:
  Apply bug fixes
  
  Submitted by: marius

Modified:
  head/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h

Modified: head/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h
==============================================================================
--- head/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h     Tue Jul  5 
23:31:40 2011        (r223810)
+++ head/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h     Wed Jul  6 
00:47:27 2011        (r223811)
@@ -72,9 +72,9 @@ isc_atomic_xadd(isc_int32_t *p, isc_int3
        for (prev = *(volatile isc_int32_t *)p; ; prev = swapped) {
                swapped = prev + val;
                __asm__ volatile(
-                       "casa [%1] %2, %3, %0"
-                       : "+r"(swapped)
-                       : "r"(p), "n"(ASI_P), "r"(prev));
+                       "casa [%2] %3, %4, %0"
+                       : "+r"(swapped), "=m"(*p)
+                       : "r"(p), "n"(ASI_P), "r"(prev), "m"(*p));
                if (swapped == prev)
                        break;
        }
@@ -92,10 +92,9 @@ isc_atomic_store(isc_int32_t *p, isc_int
        for (prev = *(volatile isc_int32_t *)p; ; prev = swapped) {
                swapped = val;
                __asm__ volatile(
-                       "casa [%1] %2, %3, %0"
-                       : "+r"(swapped)
-                       : "r"(p), "n"(ASI_P), "r"(prev)
-                       : "memory");
+                       "casa [%2] %3, %4, %0"
+                       : "+r"(swapped), "=m"(*p)
+                       : "r"(p), "n"(ASI_P), "r"(prev), "m"(*p));
                if (swapped == prev)
                        break;
        }
@@ -111,9 +110,9 @@ isc_atomic_cmpxchg(isc_int32_t *p, isc_i
        isc_int32_t temp = val;
 
        __asm__ volatile(
-               "casa [%1] %2, %3, %0"
-               : "+r"(temp)
-               : "r"(p), "n"(ASI_P), "r"(cmpval));
+               "casa [%2] %3, %4, %0"
+               : "+r"(temp), "=m"(*p)
+               : "r"(p), "n"(ASI_P), "r"(cmpval), "m"(*p));
 
        return (temp);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to