X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fbn%2Fasm%2Fx86_64-gcc.c;fp=crypto%2Fbn%2Fasm%2Fx86_64-gcc.c;h=d34d2dce09a745ca0c76fe0ce3b111c9c9b57da6;hp=9296851ec5c8537c0a0baa3c6bcaf23794e822ab;hb=be0d31b166efb80516ab656a8271a9f3462440d2;hpb=ed83ba53212f81e590b3cf9adb49c04069430659 diff --git a/crypto/bn/asm/x86_64-gcc.c b/crypto/bn/asm/x86_64-gcc.c index 9296851ec5..d34d2dce09 100644 --- a/crypto/bn/asm/x86_64-gcc.c +++ b/crypto/bn/asm/x86_64-gcc.c @@ -55,7 +55,7 @@ * machine. */ -#ifdef _WIN64 +#if defined(_WIN64) || !defined(__LP64__) #define BN_ULONG unsigned long long #else #define BN_ULONG unsigned long @@ -184,20 +184,22 @@ BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d) } BN_ULONG bn_add_words (BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,int n) -{ BN_ULONG ret=0,i=0; +{ BN_ULONG ret; + size_t i=0; if (n <= 0) return 0; asm ( - " subq %2,%2 \n" + " subq %0,%0 \n" /* clear carry */ + " jmp 1f \n" ".p2align 4 \n" "1: movq (%4,%2,8),%0 \n" " adcq (%5,%2,8),%0 \n" " movq %0,(%3,%2,8) \n" - " leaq 1(%2),%2 \n" + " lea 1(%2),%2 \n" " loop 1b \n" " sbbq %0,%0 \n" - : "=&a"(ret),"+c"(n),"=&r"(i) + : "=r"(ret),"+c"(n),"+r"(i) : "r"(rp),"r"(ap),"r"(bp) : "cc" ); @@ -207,20 +209,22 @@ BN_ULONG bn_add_words (BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,int #ifndef SIMICS BN_ULONG bn_sub_words (BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,int n) -{ BN_ULONG ret=0,i=0; +{ BN_ULONG ret; + size_t i=0; if (n <= 0) return 0; asm ( - " subq %2,%2 \n" + " subq %0,%0 \n" /* clear borrow */ + " jmp 1f \n" ".p2align 4 \n" "1: movq (%4,%2,8),%0 \n" " sbbq (%5,%2,8),%0 \n" " movq %0,(%3,%2,8) \n" - " leaq 1(%2),%2 \n" + " lea 1(%2),%2 \n" " loop 1b \n" " sbbq %0,%0 \n" - : "=&a"(ret),"+c"(n),"=&r"(i) + : "=r"(ret),"+c"(n),"+r"(i) : "r"(rp),"r"(ap),"r"(bp) : "cc" );