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 <openssl/arm_arch.h> | 50 # include "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 | |
137 .type sha512_block_data_order,%function | 136 .type sha512_block_data_order,%function |
138 sha512_block_data_order: | 137 sha512_block_data_order: |
139 .Lsha512_block_data_order: | 138 .Lsha512_block_data_order: |
140 #if __ARM_ARCH__<7 | 139 #if __ARM_ARCH__<7 |
141 sub r3,pc,#8 @ sha512_block_data_order | 140 sub r3,pc,#8 @ sha512_block_data_order |
142 #else | 141 #else |
143 adr r3,sha512_block_data_order | 142 adr r3,sha512_block_data_order |
144 #endif | 143 #endif |
145 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 144 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
146 ldr r12,.LOPENSSL_armcap | 145 ldr r12,.LOPENSSL_armcap |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
527 tst lr,#1 | 526 tst lr,#1 |
528 moveq pc,lr @ be binary compatible with V4, yet | 527 moveq pc,lr @ be binary compatible with V4, yet |
529 .word 0xe12fff1e @ interoperable with Thumb ISA:-) | 528 .word 0xe12fff1e @ interoperable with Thumb ISA:-) |
530 #endif | 529 #endif |
531 .size sha512_block_data_order,.-sha512_block_data_order | 530 .size sha512_block_data_order,.-sha512_block_data_order |
532 #if __ARM_MAX_ARCH__>=7 | 531 #if __ARM_MAX_ARCH__>=7 |
533 .arch armv7-a | 532 .arch armv7-a |
534 .fpu neon | 533 .fpu neon |
535 | 534 |
536 .globl sha512_block_data_order_neon | 535 .globl sha512_block_data_order_neon |
537 .hidden sha512_block_data_order_neon | |
538 .type sha512_block_data_order_neon,%function | 536 .type sha512_block_data_order_neon,%function |
539 .align 4 | 537 .align 4 |
540 sha512_block_data_order_neon: | 538 sha512_block_data_order_neon: |
541 .LNEON: | 539 .LNEON: |
542 dmb @ errata #451034 on early Cortex A8 | 540 dmb @ errata #451034 on early Cortex A8 |
543 add r2,r1,r2,lsl#7 @ len to point at the end of inp | 541 add r2,r1,r2,lsl#7 @ len to point at the end of inp |
544 adr r3,K512 | 542 adr r3,K512 |
545 VFP_ABI_PUSH | 543 VFP_ABI_PUSH |
546 vldmia r0,{d16,d17,d18,d19,d20,d21,d22,d23} @ load context | 544 vldmia r0,{d16,d17,d18,d19,d20,d21,d22,d23} @ load context |
547 .Loop_neon: | 545 .Loop_neon: |
(...skipping 1313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1861 bx lr @ .word 0xe12fff1e | 1859 bx lr @ .word 0xe12fff1e |
1862 .size sha512_block_data_order_neon,.-sha512_block_data_order_neon | 1860 .size sha512_block_data_order_neon,.-sha512_block_data_order_neon |
1863 #endif | 1861 #endif |
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 | 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 |
1865 .align 2 | 1863 .align 2 |
1866 .align 2 | 1864 .align 2 |
1867 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 1865 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
1868 .comm OPENSSL_armcap_P,4,4 | 1866 .comm OPENSSL_armcap_P,4,4 |
1869 .hidden OPENSSL_armcap_P | 1867 .hidden OPENSSL_armcap_P |
1870 #endif | 1868 #endif |
1871 #endif | 1869 #endif |
OLD | NEW |