Fix __asm__ clobber list abuse.

Submitted by:	bde
This commit is contained in:
David E. O'Brien 1999-11-15 23:16:06 +00:00
parent 474fc32b33
commit 594017f90d
2 changed files with 10 additions and 6 deletions

View File

@ -1,3 +1,4 @@
/* $FreeBSD$ */
/* /*
* this is mixture of i386/bitops.h and asm/string.h * this is mixture of i386/bitops.h and asm/string.h
* taken from the Linux source tree * taken from the Linux source tree
@ -75,6 +76,7 @@ static __inline__ int test_bit(int nr, void * addr)
static __inline__ int find_first_zero_bit(void * addr, unsigned size) static __inline__ int find_first_zero_bit(void * addr, unsigned size)
{ {
int res; int res;
int _count = (size + 31) >> 5;
if (!size) if (!size)
return 0; return 0;
@ -90,9 +92,9 @@ static __inline__ int find_first_zero_bit(void * addr, unsigned size)
1: subl %%ebx,%%edi \n\ 1: subl %%ebx,%%edi \n\
shll $3,%%edi \n\ shll $3,%%edi \n\
addl %%edi,%%edx" addl %%edi,%%edx"
:"=d" (res) : "=c" (_count), "=D" (addr), "=d" (res)
:"c" ((size + 31) >> 5), "D" (addr), "b" (addr) : "0" (_count), "1" (addr), "b" (addr)
:"ax", "cx", "di"); : "ax");
return res; return res;
} }

View File

@ -1,3 +1,4 @@
/* $FreeBSD$ */
/* /*
* this is mixture of i386/bitops.h and asm/string.h * this is mixture of i386/bitops.h and asm/string.h
* taken from the Linux source tree * taken from the Linux source tree
@ -75,6 +76,7 @@ static __inline__ int test_bit(int nr, void * addr)
static __inline__ int find_first_zero_bit(void * addr, unsigned size) static __inline__ int find_first_zero_bit(void * addr, unsigned size)
{ {
int res; int res;
int _count = (size + 31) >> 5;
if (!size) if (!size)
return 0; return 0;
@ -90,9 +92,9 @@ static __inline__ int find_first_zero_bit(void * addr, unsigned size)
1: subl %%ebx,%%edi \n\ 1: subl %%ebx,%%edi \n\
shll $3,%%edi \n\ shll $3,%%edi \n\
addl %%edi,%%edx" addl %%edi,%%edx"
:"=d" (res) : "=c" (_count), "=D" (addr), "=d" (res)
:"c" ((size + 31) >> 5), "D" (addr), "b" (addr) : "0" (_count), "1" (addr), "b" (addr)
:"ax", "cx", "di"); : "ax");
return res; return res;
} }