Changeset View
Changeset View
Standalone View
Standalone View
lang/mono/files/patch-btls-aarch64
Property | Old Value | New Value |
---|---|---|
fbsd:nokeywords | null | yes \ No newline at end of property |
svn:eol-style | null | native \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
--- external/boringssl/crypto/cpu-aarch64-linux.c.orig 2020-03-17 13:54:56.877611000 -0400 | |||||
+++ external/boringssl/crypto/cpu-aarch64-linux.c 2020-03-18 11:25:56.642984000 -0400 | |||||
@@ -18,21 +18,47 @@ | |||||
#include <sys/auxv.h> | |||||
#include <openssl/arm_arch.h> | |||||
#include "internal.h" | |||||
extern uint32_t OPENSSL_armcap_P; | |||||
+#if defined(__FreeBSD__) | |||||
+#include <sys/types.h> | |||||
+#include <machine/armreg.h> | |||||
+ | |||||
void OPENSSL_cpuid_setup(void) { | |||||
+ uint64_t id_aa64isar0; | |||||
+ | |||||
+ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); | |||||
+ | |||||
+ OPENSSL_armcap_P |= ARMV7_NEON; | |||||
+ | |||||
+ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_BASE) { | |||||
+ OPENSSL_armcap_P |= ARMV8_PMULL; | |||||
+ } | |||||
+ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) { | |||||
+ OPENSSL_armcap_P |= ARMV8_PMULL; | |||||
+ } | |||||
+ if (ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) { | |||||
+ OPENSSL_armcap_P |= ARMV8_SHA1; | |||||
+ } | |||||
+ if(ID_AA64ISAR0_SHA2(id_aa64isar0) == ID_AA64ISAR0_SHA2_BASE) { | |||||
+ OPENSSL_armcap_P |= ARMV8_SHA256; | |||||
+ } | |||||
+} | |||||
+#else // linux | |||||
+ | |||||
+void OPENSSL_cpuid_setup(void) { | |||||
unsigned long hwcap = getauxval(AT_HWCAP); | |||||
/* See /usr/include/asm/hwcap.h on an aarch64 installation for the source of | |||||
* these values. */ | |||||
static const unsigned long kNEON = 1 << 1; | |||||
static const unsigned long kAES = 1 << 3; | |||||
static const unsigned long kPMULL = 1 << 4; | |||||
static const unsigned long kSHA1 = 1 << 5; | |||||
static const unsigned long kSHA256 = 1 << 6; | |||||
@@ -51,11 +77,12 @@ | |||||
OPENSSL_armcap_P |= ARMV8_PMULL; | |||||
} | |||||
if (hwcap & kSHA1) { | |||||
OPENSSL_armcap_P |= ARMV8_SHA1; | |||||
} | |||||
if (hwcap & kSHA256) { | |||||
OPENSSL_armcap_P |= ARMV8_SHA256; | |||||
} | |||||
} | |||||
+#endif | |||||
#endif /* OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP */ |