summaryrefslogtreecommitdiffstats
path: root/sys/alpha/include
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2002-05-11 04:27:39 +0000
committerjhb <jhb@FreeBSD.org>2002-05-11 04:27:39 +0000
commita2929176d9db88392f6d3d79a92abfa679f762a7 (patch)
tree5433ecb0a3516f6798e0441eff67d4e1fa12cbfe /sys/alpha/include
parentc94931edf30d81eb9084c24694ba4af15517fdad (diff)
downloadFreeBSD-src-a2929176d9db88392f6d3d79a92abfa679f762a7.zip
FreeBSD-src-a2929176d9db88392f6d3d79a92abfa679f762a7.tar.gz
Temporarily disable Jeff's fix for atomic_cmpset_32() to zero-extend the
value we load from memory. gcc3.1 passes in the u_int32_t old value to compare against as a _sign_-extended 64-bit value for some reason (bug?). This is a temporary workaround so kernels work again on alpha.
Diffstat (limited to 'sys/alpha/include')
-rw-r--r--sys/alpha/include/atomic.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/alpha/include/atomic.h b/sys/alpha/include/atomic.h
index 93cdbf6..f5dd718d 100644
--- a/sys/alpha/include/atomic.h
+++ b/sys/alpha/include/atomic.h
@@ -356,7 +356,9 @@ atomic_cmpset_32(volatile u_int32_t* p, u_int32_t cmpval, u_int32_t newval)
__asm __volatile (
"1:\tldl_l %0, %4\n\t" /* load old value */
+#ifdef notyet
"zapnot %0,0xf,%0\n\t" /* Chop of signed bits */
+#endif
"cmpeq %0, %2, %0\n\t" /* compare */
"beq %0, 2f\n\t" /* exit if not equal */
"mov %3, %0\n\t" /* value to store */
OpenPOWER on IntegriCloud