OLD | NEW |
1 #if defined(__arm__) | 1 #if defined(__arm__) |
2 | 2 |
3 @ ==================================================================== | 3 @ ==================================================================== |
4 @ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL | 4 @ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL |
5 @ project. The module is, however, dual licensed under OpenSSL and | 5 @ project. The module is, however, dual licensed under OpenSSL and |
6 @ CRYPTOGAMS licenses depending on where you obtain it. For further | 6 @ CRYPTOGAMS licenses depending on where you obtain it. For further |
7 @ details see http://www.openssl.org/~appro/cryptogams/. | 7 @ details see http://www.openssl.org/~appro/cryptogams/. |
8 @ | 8 @ |
9 @ Permission to use under GPL terms is granted. | 9 @ Permission to use under GPL terms is granted. |
10 @ ==================================================================== | 10 @ ==================================================================== |
(...skipping 29 matching lines...) Expand all Loading... |
40 @ for further details. On side note Cortex-A15 processes one byte in | 40 @ for further details. On side note Cortex-A15 processes one byte in |
41 @ 16 cycles. | 41 @ 16 cycles. |
42 | 42 |
43 @ Byte order [in]dependence. ========================================= | 43 @ Byte order [in]dependence. ========================================= |
44 @ | 44 @ |
45 @ Originally caller was expected to maintain specific *dword* order in | 45 @ Originally caller was expected to maintain specific *dword* order in |
46 @ h[0-7], namely with most significant dword at *lower* address, which | 46 @ h[0-7], namely with most significant dword at *lower* address, which |
47 @ was reflected in below two parameters as 0 and 4. Now caller is | 47 @ was reflected in below two parameters as 0 and 4. Now caller is |
48 @ expected to maintain native byte order for whole 64-bit values. | 48 @ expected to maintain native byte order for whole 64-bit values. |
49 #ifndef __KERNEL__ | 49 #ifndef __KERNEL__ |
50 # include "arm_arch.h" | 50 # include <openssl/arm_arch.h> |
51 # define VFP_ABI_PUSH vstmdb sp!,{d8-d15} | 51 # define VFP_ABI_PUSH vstmdb sp!,{d8-d15} |
52 # define VFP_ABI_POP vldmia sp!,{d8-d15} | 52 # define VFP_ABI_POP vldmia sp!,{d8-d15} |
53 #else | 53 #else |
54 # define __ARM_ARCH__ __LINUX_ARM_ARCH__ | 54 # define __ARM_ARCH__ __LINUX_ARM_ARCH__ |
55 # define __ARM_MAX_ARCH__ 7 | 55 # define __ARM_MAX_ARCH__ 7 |
56 # define VFP_ABI_PUSH | 56 # define VFP_ABI_PUSH |
57 # define VFP_ABI_POP | 57 # define VFP_ABI_POP |
58 #endif | 58 #endif |
59 | 59 |
60 #ifdef __ARMEL__ | 60 #ifdef __ARMEL__ |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 .size K512,.-K512 | 126 .size K512,.-K512 |
127 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 127 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
128 .LOPENSSL_armcap: | 128 .LOPENSSL_armcap: |
129 .word OPENSSL_armcap_P-.Lsha512_block_data_order | 129 .word OPENSSL_armcap_P-.Lsha512_block_data_order |
130 .skip 32-4 | 130 .skip 32-4 |
131 #else | 131 #else |
132 .skip 32 | 132 .skip 32 |
133 #endif | 133 #endif |
134 | 134 |
135 .globl sha512_block_data_order | 135 .globl sha512_block_data_order |
| 136 .hidden sha512_block_data_order |
136 .type sha512_block_data_order,%function | 137 .type sha512_block_data_order,%function |
137 sha512_block_data_order: | 138 sha512_block_data_order: |
138 .Lsha512_block_data_order: | 139 .Lsha512_block_data_order: |
139 #if __ARM_ARCH__<7 | 140 #if __ARM_ARCH__<7 |
140 sub r3,pc,#8 @ sha512_block_data_order | 141 sub r3,pc,#8 @ sha512_block_data_order |
141 #else | 142 #else |
142 adr r3,sha512_block_data_order | 143 adr r3,sha512_block_data_order |
143 #endif | 144 #endif |
144 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 145 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
145 ldr r12,.LOPENSSL_armcap | 146 ldr r12,.LOPENSSL_armcap |
146 ldr r12,[r3,r12] @ OPENSSL_armcap_P | 147 ldr r12,[r3,r12] @ OPENSSL_armcap_P |
147 #ifdef __APPLE__ | 148 #ifdef __APPLE__ |
148 ldr r12,[r12] | 149 ldr r12,[r12] |
149 #endif | 150 #endif |
150 » tst» r12,#1 | 151 » tst» r12,#ARMV7_NEON |
151 bne .LNEON | 152 bne .LNEON |
152 #endif | 153 #endif |
153 add r2,r1,r2,lsl#7 @ len to point at the end of inp | 154 add r2,r1,r2,lsl#7 @ len to point at the end of inp |
154 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} | 155 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
155 sub r14,r3,#672 @ K512 | 156 sub r14,r3,#672 @ K512 |
156 sub sp,sp,#9*8 | 157 sub sp,sp,#9*8 |
157 | 158 |
158 ldr r7,[r0,#32+LO] | 159 ldr r7,[r0,#32+LO] |
159 ldr r8,[r0,#32+HI] | 160 ldr r8,[r0,#32+HI] |
160 ldr r9, [r0,#48+LO] | 161 ldr r9, [r0,#48+LO] |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 tst lr,#1 | 527 tst lr,#1 |
527 moveq pc,lr @ be binary compatible with V4, yet | 528 moveq pc,lr @ be binary compatible with V4, yet |
528 .word 0xe12fff1e @ interoperable with Thumb ISA:-) | 529 .word 0xe12fff1e @ interoperable with Thumb ISA:-) |
529 #endif | 530 #endif |
530 .size sha512_block_data_order,.-sha512_block_data_order | 531 .size sha512_block_data_order,.-sha512_block_data_order |
531 #if __ARM_MAX_ARCH__>=7 | 532 #if __ARM_MAX_ARCH__>=7 |
532 .arch armv7-a | 533 .arch armv7-a |
533 .fpu neon | 534 .fpu neon |
534 | 535 |
535 .globl sha512_block_data_order_neon | 536 .globl sha512_block_data_order_neon |
| 537 .hidden sha512_block_data_order_neon |
536 .type sha512_block_data_order_neon,%function | 538 .type sha512_block_data_order_neon,%function |
537 .align 4 | 539 .align 4 |
538 sha512_block_data_order_neon: | 540 sha512_block_data_order_neon: |
539 .LNEON: | 541 .LNEON: |
540 dmb @ errata #451034 on early Cortex A8 | 542 dmb @ errata #451034 on early Cortex A8 |
541 add r2,r1,r2,lsl#7 @ len to point at the end of inp | 543 add r2,r1,r2,lsl#7 @ len to point at the end of inp |
542 adr r3,K512 | 544 adr r3,K512 |
543 VFP_ABI_PUSH | 545 VFP_ABI_PUSH |
544 vldmia r0,{d16,d17,d18,d19,d20,d21,d22,d23} @ load context | 546 vldmia r0,{d16,d17,d18,d19,d20,d21,d22,d23} @ load context |
545 .Loop_neon: | 547 .Loop_neon: |
(...skipping 1313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1859 bx lr @ .word 0xe12fff1e | 1861 bx lr @ .word 0xe12fff1e |
1860 .size sha512_block_data_order_neon,.-sha512_block_data_order_neon | 1862 .size sha512_block_data_order_neon,.-sha512_block_data_order_neon |
1861 #endif | 1863 #endif |
1862 .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114
,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71
,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,1
11,114,103,62,0 | 1864 .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114
,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71
,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,1
11,114,103,62,0 |
1863 .align 2 | 1865 .align 2 |
1864 .align 2 | 1866 .align 2 |
1865 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 1867 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
1866 .comm OPENSSL_armcap_P,4,4 | 1868 .comm OPENSSL_armcap_P,4,4 |
1867 .hidden OPENSSL_armcap_P | 1869 .hidden OPENSSL_armcap_P |
1868 #endif | 1870 #endif |
1869 #endif | 1871 #endif |
OLD | NEW |