--- linux/include/asm-x86_64/bitops.h 2003-07-24 12:57:26.000000000 +0200 +++ linux/include/asm-x86_64/bitops.h 2003-07-24 12:59:33.000000000 +0200 @@ -367,13 +367,13 @@ */ static __inline__ int ffs(int x) { - int r; + int cnt; + int tmp; - __asm__("bsfl %1,%0\n\t" - "jnz 1f\n\t" - "movl $-1,%0\n" - "1:" : "=r" (r) : "g" (x)); - return r+1; + __asm__("bsfl %2,%0\n\t" + "cmovel %1, %0\n\t" + : "=&r" (cnt), "=r" (tmp) : "rm" (x), "1" (-1)); + return cnt+1; } /**