From d11221d7fa7c8d59a53d114c3fe382f303dce643 Mon Sep 17 00:00:00 2001 From: Chen Xijun Date: Wed, 27 Jul 2022 15:29:22 +0800 Subject: [PATCH] Fix internal.h --- .../vendor/ring/crypto/fipsmodule/bn/internal.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/zeroidc/vendor/ring/crypto/fipsmodule/bn/internal.h b/zeroidc/vendor/ring/crypto/fipsmodule/bn/internal.h index 044e4e860..b808b2c62 100644 --- a/zeroidc/vendor/ring/crypto/fipsmodule/bn/internal.h +++ b/zeroidc/vendor/ring/crypto/fipsmodule/bn/internal.h @@ -132,6 +132,13 @@ #pragma intrinsic(_umul128) #endif +#if defined(OPENSSL_AARCH64) && defined(_MSC_VER) && ! defined(__clang__) +#pragma warning(push, 3) +#include +#pragma warning(pop) +#pragma intrinsic(_umul128) +#endif + #include "../../internal.h" typedef crypto_word BN_ULONG; @@ -187,10 +194,12 @@ static inline void bn_umult_lohi(BN_ULONG *low_out, BN_ULONG *high_out, BN_ULONG a, BN_ULONG b) { #if defined(OPENSSL_X86_64) && defined(_MSC_VER) && !defined(__clang__) *low_out = _umul128(a, b, high_out); +#elif defined(OPENSSL_AARCH64) && defined(_MSC_VER) && ! defined(__clang__) + *low_out = _umul128(a, b, high_out); #else - BN_ULLONG result = (BN_ULLONG)a * b; - *low_out = (BN_ULONG)result; - *high_out = (BN_ULONG)(result >> BN_BITS2); + BN_ULLONG result = (BN_ULLONG)a * b; + *low_out = (BN_ULONG)result; + *high_out = (BN_ULONG)(result >> BN_BITS2); #endif }