diff options
-rw-r--r-- | src/lib/libcrypto/aes/asm/aes-armv4.pl | 14 | ||||
-rw-r--r-- | src/lib/libcrypto/arm_arch.h | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/sha/asm/sha1-armv4-large.pl | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/sha/asm/sha256-armv4.pl | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/sha/asm/sha512-armv4.pl | 2 |
5 files changed, 16 insertions, 12 deletions
diff --git a/src/lib/libcrypto/aes/asm/aes-armv4.pl b/src/lib/libcrypto/aes/asm/aes-armv4.pl index 717cc1ed7f..1cb9586d4b 100644 --- a/src/lib/libcrypto/aes/asm/aes-armv4.pl +++ b/src/lib/libcrypto/aes/asm/aes-armv4.pl | |||
@@ -172,7 +172,7 @@ AES_encrypt: | |||
172 | mov $rounds,r0 @ inp | 172 | mov $rounds,r0 @ inp |
173 | mov $key,r2 | 173 | mov $key,r2 |
174 | sub $tbl,r3,#AES_encrypt-AES_Te @ Te | 174 | sub $tbl,r3,#AES_encrypt-AES_Te @ Te |
175 | #if __ARM_ARCH__<7 | 175 | #if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) |
176 | ldrb $s0,[$rounds,#3] @ load input data in endian-neutral | 176 | ldrb $s0,[$rounds,#3] @ load input data in endian-neutral |
177 | ldrb $t1,[$rounds,#2] @ manner... | 177 | ldrb $t1,[$rounds,#2] @ manner... |
178 | ldrb $t2,[$rounds,#1] | 178 | ldrb $t2,[$rounds,#1] |
@@ -216,7 +216,7 @@ AES_encrypt: | |||
216 | bl _armv4_AES_encrypt | 216 | bl _armv4_AES_encrypt |
217 | 217 | ||
218 | ldr $rounds,[sp],#4 @ pop out | 218 | ldr $rounds,[sp],#4 @ pop out |
219 | #if __ARM_ARCH__>=7 | 219 | #if __ARM_ARCH__>=7 && !defined(__STRICT_ALIGNMENT) |
220 | #ifdef __ARMEL__ | 220 | #ifdef __ARMEL__ |
221 | rev $s0,$s0 | 221 | rev $s0,$s0 |
222 | rev $s1,$s1 | 222 | rev $s1,$s1 |
@@ -432,7 +432,7 @@ _armv4_AES_set_encrypt_key: | |||
432 | mov lr,r1 @ bits | 432 | mov lr,r1 @ bits |
433 | mov $key,r2 @ key | 433 | mov $key,r2 @ key |
434 | 434 | ||
435 | #if __ARM_ARCH__<7 | 435 | #if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) |
436 | ldrb $s0,[$rounds,#3] @ load input data in endian-neutral | 436 | ldrb $s0,[$rounds,#3] @ load input data in endian-neutral |
437 | ldrb $t1,[$rounds,#2] @ manner... | 437 | ldrb $t1,[$rounds,#2] @ manner... |
438 | ldrb $t2,[$rounds,#1] | 438 | ldrb $t2,[$rounds,#1] |
@@ -517,7 +517,7 @@ _armv4_AES_set_encrypt_key: | |||
517 | b .Ldone | 517 | b .Ldone |
518 | 518 | ||
519 | .Lnot128: | 519 | .Lnot128: |
520 | #if __ARM_ARCH__<7 | 520 | #if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) |
521 | ldrb $i2,[$rounds,#19] | 521 | ldrb $i2,[$rounds,#19] |
522 | ldrb $t1,[$rounds,#18] | 522 | ldrb $t1,[$rounds,#18] |
523 | ldrb $t2,[$rounds,#17] | 523 | ldrb $t2,[$rounds,#17] |
@@ -588,7 +588,7 @@ _armv4_AES_set_encrypt_key: | |||
588 | b .L192_loop | 588 | b .L192_loop |
589 | 589 | ||
590 | .Lnot192: | 590 | .Lnot192: |
591 | #if __ARM_ARCH__<7 | 591 | #if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) |
592 | ldrb $i2,[$rounds,#27] | 592 | ldrb $i2,[$rounds,#27] |
593 | ldrb $t1,[$rounds,#26] | 593 | ldrb $t1,[$rounds,#26] |
594 | ldrb $t2,[$rounds,#25] | 594 | ldrb $t2,[$rounds,#25] |
@@ -888,7 +888,7 @@ AES_decrypt: | |||
888 | mov $rounds,r0 @ inp | 888 | mov $rounds,r0 @ inp |
889 | mov $key,r2 | 889 | mov $key,r2 |
890 | sub $tbl,r3,#AES_decrypt-AES_Td @ Td | 890 | sub $tbl,r3,#AES_decrypt-AES_Td @ Td |
891 | #if __ARM_ARCH__<7 | 891 | #if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) |
892 | ldrb $s0,[$rounds,#3] @ load input data in endian-neutral | 892 | ldrb $s0,[$rounds,#3] @ load input data in endian-neutral |
893 | ldrb $t1,[$rounds,#2] @ manner... | 893 | ldrb $t1,[$rounds,#2] @ manner... |
894 | ldrb $t2,[$rounds,#1] | 894 | ldrb $t2,[$rounds,#1] |
@@ -932,7 +932,7 @@ AES_decrypt: | |||
932 | bl _armv4_AES_decrypt | 932 | bl _armv4_AES_decrypt |
933 | 933 | ||
934 | ldr $rounds,[sp],#4 @ pop out | 934 | ldr $rounds,[sp],#4 @ pop out |
935 | #if __ARM_ARCH__>=7 | 935 | #if __ARM_ARCH__>=7 && !defined(__STRICT_ALIGNMENT) |
936 | #ifdef __ARMEL__ | 936 | #ifdef __ARMEL__ |
937 | rev $s0,$s0 | 937 | rev $s0,$s0 |
938 | rev $s1,$s1 | 938 | rev $s1,$s1 |
diff --git a/src/lib/libcrypto/arm_arch.h b/src/lib/libcrypto/arm_arch.h index 3304be81ab..8b8a05b5f7 100644 --- a/src/lib/libcrypto/arm_arch.h +++ b/src/lib/libcrypto/arm_arch.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: arm_arch.h,v 1.7 2015/06/29 06:40:06 jsg Exp $ */ | 1 | /* $OpenBSD: arm_arch.h,v 1.8 2018/01/07 12:35:52 kettenis Exp $ */ |
2 | #ifndef __ARM_ARCH_H__ | 2 | #ifndef __ARM_ARCH_H__ |
3 | #define __ARM_ARCH_H__ | 3 | #define __ARM_ARCH_H__ |
4 | 4 | ||
@@ -44,4 +44,8 @@ extern unsigned int OPENSSL_armcap_P; | |||
44 | #define ARMV7_NEON (1<<0) | 44 | #define ARMV7_NEON (1<<0) |
45 | #endif | 45 | #endif |
46 | 46 | ||
47 | #if defined(__OpenBSD__) | ||
48 | #define __STRICT_ALIGNMENT | ||
49 | #endif | ||
50 | |||
47 | #endif | 51 | #endif |
diff --git a/src/lib/libcrypto/sha/asm/sha1-armv4-large.pl b/src/lib/libcrypto/sha/asm/sha1-armv4-large.pl index 33da3e0e3c..8f0cdaf83c 100644 --- a/src/lib/libcrypto/sha/asm/sha1-armv4-large.pl +++ b/src/lib/libcrypto/sha/asm/sha1-armv4-large.pl | |||
@@ -95,7 +95,7 @@ ___ | |||
95 | sub BODY_00_15 { | 95 | sub BODY_00_15 { |
96 | my ($a,$b,$c,$d,$e)=@_; | 96 | my ($a,$b,$c,$d,$e)=@_; |
97 | $code.=<<___; | 97 | $code.=<<___; |
98 | #if __ARM_ARCH__<7 | 98 | #if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) |
99 | ldrb $t1,[$inp,#2] | 99 | ldrb $t1,[$inp,#2] |
100 | ldrb $t0,[$inp,#3] | 100 | ldrb $t0,[$inp,#3] |
101 | ldrb $t2,[$inp,#1] | 101 | ldrb $t2,[$inp,#1] |
diff --git a/src/lib/libcrypto/sha/asm/sha256-armv4.pl b/src/lib/libcrypto/sha/asm/sha256-armv4.pl index 9c84e8d93c..292520731c 100644 --- a/src/lib/libcrypto/sha/asm/sha256-armv4.pl +++ b/src/lib/libcrypto/sha/asm/sha256-armv4.pl | |||
@@ -51,7 +51,7 @@ sub BODY_00_15 { | |||
51 | my ($i,$a,$b,$c,$d,$e,$f,$g,$h) = @_; | 51 | my ($i,$a,$b,$c,$d,$e,$f,$g,$h) = @_; |
52 | 52 | ||
53 | $code.=<<___ if ($i<16); | 53 | $code.=<<___ if ($i<16); |
54 | #if __ARM_ARCH__>=7 | 54 | #if __ARM_ARCH__>=7 && !defined(__STRICT_ALIGNMENT) |
55 | ldr $T1,[$inp],#4 | 55 | ldr $T1,[$inp],#4 |
56 | #else | 56 | #else |
57 | ldrb $T1,[$inp,#3] @ $i | 57 | ldrb $T1,[$inp,#3] @ $i |
@@ -70,7 +70,7 @@ $code.=<<___; | |||
70 | eor $t1,$f,$g | 70 | eor $t1,$f,$g |
71 | #if $i>=16 | 71 | #if $i>=16 |
72 | add $T1,$T1,$t3 @ from BODY_16_xx | 72 | add $T1,$T1,$t3 @ from BODY_16_xx |
73 | #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | 73 | #elif __ARM_ARCH__>=7 && defined(__ARMEL__) && !defined(__STRICT_ALIGNMENT) |
74 | rev $T1,$T1 | 74 | rev $T1,$T1 |
75 | #endif | 75 | #endif |
76 | #if $i==15 | 76 | #if $i==15 |
diff --git a/src/lib/libcrypto/sha/asm/sha512-armv4.pl b/src/lib/libcrypto/sha/asm/sha512-armv4.pl index 7faf37b147..28ae155f4b 100644 --- a/src/lib/libcrypto/sha/asm/sha512-armv4.pl +++ b/src/lib/libcrypto/sha/asm/sha512-armv4.pl | |||
@@ -270,7 +270,7 @@ sha512_block_data_order: | |||
270 | str $Thi,[sp,#$Foff+4] | 270 | str $Thi,[sp,#$Foff+4] |
271 | 271 | ||
272 | .L00_15: | 272 | .L00_15: |
273 | #if __ARM_ARCH__<7 | 273 | #if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) |
274 | ldrb $Tlo,[$inp,#7] | 274 | ldrb $Tlo,[$inp,#7] |
275 | ldrb $t0, [$inp,#6] | 275 | ldrb $t0, [$inp,#6] |
276 | ldrb $t1, [$inp,#5] | 276 | ldrb $t1, [$inp,#5] |