Add ARMV8_SHA512 detection for Fuchsia.
See https://fuchsia-review.googlesource.com/c/fuchsia/+/624684. Also
pick up the new, more specific, name for ZX_ARM64_FEATURE_ISA_SHA2.
Update-Note: This CL is written assuming we can just rely on the SDK
changes. Per go/fuchsia-sdk-age, this seems fairly safe. If this file
fails to build due to missing symbols, update your project's Fuchsia
SDK. If this blocks something, let us know.
Change-Id: I28b0c234b577cc0de90e7ef096c15bb75a4ba501
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/50926
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/cpu_aarch64_fuchsia.c b/crypto/cpu_aarch64_fuchsia.c
index 4d97f03..64bc448 100644
--- a/crypto/cpu_aarch64_fuchsia.c
+++ b/crypto/cpu_aarch64_fuchsia.c
@@ -29,8 +29,8 @@
uint32_t hwcap;
zx_status_t rc = zx_system_get_features(ZX_FEATURE_KIND_CPU, &hwcap);
if (rc != ZX_OK || (hwcap & ZX_ARM64_FEATURE_ISA_ASIMD) == 0) {
- // Matching OpenSSL, if NEON/ASIMD is missing, don't report other features
- // either.
+ // If NEON/ASIMD is missing, don't report other features either. This
+ // matches OpenSSL, and the other features depend on SIMD registers.
return;
}
@@ -45,12 +45,12 @@
if (hwcap & ZX_ARM64_FEATURE_ISA_SHA1) {
OPENSSL_armcap_P |= ARMV8_SHA1;
}
- if (hwcap & ZX_ARM64_FEATURE_ISA_SHA2) {
+ if (hwcap & ZX_ARM64_FEATURE_ISA_SHA256) {
OPENSSL_armcap_P |= ARMV8_SHA256;
}
- // As of writing, Fuchsia does not have a flag for ARMv8.2 SHA-512
- // extensions. When it does, add it here. See
- // https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=90759.
+ if (hwcap & ZX_ARM64_FEATURE_ISA_SHA512) {
+ OPENSSL_armcap_P |= ARMV8_SHA512;
+ }
}
#endif // OPENSSL_AARCH64 && OPENSSL_FUCHSIA && !OPENSSL_STATIC_ARMCAP