diff options
author | sdlyyxy <sdlyyxy@icloud.com> | 2023-07-14 17:10:43 +0800 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2023-07-21 10:19:19 +1000 |
commit | 08e6eb216c9d65d502dc136a40e1c0adaefab759 (patch) | |
tree | 420395c61f041bcde8a3a3f4d9dfa2948cf0acb5 /providers | |
parent | f6484de23df5f04e1f9fa8418e942c45c1a65578 (diff) |
Move CPU detection to armcap.c
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21398)
Diffstat (limited to 'providers')
-rw-r--r-- | providers/implementations/digests/sha3_prov.c | 33 |
1 files changed, 6 insertions, 27 deletions
diff --git a/providers/implementations/digests/sha3_prov.c b/providers/implementations/digests/sha3_prov.c index 1348d0e06a..a03df0b7fc 100644 --- a/providers/implementations/digests/sha3_prov.c +++ b/providers/implementations/digests/sha3_prov.c @@ -271,43 +271,22 @@ static PROV_SHA3_METHOD sha3_ARMSHA3_md = armsha3_sha3_absorb, generic_sha3_final }; -/* Detection on Apple operating systems */ -# if defined(__APPLE__) -# define ARM_SHA3_CAPABLE (OPENSSL_armcap_P & ARMV8_SHA3) -# define SHA3_SET_MD(uname, typ) \ +/* Users can switch back to the generic code by clearing either of the bits */ +# define ARM_SHA3_CAPABLE \ + ((OPENSSL_armcap_P & ARMV8_SHA3) && \ + (OPENSSL_armcap_P & ARMV8_WORTH_USING_SHA3)) +# define SHA3_SET_MD(uname, typ) \ if (ARM_SHA3_CAPABLE) { \ ctx->meth = sha3_ARMSHA3_md; \ } else { \ ctx->meth = sha3_generic_md; \ } -# define KMAC_SET_MD(bitlen) \ +# define KMAC_SET_MD(bitlen) \ if (ARM_SHA3_CAPABLE) { \ ctx->meth = sha3_ARMSHA3_md; \ } else { \ ctx->meth = sha3_generic_md; \ } -/* Detection on other operating systems */ -# else -# define ARM_HAS_FASTER_SHA3 \ - (MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM) ||\ - MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM_PRO) ||\ - MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM_MAX) ||\ - MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE) ||\ - MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_PRO) ||\ - MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_MAX)) -# define SHA3_SET_MD(uname, typ) \ - if (ARM_HAS_FASTER_SHA3) { \ - ctx->meth = sha3_ARMSHA3_md; \ - } else { \ - ctx->meth = sha3_generic_md; \ - } -# define KMAC_SET_MD(bitlen) \ - if (ARM_HAS_FASTER_SHA3) { \ - ctx->meth = sha3_ARMSHA3_md; \ - } else { \ - ctx->meth = sha3_generic_md; \ - } -# endif /* APPLE */ #else # define SHA3_SET_MD(uname, typ) ctx->meth = sha3_generic_md; # define KMAC_SET_MD(bitlen) ctx->meth = sha3_generic_md; |