summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/armcap.c14
-rw-r--r--src/lib/libcrypto/armv4cpuid.S2
-rw-r--r--src/lib/libssl/src/crypto/armcap.c14
-rw-r--r--src/lib/libssl/src/crypto/armv4cpuid.S2
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
10unsigned int OPENSSL_armcap_P; 10unsigned int OPENSSL_armcap_P;
11 11
12#if __ARM_ARCH__ >= 7
12static sigset_t all_masked; 13static sigset_t all_masked;
13 14
14static sigjmp_buf ill_jmp; 15static 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 */
22void _armv7_neon_probe(void); 23void _armv7_neon_probe(void);
24#endif
23 25
24#if defined(__GNUC__) && __GNUC__>=2 26#if defined(__GNUC__) && __GNUC__>=2
25void OPENSSL_cpuid_setup(void) __attribute__((constructor)); 27void OPENSSL_cpuid_setup(void) __attribute__((constructor));
@@ -28,20 +30,29 @@ void OPENSSL_cpuid_setup(void) __attribute__((constructor));
28void 30void
29OPENSSL_cpuid_setup(void) 31OPENSSL_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
10unsigned int OPENSSL_armcap_P; 10unsigned int OPENSSL_armcap_P;
11 11
12#if __ARM_ARCH__ >= 7
12static sigset_t all_masked; 13static sigset_t all_masked;
13 14
14static sigjmp_buf ill_jmp; 15static 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 */
22void _armv7_neon_probe(void); 23void _armv7_neon_probe(void);
24#endif
23 25
24#if defined(__GNUC__) && __GNUC__>=2 26#if defined(__GNUC__) && __GNUC__>=2
25void OPENSSL_cpuid_setup(void) __attribute__((constructor)); 27void OPENSSL_cpuid_setup(void) __attribute__((constructor));
@@ -28,20 +30,29 @@ void OPENSSL_cpuid_setup(void) __attribute__((constructor));
28void 30void
29OPENSSL_cpuid_setup(void) 31OPENSSL_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