Rename MBEDTLS_ARCH_IS_ARMV8 to MBEDTLS_ARCH_IS_ARMV8_A
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
diff --git a/include/mbedtls/build_info.h b/include/mbedtls/build_info.h
index 9b9f5f2..b09c5dd 100644
--- a/include/mbedtls/build_info.h
+++ b/include/mbedtls/build_info.h
@@ -74,14 +74,19 @@
#define MBEDTLS_ARCH_IS_X86
#endif
-/* This is defined if the architecture is Armv8, or higher */
-#if !defined(MBEDTLS_ARCH_IS_ARMV8)
-#if defined(__ARM_ARCH)
-#if __ARM_ARCH >= 8
-#define MBEDTLS_ARCH_IS_ARMV8
+/* This is defined if the architecture is Armv8-A, or higher */
+#if !defined(MBEDTLS_ARCH_IS_ARMV8_A)
+#if defined(__ARM_ARCH) && defined(__ARM_ARCH_PROFILE)
+#if (__ARM_ARCH >= 8) && (__ARM_ARCH_PROFILE == 'A')
+/* GCC, clang, armclang and IAR */
+#define MBEDTLS_ARCH_IS_ARMV8_A
#endif
-#elif defined(MBEDTLS_ARCH_IS_ARM64)
-#define MBEDTLS_ARCH_IS_ARMV8
+#elif defined(__ARM_ARCH_8A)
+/* Alternative defined by clang */
+#define MBEDTLS_ARCH_IS_ARMV8_A
+#elif defined(_M_ARM64) || defined(_M_ARM64EC)
+/* MSVC ARM64 is at least Armv8.0-A */
+#define MBEDTLS_ARCH_IS_ARMV8_A
#endif
#endif
diff --git a/include/mbedtls/check_config.h b/include/mbedtls/check_config.h
index 0dba0a8..eac2266 100644
--- a/include/mbedtls/check_config.h
+++ b/include/mbedtls/check_config.h
@@ -865,7 +865,7 @@
#endif
-#if defined(MBEDTLS_SHA256_USE_ARMV8_CRYPTO_ONLY) && !defined(MBEDTLS_ARCH_IS_ARMV8)
+#if defined(MBEDTLS_SHA256_USE_ARMV8_CRYPTO_ONLY) && !defined(MBEDTLS_ARCH_IS_ARMV8_A)
#error "MBEDTLS_SHA256_USE_ARMV8_CRYPTO_ONLY defined on non-Armv8-A system"
#endif
diff --git a/library/sha256.c b/library/sha256.c
index fe343e7..763c710 100644
--- a/library/sha256.c
+++ b/library/sha256.c
@@ -24,15 +24,15 @@
#if defined(__clang__) && (__clang_major__ >= 4)
-/* Ideally, we would simply use MBEDTLS_ARCH_IS_ARMV8 in the following #if,
+/* Ideally, we would simply use MBEDTLS_ARCH_IS_ARMV8_A in the following #if,
* but that is defined by build_info.h, and we need this block to happen first. */
-#if defined(__ARM_ARCH)
+#if defined(__ARM_ARCH) && (__ARM_ARCH_PROFILE == 'A')
#if __ARM_ARCH >= 8
-#define MBEDTLS_SHA256_ARCH_IS_ARMV8
+#define MBEDTLS_SHA256_ARCH_IS_ARMV8_A
#endif
#endif
-#if defined(MBEDTLS_SHA256_ARCH_IS_ARMV8) && !defined(__ARM_FEATURE_CRYPTO)
+#if defined(MBEDTLS_SHA256_ARCH_IS_ARMV8_A) && !defined(__ARM_FEATURE_CRYPTO)
/* TODO: Re-consider above after https://reviews.llvm.org/D131064 merged.
*
* The intrinsic declaration are guarded by predefined ACLE macros in clang:
@@ -70,7 +70,7 @@
#include "mbedtls/platform.h"
-#if defined(MBEDTLS_ARCH_IS_ARMV8)
+#if defined(MBEDTLS_ARCH_IS_ARMV8_A)
# if defined(MBEDTLS_SHA256_USE_ARMV8_CRYPTO_IF_PRESENT) || \
defined(MBEDTLS_SHA256_USE_ARMV8_CRYPTO_ONLY)