summaryrefslogtreecommitdiffstats
path: root/sys/cddl
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2011-10-16 22:18:08 +0000
committermarcel <marcel@FreeBSD.org>2011-10-16 22:18:08 +0000
commitb526ecc3e052700869051c3ee381b15035b9529b (patch)
tree2df39d0abaf6fb3265b09e22d9042432de0c2f33 /sys/cddl
parentdd2b5b91ebc744aa49cd0ed17b61b943d8b108e3 (diff)
downloadFreeBSD-src-b526ecc3e052700869051c3ee381b15035b9529b.zip
FreeBSD-src-b526ecc3e052700869051c3ee381b15035b9529b.tar.gz
Define dtrace_cmpset_long in terms of atomic_cmpset_long
and not by virtue of inline assembly. Now this file compiles on all supported architectures.
Diffstat (limited to 'sys/cddl')
-rw-r--r--sys/cddl/dev/dtrace/dtrace_debug.c46
1 files changed, 3 insertions, 43 deletions
diff --git a/sys/cddl/dev/dtrace/dtrace_debug.c b/sys/cddl/dev/dtrace/dtrace_debug.c
index 03af9aa..7202fe2 100644
--- a/sys/cddl/dev/dtrace/dtrace_debug.c
+++ b/sys/cddl/dev/dtrace/dtrace_debug.c
@@ -31,49 +31,9 @@
#ifdef DEBUG
-#if defined(__amd64__)
-static __inline int
-dtrace_cmpset_long(volatile u_long *dst, u_long exp, u_long src)
-{
- u_char res;
-
- __asm __volatile(
- " lock ; "
- " cmpxchgq %2,%1 ; "
- " sete %0 ; "
- "1: "
- "# dtrace_cmpset_long"
- : "=a" (res), /* 0 */
- "=m" (*dst) /* 1 */
- : "r" (src), /* 2 */
- "a" (exp), /* 3 */
- "m" (*dst) /* 4 */
- : "memory");
-
- return (res);
-}
-#elif defined(__i386__)
-static __inline int
-dtrace_cmpset_long(volatile u_long *dst, u_long exp, u_long src)
-{
- u_char res;
-
- __asm __volatile(
- " lock ; "
- " cmpxchgl %2,%1 ; "
- " sete %0 ; "
- "1: "
- "# dtrace_cmpset_long"
- : "=a" (res), /* 0 */
- "=m" (*dst) /* 1 */
- : "r" (src), /* 2 */
- "a" (exp), /* 3 */
- "m" (*dst) /* 4 */
- : "memory");
-
- return (res);
-}
-#endif
+#include <machine/atomic.h>
+
+#define dtrace_cmpset_long atomic_cmpset_long
#define DTRACE_DEBUG_BUFR_SIZE (32 * 1024)
OpenPOWER on IntegriCloud