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 20 matching lines...) Expand all Loading... |
31 @ byte in 12.5 cycles or 23% faster than integer-only code. Snapdragon | 31 @ byte in 12.5 cycles or 23% faster than integer-only code. Snapdragon |
32 @ S4 does it in 12.5 cycles too, but it's 50% faster than integer-only | 32 @ S4 does it in 12.5 cycles too, but it's 50% faster than integer-only |
33 @ code (meaning that latter performs sub-optimally, nothing was done | 33 @ code (meaning that latter performs sub-optimally, nothing was done |
34 @ about it). | 34 @ about it). |
35 | 35 |
36 @ May 2014. | 36 @ May 2014. |
37 @ | 37 @ |
38 @ Add ARMv8 code path performing at 2.0 cpb on Apple A7. | 38 @ Add ARMv8 code path performing at 2.0 cpb on Apple A7. |
39 | 39 |
40 #ifndef __KERNEL__ | 40 #ifndef __KERNEL__ |
41 # include <openssl/arm_arch.h> | 41 # include "arm_arch.h" |
42 #else | 42 #else |
43 # define __ARM_ARCH__ __LINUX_ARM_ARCH__ | 43 # define __ARM_ARCH__ __LINUX_ARM_ARCH__ |
44 # define __ARM_MAX_ARCH__ 7 | 44 # define __ARM_MAX_ARCH__ 7 |
45 #endif | 45 #endif |
46 | 46 |
47 .text | 47 .text |
48 #if __ARM_ARCH__<7 | 48 #if __ARM_ARCH__<7 |
49 .code 32 | 49 .code 32 |
50 #else | 50 #else |
51 .syntax unified | 51 .syntax unified |
(...skipping 26 matching lines...) Expand all Loading... |
78 .word 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 | 78 .word 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 |
79 .size K256,.-K256 | 79 .size K256,.-K256 |
80 .word 0 @ terminator | 80 .word 0 @ terminator |
81 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 81 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
82 .LOPENSSL_armcap: | 82 .LOPENSSL_armcap: |
83 .word OPENSSL_armcap_P-.Lsha256_block_data_order | 83 .word OPENSSL_armcap_P-.Lsha256_block_data_order |
84 #endif | 84 #endif |
85 .align 5 | 85 .align 5 |
86 | 86 |
87 .globl sha256_block_data_order | 87 .globl sha256_block_data_order |
88 .hidden sha256_block_data_order | |
89 .type sha256_block_data_order,%function | 88 .type sha256_block_data_order,%function |
90 sha256_block_data_order: | 89 sha256_block_data_order: |
91 .Lsha256_block_data_order: | 90 .Lsha256_block_data_order: |
92 #if __ARM_ARCH__<7 | 91 #if __ARM_ARCH__<7 |
93 sub r3,pc,#8 @ sha256_block_data_order | 92 sub r3,pc,#8 @ sha256_block_data_order |
94 #else | 93 #else |
95 adr r3,sha256_block_data_order | 94 adr r3,sha256_block_data_order |
96 #endif | 95 #endif |
97 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 96 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
98 ldr r12,.LOPENSSL_armcap | 97 ldr r12,.LOPENSSL_armcap |
(...skipping 1770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1869 tst lr,#1 | 1868 tst lr,#1 |
1870 moveq pc,lr @ be binary compatible with V4, yet | 1869 moveq pc,lr @ be binary compatible with V4, yet |
1871 .word 0xe12fff1e @ interoperable with Thumb ISA:-) | 1870 .word 0xe12fff1e @ interoperable with Thumb ISA:-) |
1872 #endif | 1871 #endif |
1873 .size sha256_block_data_order,.-sha256_block_data_order | 1872 .size sha256_block_data_order,.-sha256_block_data_order |
1874 #if __ARM_MAX_ARCH__>=7 | 1873 #if __ARM_MAX_ARCH__>=7 |
1875 .arch armv7-a | 1874 .arch armv7-a |
1876 .fpu neon | 1875 .fpu neon |
1877 | 1876 |
1878 .globl sha256_block_data_order_neon | 1877 .globl sha256_block_data_order_neon |
1879 .hidden sha256_block_data_order_neon | |
1880 .type sha256_block_data_order_neon,%function | 1878 .type sha256_block_data_order_neon,%function |
1881 .align 4 | 1879 .align 4 |
1882 sha256_block_data_order_neon: | 1880 sha256_block_data_order_neon: |
1883 .LNEON: | 1881 .LNEON: |
1884 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} | 1882 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
1885 | 1883 |
1886 sub r11,sp,#16*4+16 | 1884 sub r11,sp,#16*4+16 |
1887 adrl r14,K256 | 1885 adrl r14,K256 |
1888 bic r11,r11,#15 @ align for 128-bit stores | 1886 bic r11,r11,#15 @ align for 128-bit stores |
1889 mov r12,sp | 1887 mov r12,sp |
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2810 bx lr @ bx lr | 2808 bx lr @ bx lr |
2811 .size sha256_block_data_order_armv8,.-sha256_block_data_order_armv8 | 2809 .size sha256_block_data_order_armv8,.-sha256_block_data_order_armv8 |
2812 #endif | 2810 #endif |
2813 .byte 83,72,65,50,53,54,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,47,65,82,77,118,56,44,32,6
7,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,1
10,115,115,108,46,111,114,103,62,0 | 2811 .byte 83,72,65,50,53,54,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,47,65,82,77,118,56,44,32,6
7,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,1
10,115,115,108,46,111,114,103,62,0 |
2814 .align 2 | 2812 .align 2 |
2815 .align 2 | 2813 .align 2 |
2816 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 2814 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
2817 .comm OPENSSL_armcap_P,4,4 | 2815 .comm OPENSSL_armcap_P,4,4 |
2818 .hidden OPENSSL_armcap_P | 2816 .hidden OPENSSL_armcap_P |
2819 #endif | 2817 #endif |
2820 #endif | 2818 #endif |
OLD | NEW |