Author: dougb
Date: Wed Jul  6 00:49:35 2011
New Revision: 223813
URL: http://svn.freebsd.org/changeset/base/223813

Log:
  Apply bug fixes
  
  Submitted by: marius

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

Modified: stable/8/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h
==============================================================================
--- stable/8/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h Wed Jul  6 
00:48:31 2011        (r223812)
+++ stable/8/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h Wed Jul  6 
00:49:35 2011        (r223813)
@@ -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);
 }
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to