diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2016-06-30 21:34:46 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2016-06-30 21:34:46 +0300 |
commit | a6158a01a4d81a5d862e1e0a60bfd6063443311d (patch) | |
tree | 8ef35a65240b5c4c74ef88aaad5f21e472ad77c0 /cipher/rijndael-arm.S | |
parent | a09126242a51c4ea4564b0f70b808e4f27fe5a91 (diff) | |
download | libgcrypt-a6158a01a4d81a5d862e1e0a60bfd6063443311d.tar.gz |
Avoid unaligned accesses with ARM ldm/stm instructions
* cipher/rijndael-arm.S: Remove __ARM_FEATURE_UNALIGNED ifdefs, always
compile with unaligned load/store code paths.
* cipher/sha512-arm.S: Ditto.
--
Reported-by: Michael Plass <mfpnb@plass-family.net>
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'cipher/rijndael-arm.S')
-rw-r--r-- | cipher/rijndael-arm.S | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/cipher/rijndael-arm.S b/cipher/rijndael-arm.S index 694369da..e3a91c29 100644 --- a/cipher/rijndael-arm.S +++ b/cipher/rijndael-arm.S @@ -225,7 +225,7 @@ _gcry_aes_arm_encrypt_block: push {%r4-%r11, %ip, %lr}; /* read input block */ -#ifndef __ARM_FEATURE_UNALIGNED + /* test if src is unaligned */ tst %r2, #3; beq 1f; @@ -238,7 +238,6 @@ _gcry_aes_arm_encrypt_block: b 2f; .ltorg 1: -#endif /* aligned load */ ldm %r2, {RA, RB, RC, RD}; #ifndef __ARMEL__ @@ -277,7 +276,7 @@ _gcry_aes_arm_encrypt_block: add %sp, #16; /* store output block */ -#ifndef __ARM_FEATURE_UNALIGNED + /* test if dst is unaligned */ tst RT0, #3; beq 1f; @@ -290,7 +289,6 @@ _gcry_aes_arm_encrypt_block: b 2f; .ltorg 1: -#endif /* aligned store */ #ifndef __ARMEL__ rev RA, RA; @@ -484,7 +482,7 @@ _gcry_aes_arm_decrypt_block: push {%r4-%r11, %ip, %lr}; /* read input block */ -#ifndef __ARM_FEATURE_UNALIGNED + /* test if src is unaligned */ tst %r2, #3; beq 1f; @@ -497,7 +495,6 @@ _gcry_aes_arm_decrypt_block: b 2f; .ltorg 1: -#endif /* aligned load */ ldm %r2, {RA, RB, RC, RD}; #ifndef __ARMEL__ @@ -533,7 +530,7 @@ _gcry_aes_arm_decrypt_block: add %sp, #16; /* store output block */ -#ifndef __ARM_FEATURE_UNALIGNED + /* test if dst is unaligned */ tst RT0, #3; beq 1f; @@ -546,7 +543,6 @@ _gcry_aes_arm_decrypt_block: b 2f; .ltorg 1: -#endif /* aligned store */ #ifndef __ARMEL__ rev RA, RA; |