Lines Matching +full:0 +full:- +full:31

22  *	ColdFire - supports standard bset/bclr/bchg with register operand only
23 * 68000 - supports standard bset/bclr/bchg with memory operand
24 * >= 68020 - also supports the bfset/bfclr/bfchg instructions
33 char *p = (char *)vaddr + (nr ^ 31) / 8; in bset_reg_set_bit()
35 __asm__ __volatile__ ("bset %1,(%0)" in bset_reg_set_bit()
43 char *p = (char *)vaddr + (nr ^ 31) / 8; in bset_mem_set_bit()
45 __asm__ __volatile__ ("bset %1,%0" in bset_mem_set_bit()
52 __asm__ __volatile__ ("bfset %1{%0:#1}" in bfset_mem_set_bit()
54 : "d" (nr ^ 31), "o" (*vaddr) in bfset_mem_set_bit()
73 char *p = (char *)vaddr + (nr ^ 31) / 8; in bclr_reg_clear_bit()
75 __asm__ __volatile__ ("bclr %1,(%0)" in bclr_reg_clear_bit()
83 char *p = (char *)vaddr + (nr ^ 31) / 8; in bclr_mem_clear_bit()
85 __asm__ __volatile__ ("bclr %1,%0" in bclr_mem_clear_bit()
92 __asm__ __volatile__ ("bfclr %1{%0:#1}" in bfclr_mem_clear_bit()
94 : "d" (nr ^ 31), "o" (*vaddr) in bfclr_mem_clear_bit()
113 char *p = (char *)vaddr + (nr ^ 31) / 8; in bchg_reg_change_bit()
115 __asm__ __volatile__ ("bchg %1,(%0)" in bchg_reg_change_bit()
123 char *p = (char *)vaddr + (nr ^ 31) / 8; in bchg_mem_change_bit()
125 __asm__ __volatile__ ("bchg %1,%0" in bchg_mem_change_bit()
132 __asm__ __volatile__ ("bfchg %1{%0:#1}" in bfchg_mem_change_bit()
134 : "d" (nr ^ 31), "o" (*vaddr) in bfchg_mem_change_bit()
153 return (vaddr[nr >> 5] & (1UL << (nr & 31))) != 0; in test_bit()
160 char *p = (char *)vaddr + (nr ^ 31) / 8; in bset_reg_test_and_set_bit()
163 __asm__ __volatile__ ("bset %2,(%1); sne %0" in bset_reg_test_and_set_bit()
173 char *p = (char *)vaddr + (nr ^ 31) / 8; in bset_mem_test_and_set_bit()
176 __asm__ __volatile__ ("bset %2,%1; sne %0" in bset_mem_test_and_set_bit()
187 __asm__ __volatile__ ("bfset %2{%1:#1}; sne %0" in bfset_mem_test_and_set_bit()
189 : "d" (nr ^ 31), "o" (*vaddr) in bfset_mem_test_and_set_bit()
210 char *p = (char *)vaddr + (nr ^ 31) / 8; in bclr_reg_test_and_clear_bit()
213 __asm__ __volatile__ ("bclr %2,(%1); sne %0" in bclr_reg_test_and_clear_bit()
223 char *p = (char *)vaddr + (nr ^ 31) / 8; in bclr_mem_test_and_clear_bit()
226 __asm__ __volatile__ ("bclr %2,%1; sne %0" in bclr_mem_test_and_clear_bit()
237 __asm__ __volatile__ ("bfclr %2{%1:#1}; sne %0" in bfclr_mem_test_and_clear_bit()
239 : "d" (nr ^ 31), "o" (*vaddr) in bfclr_mem_test_and_clear_bit()
260 char *p = (char *)vaddr + (nr ^ 31) / 8; in bchg_reg_test_and_change_bit()
263 __asm__ __volatile__ ("bchg %2,(%1); sne %0" in bchg_reg_test_and_change_bit()
273 char *p = (char *)vaddr + (nr ^ 31) / 8; in bchg_mem_test_and_change_bit()
276 __asm__ __volatile__ ("bchg %2,%1; sne %0" in bchg_mem_test_and_change_bit()
287 __asm__ __volatile__ ("bfchg %2{%1:#1}; sne %0" in bfchg_mem_test_and_change_bit()
289 : "d" (nr ^ 31), "o" (*vaddr) in bfchg_mem_test_and_change_bit()
314 #include <asm-generic/bitops/ffz.h>
326 return 0; in find_first_zero_bit()
328 words = (size + 31) >> 5; in find_first_zero_bit()
330 if (!--words) in find_first_zero_bit()
334 __asm__ __volatile__ ("bfffo %1{#0,#0},%0" in find_first_zero_bit()
335 : "=d" (res) : "d" (num & -num)); in find_first_zero_bit()
336 res ^= 31; in find_first_zero_bit()
338 res += ((long)p - (long)vaddr - 4) * 8; in find_first_zero_bit()
347 int bit = offset & 31UL, res; in find_next_zero_bit()
353 unsigned long num = ~*p++ & (~0UL << bit); in find_next_zero_bit()
354 offset -= bit; in find_next_zero_bit()
357 __asm__ __volatile__ ("bfffo %1{#0,#0},%0" in find_next_zero_bit()
358 : "=d" (res) : "d" (num & -num)); in find_next_zero_bit()
360 offset += res ^ 31; in find_next_zero_bit()
369 return offset + find_first_zero_bit(p, size - offset); in find_next_zero_bit()
381 return 0; in find_first_bit()
383 words = (size + 31) >> 5; in find_first_bit()
385 if (!--words) in find_first_bit()
389 __asm__ __volatile__ ("bfffo %1{#0,#0},%0" in find_first_bit()
390 : "=d" (res) : "d" (num & -num)); in find_first_bit()
391 res ^= 31; in find_first_bit()
393 res += ((long)p - (long)vaddr - 4) * 8; in find_first_bit()
402 int bit = offset & 31UL, res; in find_next_bit()
408 unsigned long num = *p++ & (~0UL << bit); in find_next_bit()
409 offset -= bit; in find_next_bit()
412 __asm__ __volatile__ ("bfffo %1{#0,#0},%0" in find_next_bit()
413 : "=d" (res) : "d" (num & -num)); in find_next_bit()
415 offset += res ^ 31; in find_next_bit()
424 return offset + find_first_bit(p, size - offset); in find_next_bit()
430 * so code should check against ~0UL first..
436 __asm__ __volatile__ ("bfffo %1{#0,#0},%0" in ffz()
437 : "=d" (res) : "d" (~word & -~word)); in ffz()
438 return res ^ 31; in ffz()
443 #include <asm-generic/bitops/find.h>
459 __asm__ __volatile__ ("bitrev %0; ff1 %0" in __ffs()
461 : "0" (x)); in __ffs()
468 return 0; in ffs()
473 #include <asm-generic/bitops/ffs.h>
474 #include <asm-generic/bitops/__ffs.h>
477 #include <asm-generic/bitops/fls.h>
478 #include <asm-generic/bitops/__fls.h>
491 __asm__ ("bfffo %1{#0:#0},%0" in ffs()
493 : "dm" (x & -x)); in ffs()
494 return 32 - cnt; in ffs()
499 return ffs(x) - 1; in __ffs()
509 __asm__ ("bfffo %1{#0,#0},%0" in fls()
512 return 32 - cnt; in fls()
517 return fls(x) - 1; in __fls()
522 /* Simple test-and-set bit locks */
527 #include <asm-generic/bitops/ext2-atomic.h>
528 #include <asm-generic/bitops/le.h>
529 #include <asm-generic/bitops/fls64.h>
530 #include <asm-generic/bitops/sched.h>
531 #include <asm-generic/bitops/hweight.h>