int d0, d1; int res;  /* This looks at memory. Mark it volatile to tell gcc not to move it around */ __asm__ __volatile__( "xorl %%eax,%%eax\n\t" "repe; scasl\n\t" "jz 1f\n\t" "leal -4(%%edi),%%edi\n\t" "bsfl (%%edi),%%eax\n" "1:\tsubl %%ebx,%%edi\n\t" "shll $3,%%edi\n\t" "addl %%edi,%%eax" :"=a" (res), "=&c" (d0), "=&D" (d1) :"1" ((size + 31) >> 5), "2" (addr), "b" (addr) : "memory"); return res; 
int x = 0; do { if (*addr) return __ffs(*addr) + x; addr++; if (x >= size) break; x += (sizeof(*addr)<<3); } while (1); return x; 
static inline int find_first_bit(const unsigned long *addr, unsigned size){	int d0, d1;	int res;	/* This looks at memory. Mark it volatile to tell gcc not to move it around */	__asm__ __volatile__(		"xorl %%eax,%%eax\n\t"		"repe; scasl\n\t"		"jz 1f\n\t"		"leal -4(%%edi),%%edi\n\t"		"bsfl (%%edi),%%eax\n"		"1:\tsubl %%ebx,%%edi\n\t"		"shll $3,%%edi\n\t"		"addl %%edi,%%eax"		:"=a" (res), "=&c" (d0), "=&D" (d1)		:"1" ((size + 31) >> 5), "2" (addr), "b" (addr) : "memory");	return res;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/cd85c8b4457a52d3545fdb9532082b2c1ebd5f21/bitops.h/buggy/include/asm-i386/bitops.h