X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=arch%2Farm64%2Finclude%2Fasm%2Fspinlock.h;h=3d5cf064d7a1702992cb89d0fe0914475ae4b1ee;hb=5686b06cea34e31ec0a549d9b5ac00776e8e8d6d;hp=525dd535443e8ec99dcb14bdf5972401fa32514e;hpb=52ea2a560a9dba57fe5fd6b4726b1089751accf2;p=~andy%2Flinux diff --git a/arch/arm64/include/asm/spinlock.h b/arch/arm64/include/asm/spinlock.h index 525dd535443..3d5cf064d7a 100644 --- a/arch/arm64/include/asm/spinlock.h +++ b/arch/arm64/include/asm/spinlock.h @@ -92,10 +92,14 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock) : "memory"); } +static inline int arch_spin_value_unlocked(arch_spinlock_t lock) +{ + return lock.owner == lock.next; +} + static inline int arch_spin_is_locked(arch_spinlock_t *lock) { - arch_spinlock_t lockval = ACCESS_ONCE(*lock); - return lockval.owner != lockval.next; + return !arch_spin_value_unlocked(ACCESS_ONCE(*lock)); } static inline int arch_spin_is_contended(arch_spinlock_t *lock)