Lines Matching refs:val
115 u32 val; in arch_read_trylock() local
117 val = __insn_tns((int *)&rwlock->lock); in arch_read_trylock()
118 if (likely((val << _RD_COUNT_WIDTH) == 0)) { in arch_read_trylock()
119 val += 1 << RD_COUNT_SHIFT; in arch_read_trylock()
120 rwlock->lock = val; in arch_read_trylock()
122 BUG_ON(val == 0); /* we don't expect wraparound */ in arch_read_trylock()
125 if ((val & 1) == 0) in arch_read_trylock()
126 rwlock->lock = val; in arch_read_trylock()
150 u32 val, iterations = 0; in arch_read_unlock() local
155 val = __insn_tns((int *)&rwlock->lock); in arch_read_unlock()
156 if (likely((val & 1) == 0)) { in arch_read_unlock()
157 rwlock->lock = val - (1 << _RD_COUNT_SHIFT); in arch_read_unlock()
181 u32 val = __insn_tns((int *)&rwlock->lock); in arch_write_lock() local
183 if (likely(val == 0)) { in arch_write_lock()
193 if (!(val & 1)) { in arch_write_lock()
194 if ((val >> RD_COUNT_SHIFT) == 0) in arch_write_lock()
196 rwlock->lock = val; in arch_write_lock()
199 val = __insn_tns((int *)&rwlock->lock); in arch_write_lock()
203 rwlock->lock = __insn_addb(val, 1 << WR_NEXT_SHIFT); in arch_write_lock()
204 my_ticket_ = val >> WR_NEXT_SHIFT; in arch_write_lock()
208 u32 curr_ = val >> WR_CURR_SHIFT; in arch_write_lock()
221 while ((val = rwlock->lock) & 1) in arch_write_lock()
229 u32 val = __insn_tns((int *)&rwlock->lock); in arch_write_trylock() local
235 if (unlikely(val != 0)) { in arch_write_trylock()
236 if (!(val & 1)) in arch_write_trylock()
237 rwlock->lock = val; in arch_write_trylock()
249 u32 val, eq, mask; in arch_write_unlock() local
252 val = __insn_tns((int *)&rwlock->lock); in arch_write_unlock()
253 if (likely(val == (1 << _WR_NEXT_SHIFT))) { in arch_write_unlock()
257 while (unlikely(val & 1)) { in arch_write_unlock()
260 val = __insn_tns((int *)&rwlock->lock); in arch_write_unlock()
263 val = __insn_addb(val, mask); in arch_write_unlock()
264 eq = __insn_seqb(val, val << (WR_CURR_SHIFT - WR_NEXT_SHIFT)); in arch_write_unlock()
265 val = __insn_mz(eq & mask, val); in arch_write_unlock()
266 rwlock->lock = val; in arch_write_unlock()