in include/asm/bitops.h [30:42]
static inline unsigned long ffz(unsigned long word)
{
unsigned long result;
result = -1;
__asm__("1:\n\t"
"shlr.l %1\n\t"
"adds #1,%0\n\t"
"bcs 1b"
: "=r"(result),"=r"(word)
: "0"(result), "1"(word));
return result;
}