=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/Z.c,v retrieving revision 1.7 retrieving revision 1.11 diff -u -p -r1.7 -r1.11 --- OpenXM_contrib2/asir2000/engine/Z.c 2005/02/13 16:01:02 1.7 +++ OpenXM_contrib2/asir2000/engine/Z.c 2009/03/02 16:28:30 1.11 @@ -13,8 +13,8 @@ INLINE void _addz(Z n1,Z n2,Z nr); INLINE void _subz(Z n1,Z n2,Z nr); INLINE void _mulz(Z n1,Z n2,Z nr); -INLINE int _addz_main(unsigned int *m1,int d1,unsigned int *m2,int d2,unsigned int *mr); -INLINE int _subz_main(unsigned int *m1,int d1,unsigned int *m2,int d2,unsigned int *mr); +int _addz_main(unsigned int *m1,int d1,unsigned int *m2,int d2,unsigned int *mr); +int _subz_main(unsigned int *m1,int d1,unsigned int *m2,int d2,unsigned int *mr); /* immediate int -> Z */ #define UTOZ(c,n) (n)=(!((unsigned int)(c))?0:(((unsigned int)(c))<=IMM_MAX?((Z)((((unsigned int)(c))<<1)|1)):utoz((unsigned int)(c)))) @@ -677,7 +677,7 @@ int _addz_main(unsigned int *m1,int d1,unsigned int *m t = m1; m1 = m2; m2 = t; d = d1; d1 = d2; d2 = d; } -#if defined(VISUAL) +#if defined(_M_IX86) __asm { push esi push edi @@ -704,6 +704,7 @@ int _addz_main(unsigned int *m1,int d1,unsigned int *m } #elif defined(i386) asm volatile("\ + pushl %%ebx;\ movl %1,%%esi;\ movl %2,%%edi;\ movl %3,%%ebx;\ @@ -721,10 +722,11 @@ int _addz_main(unsigned int *m1,int d1,unsigned int *m jnz Lstart__addz;\ movl $0,%%eax;\ adcl %%eax,%%eax;\ - movl %%eax,%0"\ + movl %%eax,%0;\ + popl %%ebx"\ :"=m"(c)\ :"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ - :"eax","ebx","ecx","edx","esi","edi"); + :"eax","ecx","edx","esi","edi"); #else for ( i = 0, c = 0; i < d2; i++, m1++, m2++, mr++ ) { tmp = *m1 + *m2; @@ -767,7 +769,7 @@ int _subz_main(unsigned int *m1,int d1,unsigned int *m m = m1; m1 = m2; m2 = m; d = d1; d1 = d2; d2 = d; } -#if defined(VISUAL) +#if defined(_M_IX86) __asm { push esi push edi @@ -794,6 +796,7 @@ int _subz_main(unsigned int *m1,int d1,unsigned int *m } #elif defined(i386) asm volatile("\ + pushl %%ebx;\ movl %1,%%esi;\ movl %2,%%edi;\ movl %3,%%ebx;\ @@ -811,10 +814,11 @@ int _subz_main(unsigned int *m1,int d1,unsigned int *m jnz Lstart__subz;\ movl $0,%%eax;\ adcl %%eax,%%eax;\ - movl %%eax,%0"\ + movl %%eax,%0;\ + popl %%ebx"\ :"=m"(br)\ :"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ - :"eax","ebx","ecx","edx","esi","edi"); + :"eax","ecx","edx","esi","edi"); #else for ( i = 0, br = 0; i < d2; i++, mr++ ) { t = *m1++;