diff options
author | Andy Polyakov <appro@openssl.org> | 2018-02-23 13:20:33 +0100 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2018-02-24 14:11:06 +0100 |
commit | ae1ffe0f65c460ccdfe5153b96fe9943d7a171b8 (patch) | |
tree | c034979571afcd1541a4d5a6703582ae2b1ca149 /crypto/ec/curve448 | |
parent | e8c42b9888f53ac60f92221da309dc5a2b007cc3 (diff) | |
download | openssl-new-ae1ffe0f65c460ccdfe5153b96fe9943d7a171b8.tar.gz |
ec/curve448: portability fixups.
SPARC condition in __SIZEOF_INT128__==16 is rather performance thing
than portability. Even though compiler advertises int128 capability,
corresponding operations are inefficient, because they are not
directly backed by instruction set.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5449)
Diffstat (limited to 'crypto/ec/curve448')
-rw-r--r-- | crypto/ec/curve448/curve448.c | 2 | ||||
-rw-r--r-- | crypto/ec/curve448/curve448utils.h | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/crypto/ec/curve448/curve448.c b/crypto/ec/curve448/curve448.c index 7c43a758f9..8ced622b7b 100644 --- a/crypto/ec/curve448/curve448.c +++ b/crypto/ec/curve448/curve448.c @@ -500,7 +500,7 @@ struct smvt_control { int power, addend; }; -#if defined(__GNUC__) || defined(__clang__) +#if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 3)) # define NUMTRAILINGZEROS __builtin_ctz #else # define NUMTRAILINGZEROS numtrailingzeros diff --git a/crypto/ec/curve448/curve448utils.h b/crypto/ec/curve448/curve448utils.h index 4af2c3f12d..9bf837993c 100644 --- a/crypto/ec/curve448/curve448utils.h +++ b/crypto/ec/curve448/curve448utils.h @@ -23,7 +23,8 @@ * with arch_arm32. */ # ifndef C448_WORD_BITS -# if defined(__SIZEOF_INT128__) && (__SIZEOF_INT128__ == 16) +# if (defined(__SIZEOF_INT128__) && (__SIZEOF_INT128__ == 16)) \ + && !defined(__sparc__) # define C448_WORD_BITS 64 /* The number of bits in a word */ # else # define C448_WORD_BITS 32 /* The number of bits in a word */ |