Index: linux-arm/crypto/sha/sha256-armv4.S |
diff --git a/linux-arm/crypto/sha/sha256-armv4.S b/linux-arm/crypto/sha/sha256-armv4.S |
index 60400413222303662a080794a62ef1b64af2b1b1..f37fd7c7cfc2d880cc219ceee21b1424c28c6c69 100644 |
--- a/linux-arm/crypto/sha/sha256-armv4.S |
+++ b/linux-arm/crypto/sha/sha256-armv4.S |
@@ -1,4 +1,11 @@ |
#if defined(__arm__) |
+@ Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. |
+@ |
+@ Licensed under the OpenSSL license (the "License"). You may not use |
+@ this file except in compliance with the License. You can obtain a copy |
+@ in the file LICENSE in the source distribution or at |
+@ https://www.openssl.org/source/license.html |
+ |
@ ==================================================================== |
@ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL |
@@ -45,16 +52,11 @@ |
#endif |
.text |
-#if __ARM_ARCH__<7 |
-.code 32 |
-#else |
+#if defined(__thumb2__) |
.syntax unified |
-# if defined(__thumb2__) && !defined(__APPLE__) |
-# define adrl adr |
.thumb |
-# else |
+#else |
.code 32 |
-# endif |
#endif |
.type K256,%object |
@@ -89,10 +91,10 @@ K256: |
.type sha256_block_data_order,%function |
sha256_block_data_order: |
.Lsha256_block_data_order: |
-#if __ARM_ARCH__<7 |
+#if __ARM_ARCH__<7 && !defined(__thumb2__) |
sub r3,pc,#8 @ sha256_block_data_order |
#else |
- adr r3,sha256_block_data_order |
+ adr r3,.Lsha256_block_data_order |
#endif |
#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
ldr r12,.LOPENSSL_armcap |
@@ -1878,13 +1880,14 @@ sha256_block_data_order: |
.globl sha256_block_data_order_neon |
.hidden sha256_block_data_order_neon |
.type sha256_block_data_order_neon,%function |
-.align 4 |
+.align 5 |
+.skip 16 |
sha256_block_data_order_neon: |
.LNEON: |
stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
sub r11,sp,#16*4+16 |
- adrl r14,K256 |
+ adr r14,K256 |
bic r11,r11,#15 @ align for 128-bit stores |
mov r12,sp |
mov sp,r11 @ alloca |
@@ -2660,7 +2663,7 @@ sha256_block_data_order_neon: |
#endif |
#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
-# if defined(__thumb2__) && !defined(__APPLE__) |
+# if defined(__thumb2__) |
# define INST(a,b,c,d) .byte c,d|0xc,a,b |
# else |
# define INST(a,b,c,d) .byte a,b,c,d |
@@ -2671,16 +2674,11 @@ sha256_block_data_order_neon: |
sha256_block_data_order_armv8: |
.LARMv8: |
vld1.32 {q0,q1},[r0] |
-# ifdef __APPLE__ |
sub r3,r3,#256+32 |
-# elif defined(__thumb2__) |
- adr r3,.LARMv8 |
- sub r3,r3,#.LARMv8-K256 |
-# else |
- adrl r3,K256 |
-# endif |
add r2,r1,r2,lsl#6 @ len to point at the end of inp |
+ b .Loop_v8 |
+.align 4 |
.Loop_v8: |
vld1.8 {q8,q9},[r1]! |
vld1.8 {q10,q11},[r1]! |