summaryrefslogtreecommitdiffstats
path: root/providers
diff options
context:
space:
mode:
authorsdlyyxy <sdlyyxy@icloud.com>2023-07-14 17:10:43 +0800
committerPauli <pauli@openssl.org>2023-07-21 10:19:19 +1000
commit08e6eb216c9d65d502dc136a40e1c0adaefab759 (patch)
tree420395c61f041bcde8a3a3f4d9dfa2948cf0acb5 /providers
parentf6484de23df5f04e1f9fa8418e942c45c1a65578 (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.c33
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;