Lines Matching refs:val
106 u32 val; in arch_read_trylock() local
108 val = __insn_tns((int *)&rwlock->lock); in arch_read_trylock()
109 if (likely((val << _RD_COUNT_WIDTH) == 0)) { in arch_read_trylock()
110 val += 1 << RD_COUNT_SHIFT; in arch_read_trylock()
111 rwlock->lock = val; in arch_read_trylock()
113 BUG_ON(val == 0); /* we don't expect wraparound */ in arch_read_trylock()
116 if ((val & 1) == 0) in arch_read_trylock()
117 rwlock->lock = val; in arch_read_trylock()
141 u32 val, iterations = 0; in arch_read_unlock() local
146 val = __insn_tns((int *)&rwlock->lock); in arch_read_unlock()
147 if (likely((val & 1) == 0)) { in arch_read_unlock()
148 rwlock->lock = val - (1 << _RD_COUNT_SHIFT); in arch_read_unlock()
172 u32 val = __insn_tns((int *)&rwlock->lock); in arch_write_lock() local
174 if (likely(val == 0)) { in arch_write_lock()
184 if (!(val & 1)) { in arch_write_lock()
185 if ((val >> RD_COUNT_SHIFT) == 0) in arch_write_lock()
187 rwlock->lock = val; in arch_write_lock()
190 val = __insn_tns((int *)&rwlock->lock); in arch_write_lock()
194 rwlock->lock = __insn_addb(val, 1 << WR_NEXT_SHIFT); in arch_write_lock()
195 my_ticket_ = val >> WR_NEXT_SHIFT; in arch_write_lock()
199 u32 curr_ = val >> WR_CURR_SHIFT; in arch_write_lock()
212 while ((val = rwlock->lock) & 1) in arch_write_lock()
220 u32 val = __insn_tns((int *)&rwlock->lock); in arch_write_trylock() local
226 if (unlikely(val != 0)) { in arch_write_trylock()
227 if (!(val & 1)) in arch_write_trylock()
228 rwlock->lock = val; in arch_write_trylock()
240 u32 val, eq, mask; in arch_write_unlock() local
243 val = __insn_tns((int *)&rwlock->lock); in arch_write_unlock()
244 if (likely(val == (1 << _WR_NEXT_SHIFT))) { in arch_write_unlock()
248 while (unlikely(val & 1)) { in arch_write_unlock()
251 val = __insn_tns((int *)&rwlock->lock); in arch_write_unlock()
254 val = __insn_addb(val, mask); in arch_write_unlock()
255 eq = __insn_seqb(val, val << (WR_CURR_SHIFT - WR_NEXT_SHIFT)); in arch_write_unlock()
256 val = __insn_mz(eq & mask, val); in arch_write_unlock()
257 rwlock->lock = val; in arch_write_unlock()