diff options
author | Peter Zijlstra <peterz@infradead.org> | 2014-04-23 13:47:25 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2015-07-27 08:06:23 -0400 |
commit | aebea9359623b58b54242e5daa24e09d6104977b (patch) | |
tree | 2a78f36a9be0d5d5a66b1dac049ef63ff6a5cd93 /arch/parisc | |
parent | ddb7573ff68964e7b3b72eeb9cde1384c4c6ba83 (diff) |
parisc: Provide atomic_{or,xor,and}
Implement atomic logic ops -- atomic_{or,xor,and}.
These will replace the atomic_{set,clear}_mask functions that are
available on some archs.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/include/asm/atomic.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h index 226f8ca993f6..be2c50ddebd6 100644 --- a/arch/parisc/include/asm/atomic.h +++ b/arch/parisc/include/asm/atomic.h | |||
@@ -126,6 +126,12 @@ static __inline__ int atomic_##op##_return(int i, atomic_t *v) \ | |||
126 | ATOMIC_OPS(add, +=) | 126 | ATOMIC_OPS(add, +=) |
127 | ATOMIC_OPS(sub, -=) | 127 | ATOMIC_OPS(sub, -=) |
128 | 128 | ||
129 | #define CONFIG_ARCH_HAS_ATOMIC_OR | ||
130 | |||
131 | ATOMIC_OP(and, &=) | ||
132 | ATOMIC_OP(or, |=) | ||
133 | ATOMIC_OP(xor, ^=) | ||
134 | |||
129 | #undef ATOMIC_OPS | 135 | #undef ATOMIC_OPS |
130 | #undef ATOMIC_OP_RETURN | 136 | #undef ATOMIC_OP_RETURN |
131 | #undef ATOMIC_OP | 137 | #undef ATOMIC_OP |
@@ -185,6 +191,9 @@ static __inline__ s64 atomic64_##op##_return(s64 i, atomic64_t *v) \ | |||
185 | 191 | ||
186 | ATOMIC64_OPS(add, +=) | 192 | ATOMIC64_OPS(add, +=) |
187 | ATOMIC64_OPS(sub, -=) | 193 | ATOMIC64_OPS(sub, -=) |
194 | ATOMIC64_OP(and, &=) | ||
195 | ATOMIC64_OP(or, |=) | ||
196 | ATOMIC64_OP(xor, ^=) | ||
188 | 197 | ||
189 | #undef ATOMIC64_OPS | 198 | #undef ATOMIC64_OPS |
190 | #undef ATOMIC64_OP_RETURN | 199 | #undef ATOMIC64_OP_RETURN |