tls: fix pstm asm constraint problem
function old new delta pstm_sqr_comba 551 475 -76 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
367a55c7d7
commit
79376ecdbd
@ -26,10 +26,8 @@
|
|||||||
#undef USE_SEED
|
#undef USE_SEED
|
||||||
/* pstm: multiprecision numbers */
|
/* pstm: multiprecision numbers */
|
||||||
#undef DISABLE_PSTM
|
#undef DISABLE_PSTM
|
||||||
#if defined(__GNUC__) && defined(__i386__) && ENABLE_STATIC
|
#if defined(__GNUC__) && defined(__i386__)
|
||||||
/* PSTM_X86 works correctly. +25 bytes. */
|
/* PSTM_X86 works correctly. +25 bytes. */
|
||||||
/* Only enabled on static build since tls_pstm_mul_comba.c::MULADD
|
|
||||||
* and tls_pstm_sqr_comba.c::SQRADD2 need too many registers, choke when ebx is not available */
|
|
||||||
# define PSTM_32BIT
|
# define PSTM_32BIT
|
||||||
# define PSTM_X86
|
# define PSTM_X86
|
||||||
#endif
|
#endif
|
||||||
|
@ -85,7 +85,8 @@ asm( \
|
|||||||
"addl %%eax,%0 \n\t" \
|
"addl %%eax,%0 \n\t" \
|
||||||
"adcl %%edx,%1 \n\t" \
|
"adcl %%edx,%1 \n\t" \
|
||||||
"adcl $0,%2 \n\t" \
|
"adcl $0,%2 \n\t" \
|
||||||
:"=r"(c0), "=r"(c1), "=r"(c2): "0"(c0), "1"(c1), "2"(c2), "m"(i), "m"(j) :"%eax","%edx","%cc");
|
:"=rm"(c0), "=rm"(c1), "=rm"(c2): "0"(c0), "1"(c1), "2"(c2), "m"(i), "m"(j) :"%eax","%edx","%cc");
|
||||||
|
//bbox: ^^^ replaced "=r" with "=rm": %ebx is not available on shared build
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
#elif defined(PSTM_X86_64)
|
#elif defined(PSTM_X86_64)
|
||||||
|
@ -78,7 +78,8 @@ asm( \
|
|||||||
"addl %%eax,%0 \n\t" \
|
"addl %%eax,%0 \n\t" \
|
||||||
"adcl %%edx,%1 \n\t" \
|
"adcl %%edx,%1 \n\t" \
|
||||||
"adcl $0,%2 \n\t" \
|
"adcl $0,%2 \n\t" \
|
||||||
:"=r"(c0), "=r"(c1), "=r"(c2): "0"(c0), "1"(c1), "2"(c2), "m"(i) :"%eax","%edx","%cc");
|
:"=rm"(c0), "=rm"(c1), "=rm"(c2): "0"(c0), "1"(c1), "2"(c2), "m"(i) :"%eax","%edx","%cc");
|
||||||
|
//bbox: ^^^ replaced "=r" with "=rm": %ebx is not available on shared build
|
||||||
|
|
||||||
#define SQRADD2(i, j) \
|
#define SQRADD2(i, j) \
|
||||||
asm( \
|
asm( \
|
||||||
@ -90,7 +91,8 @@ asm( \
|
|||||||
"addl %%eax,%0 \n\t" \
|
"addl %%eax,%0 \n\t" \
|
||||||
"adcl %%edx,%1 \n\t" \
|
"adcl %%edx,%1 \n\t" \
|
||||||
"adcl $0,%2 \n\t" \
|
"adcl $0,%2 \n\t" \
|
||||||
:"=r"(c0), "=r"(c1), "=r"(c2): "0"(c0), "1"(c1), "2"(c2), "m"(i), "m"(j) :"%eax","%edx","%cc");
|
:"=rm"(c0), "=rm"(c1), "=rm"(c2): "0"(c0), "1"(c1), "2"(c2), "m"(i), "m"(j) :"%eax","%edx","%cc");
|
||||||
|
//bbox: ^^^ replaced "=r" with "=rm": %ebx is not available on shared build
|
||||||
|
|
||||||
#define SQRADDSC(i, j) \
|
#define SQRADDSC(i, j) \
|
||||||
asm( \
|
asm( \
|
||||||
|
Loading…
Reference in New Issue
Block a user