"repe; scasl\n\t"
"jz 1f\n\t"
"leaq -4(%%rdi),%%rdi\n\t"
- "bsfq (%%rdi),%%rax\n"
- "1:\tsubl %%ebx,%%edi\n\t"
+ "bsfl (%%rdi),%%eax\n"
+ "1:\tsubq %%rbx,%%rdi\n\t"
"shll $3,%%edi\n\t"
"addl %%edi,%%eax"
:"=a" (res), "=&c" (d0), "=&D" (d1)
- :"1" ((size + 31) >> 5), "2" (addr), "b" (addr));
+ :"1" ((size + 31) >> 5), "2" (addr), "b" (addr) : "memory");
return res;
}
-
/**
* find_next_bit - find the first set bit in a memory region
* @addr: The address to base the search on
__asm__("bsfl %1,%0\n\t"
"cmovzl %2,%0"
- : "=r" (r) : "g" (x), "r" (-1));
+ : "=r" (r) : "rm" (x), "r" (-1));
return r+1;
}