From 707b4f44791738600fa8de6b5c2df061a23dd78d Mon Sep 17 00:00:00 2001 From: Marius Strobl Date: Tue, 10 May 2011 21:18:45 +0000 Subject: [PATCH] Add an ATOMIC_CLEAR_LONG. --- sys/sparc64/include/asmacros.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sys/sparc64/include/asmacros.h b/sys/sparc64/include/asmacros.h index 840959fa803..777b35a4d18 100644 --- a/sys/sparc64/include/asmacros.h +++ b/sys/sparc64/include/asmacros.h @@ -90,6 +90,17 @@ bne,pn %icc, 9b ; \ mov r3, r2 +/* + * Atomically clear a number of bits of an u_long in memory. + */ +#define ATOMIC_CLEAR_LONG(r1, r2, r3, bits) \ + ldx [r1], r2 ; \ +9: andn r2, bits, r3 ; \ + casxa [r1] ASI_N, r2, r3 ; \ + cmp r2, r3 ; \ + bne,pn %icc, 9b ; \ + mov r3, r2 + #define PCPU(member) PCPU_REG + PC_ ## member #define PCPU_ADDR(member, reg) \ add PCPU_REG, PC_ ## member, reg