summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-11-12 18:53:45 +0000
committerjhb <jhb@FreeBSD.org>2001-11-12 18:53:45 +0000
commit0c3e87867faeb5fedd10ede031b2c5573c4154fa (patch)
tree81c46c09b89483d51c0def1030ae042d50d51893 /sys/amd64
parenta2cc9fca25efc8d1ca2cd40cee504b4348bd0188 (diff)
downloadFreeBSD-src-0c3e87867faeb5fedd10ede031b2c5573c4154fa.zip
FreeBSD-src-0c3e87867faeb5fedd10ede031b2c5573c4154fa.tar.gz
Use newer constraints for atomic_cmpset().
Requested by: bde
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/include/atomic.h20
1 files changed, 9 insertions, 11 deletions
diff --git a/sys/amd64/include/atomic.h b/sys/amd64/include/atomic.h
index c3ad67a..0da8133 100644
--- a/sys/amd64/include/atomic.h
+++ b/sys/amd64/include/atomic.h
@@ -120,18 +120,17 @@ atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src)
__asm __volatile(
" pushfl ; "
" cli ; "
- " cmpl %1,%3 ; "
+ " cmpl %0,%2 ; "
" jne 1f ; "
- " movl %2,%3 ; "
+ " movl %1,%2 ; "
"1: "
" sete %%al; "
" movzbl %%al,%0 ; "
" popfl ; "
"# atomic_cmpset_int"
- : "=a" (res) /* 0 (result) */
- : "0" (exp), /* 1 */
- "r" (src), /* 2 */
- "m" (*(dst)) /* 3 */
+ : "+a" (res) /* 0 (result) */
+ : "r" (src), /* 1 */
+ "m" (*(dst)) /* 2 */
: "memory");
return (res);
@@ -144,15 +143,14 @@ atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src)
__asm __volatile (
" " MPLOCKED " "
- " cmpxchgl %2,%3 ; "
+ " cmpxchgl %1,%2 ; "
" setz %%al ; "
" movzbl %%al,%0 ; "
"1: "
"# atomic_cmpset_int"
- : "=a" (res) /* 0 (result) */
- : "0" (exp), /* 1 */
- "r" (src), /* 2 */
- "m" (*(dst)) /* 3 */
+ : "+a" (res) /* 0 (result) */
+ : "r" (src), /* 1 */
+ "m" (*(dst)) /* 2 */
: "memory");
return (res);
OpenPOWER on IntegriCloud