| OLD | NEW |
| 1 #if defined(__arm__) | 1 #if defined(__arm__) |
| 2 @ Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. |
| 3 @ |
| 4 @ Licensed under the OpenSSL license (the "License"). You may not use |
| 5 @ this file except in compliance with the License. You can obtain a copy |
| 6 @ in the file LICENSE in the source distribution or at |
| 7 @ https://www.openssl.org/source/license.html |
| 8 |
| 2 | 9 |
| 3 @ ==================================================================== | 10 @ ==================================================================== |
| 4 @ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL | 11 @ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL |
| 5 @ project. The module is, however, dual licensed under OpenSSL and | 12 @ project. The module is, however, dual licensed under OpenSSL and |
| 6 @ CRYPTOGAMS licenses depending on where you obtain it. For further | 13 @ CRYPTOGAMS licenses depending on where you obtain it. For further |
| 7 @ details see http://www.openssl.org/~appro/cryptogams/. | 14 @ details see http://www.openssl.org/~appro/cryptogams/. |
| 8 @ | 15 @ |
| 9 @ Permission to use under GPL terms is granted. | 16 @ Permission to use under GPL terms is granted. |
| 10 @ ==================================================================== | 17 @ ==================================================================== |
| 11 | 18 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 38 @ Add ARMv8 code path performing at 2.0 cpb on Apple A7. | 45 @ Add ARMv8 code path performing at 2.0 cpb on Apple A7. |
| 39 | 46 |
| 40 #ifndef __KERNEL__ | 47 #ifndef __KERNEL__ |
| 41 # include <openssl/arm_arch.h> | 48 # include <openssl/arm_arch.h> |
| 42 #else | 49 #else |
| 43 # define __ARM_ARCH__ __LINUX_ARM_ARCH__ | 50 # define __ARM_ARCH__ __LINUX_ARM_ARCH__ |
| 44 # define __ARM_MAX_ARCH__ 7 | 51 # define __ARM_MAX_ARCH__ 7 |
| 45 #endif | 52 #endif |
| 46 | 53 |
| 47 .text | 54 .text |
| 48 #if __ARM_ARCH__<7 | 55 #if defined(__thumb2__) |
| 56 .syntax»unified |
| 57 .thumb |
| 58 #else |
| 49 .code 32 | 59 .code 32 |
| 50 #else | |
| 51 .syntax unified | |
| 52 # if defined(__thumb2__) && !defined(__APPLE__) | |
| 53 # define adrl adr | |
| 54 .thumb | |
| 55 # else | |
| 56 .code 32 | |
| 57 # endif | |
| 58 #endif | 60 #endif |
| 59 | 61 |
| 60 .type K256,%object | 62 .type K256,%object |
| 61 .align 5 | 63 .align 5 |
| 62 K256: | 64 K256: |
| 63 .word 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 | 65 .word 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 |
| 64 .word 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 | 66 .word 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 |
| 65 .word 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 | 67 .word 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 |
| 66 .word 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 | 68 .word 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 |
| 67 .word 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc | 69 .word 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc |
| (...skipping 14 matching lines...) Expand all Loading... |
| 82 .LOPENSSL_armcap: | 84 .LOPENSSL_armcap: |
| 83 .word OPENSSL_armcap_P-.Lsha256_block_data_order | 85 .word OPENSSL_armcap_P-.Lsha256_block_data_order |
| 84 #endif | 86 #endif |
| 85 .align 5 | 87 .align 5 |
| 86 | 88 |
| 87 .globl sha256_block_data_order | 89 .globl sha256_block_data_order |
| 88 .hidden sha256_block_data_order | 90 .hidden sha256_block_data_order |
| 89 .type sha256_block_data_order,%function | 91 .type sha256_block_data_order,%function |
| 90 sha256_block_data_order: | 92 sha256_block_data_order: |
| 91 .Lsha256_block_data_order: | 93 .Lsha256_block_data_order: |
| 92 #if __ARM_ARCH__<7 | 94 #if __ARM_ARCH__<7 && !defined(__thumb2__) |
| 93 sub r3,pc,#8 @ sha256_block_data_order | 95 sub r3,pc,#8 @ sha256_block_data_order |
| 94 #else | 96 #else |
| 95 » adr» r3,sha256_block_data_order | 97 » adr» r3,.Lsha256_block_data_order |
| 96 #endif | 98 #endif |
| 97 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 99 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
| 98 ldr r12,.LOPENSSL_armcap | 100 ldr r12,.LOPENSSL_armcap |
| 99 ldr r12,[r3,r12] @ OPENSSL_armcap_P | 101 ldr r12,[r3,r12] @ OPENSSL_armcap_P |
| 100 #ifdef __APPLE__ | 102 #ifdef __APPLE__ |
| 101 ldr r12,[r12] | 103 ldr r12,[r12] |
| 102 #endif | 104 #endif |
| 103 tst r12,#ARMV8_SHA256 | 105 tst r12,#ARMV8_SHA256 |
| 104 bne .LARMv8 | 106 bne .LARMv8 |
| 105 tst r12,#ARMV7_NEON | 107 tst r12,#ARMV7_NEON |
| (...skipping 1765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1871 .word 0xe12fff1e @ interoperable with Thumb ISA:-) | 1873 .word 0xe12fff1e @ interoperable with Thumb ISA:-) |
| 1872 #endif | 1874 #endif |
| 1873 .size sha256_block_data_order,.-sha256_block_data_order | 1875 .size sha256_block_data_order,.-sha256_block_data_order |
| 1874 #if __ARM_MAX_ARCH__>=7 | 1876 #if __ARM_MAX_ARCH__>=7 |
| 1875 .arch armv7-a | 1877 .arch armv7-a |
| 1876 .fpu neon | 1878 .fpu neon |
| 1877 | 1879 |
| 1878 .globl sha256_block_data_order_neon | 1880 .globl sha256_block_data_order_neon |
| 1879 .hidden sha256_block_data_order_neon | 1881 .hidden sha256_block_data_order_neon |
| 1880 .type sha256_block_data_order_neon,%function | 1882 .type sha256_block_data_order_neon,%function |
| 1881 .align» 4 | 1883 .align» 5 |
| 1884 .skip» 16 |
| 1882 sha256_block_data_order_neon: | 1885 sha256_block_data_order_neon: |
| 1883 .LNEON: | 1886 .LNEON: |
| 1884 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} | 1887 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
| 1885 | 1888 |
| 1886 sub r11,sp,#16*4+16 | 1889 sub r11,sp,#16*4+16 |
| 1887 » adrl» r14,K256 | 1890 » adr» r14,K256 |
| 1888 bic r11,r11,#15 @ align for 128-bit stores | 1891 bic r11,r11,#15 @ align for 128-bit stores |
| 1889 mov r12,sp | 1892 mov r12,sp |
| 1890 mov sp,r11 @ alloca | 1893 mov sp,r11 @ alloca |
| 1891 add r2,r1,r2,lsl#6 @ len to point at the end of inp | 1894 add r2,r1,r2,lsl#6 @ len to point at the end of inp |
| 1892 | 1895 |
| 1893 vld1.8 {q0},[r1]! | 1896 vld1.8 {q0},[r1]! |
| 1894 vld1.8 {q1},[r1]! | 1897 vld1.8 {q1},[r1]! |
| 1895 vld1.8 {q2},[r1]! | 1898 vld1.8 {q2},[r1]! |
| 1896 vld1.8 {q3},[r1]! | 1899 vld1.8 {q3},[r1]! |
| 1897 vld1.32 {q8},[r14,:128]! | 1900 vld1.32 {q8},[r14,:128]! |
| (...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2653 ldreq sp,[sp,#76] @ restore original sp | 2656 ldreq sp,[sp,#76] @ restore original sp |
| 2654 itt ne | 2657 itt ne |
| 2655 eorne r3,r5,r6 | 2658 eorne r3,r5,r6 |
| 2656 bne .L_00_48 | 2659 bne .L_00_48 |
| 2657 | 2660 |
| 2658 ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} | 2661 ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} |
| 2659 .size sha256_block_data_order_neon,.-sha256_block_data_order_neon | 2662 .size sha256_block_data_order_neon,.-sha256_block_data_order_neon |
| 2660 #endif | 2663 #endif |
| 2661 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 2664 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
| 2662 | 2665 |
| 2663 # if defined(__thumb2__) && !defined(__APPLE__) | 2666 # if defined(__thumb2__) |
| 2664 # define INST(a,b,c,d) .byte c,d|0xc,a,b | 2667 # define INST(a,b,c,d) .byte c,d|0xc,a,b |
| 2665 # else | 2668 # else |
| 2666 # define INST(a,b,c,d) .byte a,b,c,d | 2669 # define INST(a,b,c,d) .byte a,b,c,d |
| 2667 # endif | 2670 # endif |
| 2668 | 2671 |
| 2669 .type sha256_block_data_order_armv8,%function | 2672 .type sha256_block_data_order_armv8,%function |
| 2670 .align 5 | 2673 .align 5 |
| 2671 sha256_block_data_order_armv8: | 2674 sha256_block_data_order_armv8: |
| 2672 .LARMv8: | 2675 .LARMv8: |
| 2673 vld1.32 {q0,q1},[r0] | 2676 vld1.32 {q0,q1},[r0] |
| 2674 # ifdef __APPLE__ | |
| 2675 sub r3,r3,#256+32 | 2677 sub r3,r3,#256+32 |
| 2676 # elif defined(__thumb2__) | |
| 2677 adr r3,.LARMv8 | |
| 2678 sub r3,r3,#.LARMv8-K256 | |
| 2679 # else | |
| 2680 adrl r3,K256 | |
| 2681 # endif | |
| 2682 add r2,r1,r2,lsl#6 @ len to point at the end of inp | 2678 add r2,r1,r2,lsl#6 @ len to point at the end of inp |
| 2679 b .Loop_v8 |
| 2683 | 2680 |
| 2681 .align 4 |
| 2684 .Loop_v8: | 2682 .Loop_v8: |
| 2685 vld1.8 {q8,q9},[r1]! | 2683 vld1.8 {q8,q9},[r1]! |
| 2686 vld1.8 {q10,q11},[r1]! | 2684 vld1.8 {q10,q11},[r1]! |
| 2687 vld1.32 {q12},[r3]! | 2685 vld1.32 {q12},[r3]! |
| 2688 vrev32.8 q8,q8 | 2686 vrev32.8 q8,q8 |
| 2689 vrev32.8 q9,q9 | 2687 vrev32.8 q9,q9 |
| 2690 vrev32.8 q10,q10 | 2688 vrev32.8 q10,q10 |
| 2691 vrev32.8 q11,q11 | 2689 vrev32.8 q11,q11 |
| 2692 vmov q14,q0 @ offload | 2690 vmov q14,q0 @ offload |
| 2693 vmov q15,q1 | 2691 vmov q15,q1 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 |