summaryrefslogtreecommitdiffstats
path: root/crypto/armcap.c
diff options
context:
space:
mode:
authorEverton Constantino <everton.constantino@linaro.org>2022-10-27 15:07:48 -0300
committerHugo Landau <hlandau@openssl.org>2022-11-24 06:36:47 +0000
commitb863e1e4c69068e4166bdfbbf9f04bb07991dd40 (patch)
tree72b375d09bfa9816defe28c8468e9599c40f846a /crypto/armcap.c
parentf2a6f83862be3e20260b708288a8f7d0928e9018 (diff)
Add two new build targets to enable the possibility of using clang-cl as
an assembler for Windows on Arm builds and also clang-cl as the compiler as well. Make appropriate changes to armcap source and peralsm scripts. Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Hugo Landau <hlandau@openssl.org> (Merged from https://github.com/openssl/openssl/pull/19523)
Diffstat (limited to 'crypto/armcap.c')
-rw-r--r--crypto/armcap.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/crypto/armcap.c b/crypto/armcap.c
index 0aa11baed4..a43f17304b 100644
--- a/crypto/armcap.c
+++ b/crypto/armcap.c
@@ -17,15 +17,36 @@
#include <sys/sysctl.h>
#endif
#include "internal/cryptlib.h"
+#ifndef _WIN32
#include <unistd.h>
-
+#else
+#include <windows.h>
+#endif
#include "arm_arch.h"
unsigned int OPENSSL_armcap_P = 0;
unsigned int OPENSSL_arm_midr = 0;
unsigned int OPENSSL_armv8_rsa_neonized = 0;
-#if __ARM_MAX_ARCH__<7
+#ifdef _WIN32
+void OPENSSL_cpuid_setup(void)
+{
+ OPENSSL_armcap_P |= ARMV7_NEON;
+ OPENSSL_armv8_rsa_neonized = 1;
+ if (IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE)) {
+ // These are all covered by one call in Windows
+ OPENSSL_armcap_P |= ARMV8_AES;
+ OPENSSL_armcap_P |= ARMV8_PMULL;
+ OPENSSL_armcap_P |= ARMV8_SHA1;
+ OPENSSL_armcap_P |= ARMV8_SHA256;
+ }
+}
+
+uint32_t OPENSSL_rdtsc(void)
+{
+ return 0;
+}
+#elif __ARM_MAX_ARCH__<7
void OPENSSL_cpuid_setup(void)
{
}