Loading arch/parisc/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ config PARISC select BUG select HAVE_PERF_EVENTS select GENERIC_ATOMIC64 if !64BIT select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE select HAVE_GENERIC_HARDIRQS select BROKEN_RODATA select GENERIC_IRQ_PROBE Loading arch/parisc/include/asm/atomic.h +23 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,29 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u) #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) /* * atomic64_dec_if_positive - decrement by 1 if old value positive * @v: pointer of type atomic_t * * The function returns the old value of *v minus 1, even if * the atomic variable, v, was not decremented. */ static inline long atomic64_dec_if_positive(atomic64_t *v) { long c, old, dec; c = atomic64_read(v); for (;;) { dec = c - 1; if (unlikely(dec < 0)) break; old = atomic64_cmpxchg((v), c, dec); if (likely(old == c)) break; c = old; } return dec; } #endif /* !CONFIG_64BIT */ Loading Loading
arch/parisc/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ config PARISC select BUG select HAVE_PERF_EVENTS select GENERIC_ATOMIC64 if !64BIT select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE select HAVE_GENERIC_HARDIRQS select BROKEN_RODATA select GENERIC_IRQ_PROBE Loading
arch/parisc/include/asm/atomic.h +23 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,29 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u) #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) /* * atomic64_dec_if_positive - decrement by 1 if old value positive * @v: pointer of type atomic_t * * The function returns the old value of *v minus 1, even if * the atomic variable, v, was not decremented. */ static inline long atomic64_dec_if_positive(atomic64_t *v) { long c, old, dec; c = atomic64_read(v); for (;;) { dec = c - 1; if (unlikely(dec < 0)) break; old = atomic64_cmpxchg((v), c, dec); if (likely(old == c)) break; c = old; } return dec; } #endif /* !CONFIG_64BIT */ Loading