--- fpu/poly.h Fri Oct 5 22:53:46 2001 +++ fpu/poly_monkey.h Sun Nov 2 23:23:20 2003 @@ -114,10 +114,10 @@ } dest->msw += x2->msw; #else - asm volatile ("movl %1,%%edi; movl %2,%%esi; - movl (%%esi),%%eax; addl %%eax,(%%edi); - movl 4(%%esi),%%eax; adcl %%eax,4(%%edi); - movl 8(%%esi),%%eax; adcl %%eax,8(%%edi);" + asm volatile ("movl %1,%%edi; movl %2,%%esi;" + "movl (%%esi),%%eax; addl %%eax,(%%edi);" + "movl 4(%%esi),%%eax; adcl %%eax,4(%%edi);" + "movl 8(%%esi),%%eax; adcl %%eax,8(%%edi);" :"=g" (*dest):"g" (dest), "g" (x2) :"ax","si","di"); #endif @@ -168,16 +168,16 @@ /* Note: the constraints in the asm statement didn't always work properly with gcc 2.5.8. Changing from using edi to using ecx got around the problem, but keep fingers crossed! */ - asm volatile ("movl %2,%%ecx; movl %3,%%esi; - movl (%%esi),%%eax; addl %%eax,(%%ecx); - movl 4(%%esi),%%eax; adcl %%eax,4(%%ecx); - movl 8(%%esi),%%eax; adcl %%eax,8(%%ecx); - jnc 0f; - rcrl 8(%%ecx); rcrl 4(%%ecx); rcrl (%%ecx) - movl %4,%%ecx; incl (%%ecx) - movl $1,%%eax; jmp 1f; - 0: xorl %%eax,%%eax; - 1:" + asm volatile ("movl %2,%%ecx; movl %3,%%esi;" + "movl (%%esi),%%eax; addl %%eax,(%%ecx);" + "movl 4(%%esi),%%eax; adcl %%eax,4(%%ecx);" + "movl 8(%%esi),%%eax; adcl %%eax,8(%%ecx);" + " jnc 0f;" + "rcrl 8(%%ecx); rcrl 4(%%ecx); rcrl (%%ecx)" + ": movl %4,%%ecx; incl (%%ecx)" + "movl $1,%%eax; jmp 1f;" + "0: xorl %%eax,%%eax;" + 1: :"=g" (*exp), "=g" (*dest) :"g" (dest), "g" (x2), "g" (exp) :"cx","si","ax");