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;