32 lines
1.2 KiB
Diff
32 lines
1.2 KiB
Diff
Index: openssl-1.0.2n/crypto/armcap.c
|
|
===================================================================
|
|
--- openssl-1.0.2n.orig/crypto/armcap.c 2017-12-07 21:16:38.000000000 +0800
|
|
+++ openssl-1.0.2n/crypto/armcap.c 2018-01-24 14:37:21.202601904 +0800
|
|
@@ -116,6 +116,18 @@
|
|
sigprocmask(SIG_SETMASK, &ill_act.sa_mask, &oset);
|
|
sigaction(SIGILL, &ill_act, &ill_oact);
|
|
|
|
+#ifdef BRCM_ARM_SPECIFIC
|
|
+ // BRCM SPECIFIC: do NOT probe for NEON, etc.
|
|
+ // On the 138, NEON is only on one core. The autodetect may detect NEON,
|
|
+ // and then migrate to the other core, at which point an illegal instruction
|
|
+ // would be encountered.
|
|
+
|
|
+ // For the 148: currently the neon registers are not saved on a context switch.
|
|
+ // If multiple users are accessing neon, then a context switch can cause corrupt
|
|
+ // registers.
|
|
+
|
|
+ // simply disabling neon by default:
|
|
+#else
|
|
if (getauxval != NULL) {
|
|
if (getauxval(HWCAP) & HWCAP_NEON) {
|
|
unsigned long hwcap = getauxval(HWCAP_CE);
|
|
@@ -153,6 +165,7 @@
|
|
OPENSSL_armcap_P |= ARMV8_SHA256;
|
|
}
|
|
}
|
|
+#endif
|
|
if (sigsetjmp(ill_jmp, 1) == 0) {
|
|
_armv7_tick();
|
|
OPENSSL_armcap_P |= ARMV7_TICK;
|