svn commit: r223811 - head/contrib/bind9/lib/isc/sparc64/include/isc
Doug Barton
dougb at FreeBSD.org
Wed Jul 6 00:47:27 UTC 2011
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);
}
More information about the svn-src-all
mailing list