diff options
author | Jake Burkholder <jake@FreeBSD.org> | 2002-03-13 03:28:47 +0000 |
---|---|---|
committer | Jake Burkholder <jake@FreeBSD.org> | 2002-03-13 03:28:47 +0000 |
commit | 453e54056e201ec7f9a363934129c24485168c82 (patch) | |
tree | 780df0e3e82efd0959942a12aee65faa687087d4 /sys/sparc64/include/asmacros.h | |
parent | b8d44516407f24b66c1447960a46c5b791dff202 (diff) | |
download | src-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.h | 15 |
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 |