From 122396f2dbeda0f25e9af1bb069a324ec793da57 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Sat, 1 Nov 2008 12:46:18 +0000 Subject: [PATCH] Fix SHA512 and optimize BN for mingw64. --- crypto/bn/bn_lcl.h | 3 ++- crypto/sha/sha512.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/crypto/bn/bn_lcl.h b/crypto/bn/bn_lcl.h index 27ac4397a1..8e5e98e3f2 100644 --- a/crypto/bn/bn_lcl.h +++ b/crypto/bn/bn_lcl.h @@ -255,7 +255,8 @@ extern "C" { : "r"(a), "r"(b)); \ ret; }) # endif /* compiler */ -# elif defined(__x86_64) && defined(SIXTY_FOUR_BIT_LONG) +# elif (defined(__x86_64) || defined(__x86_64__)) && \ + (defined(SIXTY_FOUR_BIT_LONG) || defined(SIXTY_FOUR_BIT)) # if defined(__GNUC__) # define BN_UMULT_HIGH(a,b) ({ \ register BN_ULONG ret,discard; \ diff --git a/crypto/sha/sha512.c b/crypto/sha/sha512.c index 2284eefc8f..86115d890d 100644 --- a/crypto/sha/sha512.c +++ b/crypto/sha/sha512.c @@ -350,7 +350,7 @@ static const SHA_LONG64 K512[80] = { #ifndef PEDANTIC # if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) # if defined(__x86_64) || defined(__x86_64__) -# define ROTR(a,n) ({ unsigned long ret; \ +# define ROTR(a,n) ({ SHA_LONG64 ret; \ asm ("rorq %1,%0" \ : "=r"(ret) \ : "J"(n),"0"(a) \ @@ -387,6 +387,7 @@ static const SHA_LONG64 K512[80] = { # endif # elif defined(_MSC_VER) # if defined(_WIN64) /* applies to both IA-64 and AMD64 */ +# pragma intrinsic(_rotr64) # define ROTR(a,n) _rotr64((a),n) # endif # if defined(_M_IX86) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) -- 2.34.1