diff options
| -rw-r--r-- | src/lib/libcrypto/armcap.c | 14 | ||||
| -rw-r--r-- | src/lib/libcrypto/armv4cpuid.S | 2 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/armcap.c | 14 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/armv4cpuid.S | 2 |
4 files changed, 28 insertions, 4 deletions
diff --git a/src/lib/libcrypto/armcap.c b/src/lib/libcrypto/armcap.c index f40993c1d5..0476f5a4f5 100644 --- a/src/lib/libcrypto/armcap.c +++ b/src/lib/libcrypto/armcap.c | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | 9 | ||
| 10 | unsigned int OPENSSL_armcap_P; | 10 | unsigned int OPENSSL_armcap_P; |
| 11 | 11 | ||
| 12 | #if __ARM_ARCH__ >= 7 | ||
| 12 | static sigset_t all_masked; | 13 | static sigset_t all_masked; |
| 13 | 14 | ||
| 14 | static sigjmp_buf ill_jmp; | 15 | static sigjmp_buf ill_jmp; |
| @@ -20,6 +21,7 @@ static sigjmp_buf ill_jmp; | |||
| 20 | * ARM compilers support inline assembler... | 21 | * ARM compilers support inline assembler... |
| 21 | */ | 22 | */ |
| 22 | void _armv7_neon_probe(void); | 23 | void _armv7_neon_probe(void); |
| 24 | #endif | ||
| 23 | 25 | ||
| 24 | #if defined(__GNUC__) && __GNUC__>=2 | 26 | #if defined(__GNUC__) && __GNUC__>=2 |
| 25 | void OPENSSL_cpuid_setup(void) __attribute__((constructor)); | 27 | void OPENSSL_cpuid_setup(void) __attribute__((constructor)); |
| @@ -28,20 +30,29 @@ void OPENSSL_cpuid_setup(void) __attribute__((constructor)); | |||
| 28 | void | 30 | void |
| 29 | OPENSSL_cpuid_setup(void) | 31 | OPENSSL_cpuid_setup(void) |
| 30 | { | 32 | { |
| 33 | #ifndef __OpenBSD__ | ||
| 31 | char *e; | 34 | char *e; |
| 35 | #endif | ||
| 36 | #if __ARM_ARCH__ >= 7 | ||
| 32 | struct sigaction ill_oact, ill_act; | 37 | struct sigaction ill_oact, ill_act; |
| 33 | sigset_t oset; | 38 | sigset_t oset; |
| 39 | #endif | ||
| 34 | static int trigger = 0; | 40 | static int trigger = 0; |
| 35 | 41 | ||
| 36 | if (trigger) | 42 | if (trigger) |
| 37 | return; | 43 | return; |
| 38 | trigger = 1; | 44 | trigger = 1; |
| 39 | 45 | ||
| 46 | #ifndef __OpenBSD__ | ||
| 40 | if ((e = getenv("OPENSSL_armcap"))) { | 47 | if ((e = getenv("OPENSSL_armcap"))) { |
| 41 | OPENSSL_armcap_P = strtoul(e, NULL, 0); | 48 | OPENSSL_armcap_P = strtoul(e, NULL, 0); |
| 42 | return; | 49 | return; |
| 43 | } | 50 | } |
| 51 | #endif | ||
| 44 | 52 | ||
| 53 | OPENSSL_armcap_P = 0; | ||
| 54 | |||
| 55 | #if __ARM_ARCH__ >= 7 | ||
| 45 | sigfillset(&all_masked); | 56 | sigfillset(&all_masked); |
| 46 | sigdelset(&all_masked, SIGILL); | 57 | sigdelset(&all_masked, SIGILL); |
| 47 | sigdelset(&all_masked, SIGTRAP); | 58 | sigdelset(&all_masked, SIGTRAP); |
| @@ -49,8 +60,6 @@ OPENSSL_cpuid_setup(void) | |||
| 49 | sigdelset(&all_masked, SIGBUS); | 60 | sigdelset(&all_masked, SIGBUS); |
| 50 | sigdelset(&all_masked, SIGSEGV); | 61 | sigdelset(&all_masked, SIGSEGV); |
| 51 | 62 | ||
| 52 | OPENSSL_armcap_P = 0; | ||
| 53 | |||
| 54 | memset(&ill_act, 0, sizeof(ill_act)); | 63 | memset(&ill_act, 0, sizeof(ill_act)); |
| 55 | ill_act.sa_handler = ill_handler; | 64 | ill_act.sa_handler = ill_handler; |
| 56 | ill_act.sa_mask = all_masked; | 65 | ill_act.sa_mask = all_masked; |
| @@ -65,4 +74,5 @@ OPENSSL_cpuid_setup(void) | |||
| 65 | 74 | ||
| 66 | sigaction (SIGILL, &ill_oact, NULL); | 75 | sigaction (SIGILL, &ill_oact, NULL); |
| 67 | sigprocmask(SIG_SETMASK, &oset, NULL); | 76 | sigprocmask(SIG_SETMASK, &oset, NULL); |
| 77 | #endif | ||
| 68 | } | 78 | } |
diff --git a/src/lib/libcrypto/armv4cpuid.S b/src/lib/libcrypto/armv4cpuid.S index 2354b39a55..5ca979f3b3 100644 --- a/src/lib/libcrypto/armv4cpuid.S +++ b/src/lib/libcrypto/armv4cpuid.S | |||
| @@ -4,12 +4,14 @@ | |||
| 4 | .code 32 | 4 | .code 32 |
| 5 | 5 | ||
| 6 | .align 5 | 6 | .align 5 |
| 7 | #if __ARM_ARCH__>=7 | ||
| 7 | .global _armv7_neon_probe | 8 | .global _armv7_neon_probe |
| 8 | .type _armv7_neon_probe,%function | 9 | .type _armv7_neon_probe,%function |
| 9 | _armv7_neon_probe: | 10 | _armv7_neon_probe: |
| 10 | .word 0xf26ee1fe @ vorr q15,q15,q15 | 11 | .word 0xf26ee1fe @ vorr q15,q15,q15 |
| 11 | .word 0xe12fff1e @ bx lr | 12 | .word 0xe12fff1e @ bx lr |
| 12 | .size _armv7_neon_probe,.-_armv7_neon_probe | 13 | .size _armv7_neon_probe,.-_armv7_neon_probe |
| 14 | #endif | ||
| 13 | 15 | ||
| 14 | .global OPENSSL_atomic_add | 16 | .global OPENSSL_atomic_add |
| 15 | .type OPENSSL_atomic_add,%function | 17 | .type OPENSSL_atomic_add,%function |
diff --git a/src/lib/libssl/src/crypto/armcap.c b/src/lib/libssl/src/crypto/armcap.c index f40993c1d5..0476f5a4f5 100644 --- a/src/lib/libssl/src/crypto/armcap.c +++ b/src/lib/libssl/src/crypto/armcap.c | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | 9 | ||
| 10 | unsigned int OPENSSL_armcap_P; | 10 | unsigned int OPENSSL_armcap_P; |
| 11 | 11 | ||
| 12 | #if __ARM_ARCH__ >= 7 | ||
| 12 | static sigset_t all_masked; | 13 | static sigset_t all_masked; |
| 13 | 14 | ||
| 14 | static sigjmp_buf ill_jmp; | 15 | static sigjmp_buf ill_jmp; |
| @@ -20,6 +21,7 @@ static sigjmp_buf ill_jmp; | |||
| 20 | * ARM compilers support inline assembler... | 21 | * ARM compilers support inline assembler... |
| 21 | */ | 22 | */ |
| 22 | void _armv7_neon_probe(void); | 23 | void _armv7_neon_probe(void); |
| 24 | #endif | ||
| 23 | 25 | ||
| 24 | #if defined(__GNUC__) && __GNUC__>=2 | 26 | #if defined(__GNUC__) && __GNUC__>=2 |
| 25 | void OPENSSL_cpuid_setup(void) __attribute__((constructor)); | 27 | void OPENSSL_cpuid_setup(void) __attribute__((constructor)); |
| @@ -28,20 +30,29 @@ void OPENSSL_cpuid_setup(void) __attribute__((constructor)); | |||
| 28 | void | 30 | void |
| 29 | OPENSSL_cpuid_setup(void) | 31 | OPENSSL_cpuid_setup(void) |
| 30 | { | 32 | { |
| 33 | #ifndef __OpenBSD__ | ||
| 31 | char *e; | 34 | char *e; |
| 35 | #endif | ||
| 36 | #if __ARM_ARCH__ >= 7 | ||
| 32 | struct sigaction ill_oact, ill_act; | 37 | struct sigaction ill_oact, ill_act; |
| 33 | sigset_t oset; | 38 | sigset_t oset; |
| 39 | #endif | ||
| 34 | static int trigger = 0; | 40 | static int trigger = 0; |
| 35 | 41 | ||
| 36 | if (trigger) | 42 | if (trigger) |
| 37 | return; | 43 | return; |
| 38 | trigger = 1; | 44 | trigger = 1; |
| 39 | 45 | ||
| 46 | #ifndef __OpenBSD__ | ||
| 40 | if ((e = getenv("OPENSSL_armcap"))) { | 47 | if ((e = getenv("OPENSSL_armcap"))) { |
| 41 | OPENSSL_armcap_P = strtoul(e, NULL, 0); | 48 | OPENSSL_armcap_P = strtoul(e, NULL, 0); |
| 42 | return; | 49 | return; |
| 43 | } | 50 | } |
| 51 | #endif | ||
| 44 | 52 | ||
| 53 | OPENSSL_armcap_P = 0; | ||
| 54 | |||
| 55 | #if __ARM_ARCH__ >= 7 | ||
| 45 | sigfillset(&all_masked); | 56 | sigfillset(&all_masked); |
| 46 | sigdelset(&all_masked, SIGILL); | 57 | sigdelset(&all_masked, SIGILL); |
| 47 | sigdelset(&all_masked, SIGTRAP); | 58 | sigdelset(&all_masked, SIGTRAP); |
| @@ -49,8 +60,6 @@ OPENSSL_cpuid_setup(void) | |||
| 49 | sigdelset(&all_masked, SIGBUS); | 60 | sigdelset(&all_masked, SIGBUS); |
| 50 | sigdelset(&all_masked, SIGSEGV); | 61 | sigdelset(&all_masked, SIGSEGV); |
| 51 | 62 | ||
| 52 | OPENSSL_armcap_P = 0; | ||
| 53 | |||
| 54 | memset(&ill_act, 0, sizeof(ill_act)); | 63 | memset(&ill_act, 0, sizeof(ill_act)); |
| 55 | ill_act.sa_handler = ill_handler; | 64 | ill_act.sa_handler = ill_handler; |
| 56 | ill_act.sa_mask = all_masked; | 65 | ill_act.sa_mask = all_masked; |
| @@ -65,4 +74,5 @@ OPENSSL_cpuid_setup(void) | |||
| 65 | 74 | ||
| 66 | sigaction (SIGILL, &ill_oact, NULL); | 75 | sigaction (SIGILL, &ill_oact, NULL); |
| 67 | sigprocmask(SIG_SETMASK, &oset, NULL); | 76 | sigprocmask(SIG_SETMASK, &oset, NULL); |
| 77 | #endif | ||
| 68 | } | 78 | } |
diff --git a/src/lib/libssl/src/crypto/armv4cpuid.S b/src/lib/libssl/src/crypto/armv4cpuid.S index 2354b39a55..5ca979f3b3 100644 --- a/src/lib/libssl/src/crypto/armv4cpuid.S +++ b/src/lib/libssl/src/crypto/armv4cpuid.S | |||
| @@ -4,12 +4,14 @@ | |||
| 4 | .code 32 | 4 | .code 32 |
| 5 | 5 | ||
| 6 | .align 5 | 6 | .align 5 |
| 7 | #if __ARM_ARCH__>=7 | ||
| 7 | .global _armv7_neon_probe | 8 | .global _armv7_neon_probe |
| 8 | .type _armv7_neon_probe,%function | 9 | .type _armv7_neon_probe,%function |
| 9 | _armv7_neon_probe: | 10 | _armv7_neon_probe: |
| 10 | .word 0xf26ee1fe @ vorr q15,q15,q15 | 11 | .word 0xf26ee1fe @ vorr q15,q15,q15 |
| 11 | .word 0xe12fff1e @ bx lr | 12 | .word 0xe12fff1e @ bx lr |
| 12 | .size _armv7_neon_probe,.-_armv7_neon_probe | 13 | .size _armv7_neon_probe,.-_armv7_neon_probe |
| 14 | #endif | ||
| 13 | 15 | ||
| 14 | .global OPENSSL_atomic_add | 16 | .global OPENSSL_atomic_add |
| 15 | .type OPENSSL_atomic_add,%function | 17 | .type OPENSSL_atomic_add,%function |
