Lines Matching refs:lock
45 static inline int arch_spin_is_locked(arch_spinlock_t *lock) in arch_spin_is_locked() argument
47 u32 val = lock->lock; in arch_spin_is_locked()
52 static inline void arch_spin_unlock(arch_spinlock_t *lock) in arch_spin_unlock() argument
55 __insn_fetchadd4(&lock->lock, 1U << __ARCH_SPIN_CURRENT_SHIFT); in arch_spin_unlock()
58 void arch_spin_unlock_wait(arch_spinlock_t *lock);
60 void arch_spin_lock_slow(arch_spinlock_t *lock, u32 val);
66 static inline void arch_spin_lock(arch_spinlock_t *lock) in arch_spin_lock() argument
68 u32 val = __insn_fetchadd4(&lock->lock, 1); in arch_spin_lock()
71 arch_spin_lock_slow(lock, ticket); in arch_spin_lock()
75 int arch_spin_trylock(arch_spinlock_t *lock);
78 #define arch_spin_lock_flags(lock, flags) arch_spin_lock(lock) argument
101 return !arch_write_val_locked(rw->lock); in arch_read_can_lock()
110 return rw->lock == 0; in arch_write_can_lock()
117 u32 val = __insn_fetchaddgez4(&rw->lock, 1); in arch_read_lock()
126 u32 val = __insn_fetchor4(&rw->lock, __WRITE_LOCK_BIT); in arch_write_lock()
134 __insn_fetchadd4(&rw->lock, -1); in arch_read_unlock()
140 __insn_exch4(&rw->lock, 0); /* Avoid waiting in the write buffer. */ in arch_write_unlock()
145 return !arch_write_val_locked(__insn_fetchaddgez4(&rw->lock, 1)); in arch_read_trylock()
150 u32 val = __insn_fetchor4(&rw->lock, __WRITE_LOCK_BIT); in arch_write_trylock()
154 __insn_fetchand4(&rw->lock, ~__WRITE_LOCK_BIT); in arch_write_trylock()
158 #define arch_read_lock_flags(lock, flags) arch_read_lock(lock) argument
159 #define arch_write_lock_flags(lock, flags) arch_write_lock(lock) argument