Changeset View
Changeset View
Standalone View
Standalone View
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 |
| # Courtesy greg@unrelenting.technology via bug #229710 | |||||
| --- 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-17 13:58:09.718423000 -0400 | |||||
| @@ -18,20 +18,46 @@ | |||||
| #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; | |||||