]> Pileus Git - ~andy/linux/blobdiff - arch/arm64/include/asm/spinlock.h
arm64: lockref: add support for lockless lockrefs using cmpxchg
[~andy/linux] / arch / arm64 / include / asm / spinlock.h
index 525dd535443e8ec99dcb14bdf5972401fa32514e..3d5cf064d7a1702992cb89d0fe0914475ae4b1ee 100644 (file)
@@ -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)