Loading arch/tile/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ config TILE select MODULES_USE_ELF_RELA select HAVE_ARCH_TRACEHOOK select HAVE_SYSCALL_TRACEPOINTS select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE # FIXME: investigate whether we need/want these options. # select HAVE_IOREMAP_PROT Loading arch/tile/include/asm/atomic.h +21 −0 Original line number Diff line number Diff line Loading @@ -131,4 +131,25 @@ static inline int atomic_read(const atomic_t *v) #include <asm/atomic_64.h> #endif #ifndef __ASSEMBLY__ static inline long long atomic64_dec_if_positive(atomic64_t *v) { long 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 /* __ASSEMBLY__ */ #endif /* _ASM_TILE_ATOMIC_H */ Loading
arch/tile/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ config TILE select MODULES_USE_ELF_RELA select HAVE_ARCH_TRACEHOOK select HAVE_SYSCALL_TRACEPOINTS select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE # FIXME: investigate whether we need/want these options. # select HAVE_IOREMAP_PROT Loading
arch/tile/include/asm/atomic.h +21 −0 Original line number Diff line number Diff line Loading @@ -131,4 +131,25 @@ static inline int atomic_read(const atomic_t *v) #include <asm/atomic_64.h> #endif #ifndef __ASSEMBLY__ static inline long long atomic64_dec_if_positive(atomic64_t *v) { long 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 /* __ASSEMBLY__ */ #endif /* _ASM_TILE_ATOMIC_H */