aboutsummaryrefslogtreecommitdiff
path: root/sys/sparc64/include/asmacros.h
diff options
context:
space:
mode:
authorJake Burkholder <jake@FreeBSD.org>2002-03-13 03:28:47 +0000
committerJake Burkholder <jake@FreeBSD.org>2002-03-13 03:28:47 +0000
commit453e54056e201ec7f9a363934129c24485168c82 (patch)
tree780df0e3e82efd0959942a12aee65faa687087d4 /sys/sparc64/include/asmacros.h
parentb8d44516407f24b66c1447960a46c5b791dff202 (diff)
downloadsrc-453e54056e201ec7f9a363934129c24485168c82.tar.gz
src-453e54056e201ec7f9a363934129c24485168c82.zip
Add an ATOMIC_CLEAR_INT macro.
Submitted by: tmm
Notes
Notes: svn path=/head/; revision=92198
Diffstat (limited to 'sys/sparc64/include/asmacros.h')
-rw-r--r--sys/sparc64/include/asmacros.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/sys/sparc64/include/asmacros.h b/sys/sparc64/include/asmacros.h
index c2891491e14b..ead69f1b63f7 100644
--- a/sys/sparc64/include/asmacros.h
+++ b/sys/sparc64/include/asmacros.h
@@ -59,7 +59,7 @@
9: sub r2, 1, r3 ; \
casa [r1] ASI_N, r2, r3 ; \
cmp r2, r3 ; \
- bne,pn %xcc, 9b ; \
+ bne,pn %icc, 9b ; \
mov r3, r2
/*
@@ -70,7 +70,18 @@
9: add r2, 1, r3 ; \
casa [r1] ASI_N, r2, r3 ; \
cmp r2, r3 ; \
- bne,pn %xcc, 9b ; \
+ bne,pn %icc, 9b ; \
+ mov r3, r2
+
+/*
+ * Atomically clear a number of bits of an integer in memory.
+ */
+#define ATOMIC_CLEAR_INT(r1, r2, r3, bits) \
+ lduw [r1], r2 ; \
+9: andn r2, bits, r3 ; \
+ casa [r1] ASI_N, r2, r3 ; \
+ cmp r2, r3 ; \
+ bne,pn %icc, 9b ; \
mov r3, r2
#define PCPU(member) %g7 + PC_ ## member