summaryrefslogtreecommitdiff
path: root/cipher/chacha20-aarch64.S
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@iki.fi>2022-05-12 09:06:07 +0300
committerJussi Kivilinna <jussi.kivilinna@iki.fi>2022-05-15 11:06:02 +0300
commitfd02e8e78470deb661269c429f3348f811c054c6 (patch)
tree65db38859f583410d4e59ead6b102563dc6d9a3a /cipher/chacha20-aarch64.S
parenta9700956361d280746f2bffe94cbdb72c95eb3ed (diff)
downloadlibgcrypt-fd02e8e78470deb661269c429f3348f811c054c6.tar.gz
aarch64-asm: use ADR for getting pointers for local labels
* cipher/asm-common-aarch64.h (GET_DATA_POINTER): Remove. (GET_LOCAL_POINTER): New. * cipher/camellia-aarch64.S: Use GET_LOCAL_POINTER instead of ADR instruction directly. * cipher/chacha20-aarch64.S: Use GET_LOCAL_POINTER instead of GET_DATA_POINTER. * cipher/cipher-gcm-armv8-aarch64-ce.S: Likewise. * cipher/crc-armv8-aarch64-ce.S: Likewise. * cipher/sha1-armv8-aarch64-ce.S: Likewise. * cipher/sha256-armv8-aarch64-ce.S: Likewise. * cipher/sm3-aarch64.S: Likewise. * cipher/sm3-armv8-aarch64-ce.S: Likewise. * cipher/sm4-aarch64.S: Likewise. --- Switch to use ADR instead of ADRP/LDR or ADRP/ADD for getting data pointers within assembly files. ADR is more portable across targets and does not require labels to be declared in GOT tables. Reviewed-and-tested-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'cipher/chacha20-aarch64.S')
-rw-r--r--cipher/chacha20-aarch64.S8
1 files changed, 4 insertions, 4 deletions
diff --git a/cipher/chacha20-aarch64.S b/cipher/chacha20-aarch64.S
index 2a980b95..540f892b 100644
--- a/cipher/chacha20-aarch64.S
+++ b/cipher/chacha20-aarch64.S
@@ -206,10 +206,10 @@ _gcry_chacha20_aarch64_blocks4:
*/
CFI_STARTPROC()
- GET_DATA_POINTER(CTR, _gcry_chacha20_aarch64_blocks4_data_rot8);
+ GET_LOCAL_POINTER(CTR, _gcry_chacha20_aarch64_blocks4_data_rot8);
add INPUT_CTR, INPUT, #(12*4);
ld1 {ROT8.16b}, [CTR];
- GET_DATA_POINTER(CTR, _gcry_chacha20_aarch64_blocks4_data_inc_counter);
+ GET_LOCAL_POINTER(CTR, _gcry_chacha20_aarch64_blocks4_data_inc_counter);
mov INPUT_POS, INPUT;
ld1 {VCTR.16b}, [CTR];
@@ -383,10 +383,10 @@ _gcry_chacha20_poly1305_aarch64_blocks4:
mov POLY_RSTATE, x4;
mov POLY_RSRC, x5;
- GET_DATA_POINTER(CTR, _gcry_chacha20_aarch64_blocks4_data_rot8);
+ GET_LOCAL_POINTER(CTR, _gcry_chacha20_aarch64_blocks4_data_rot8);
add INPUT_CTR, INPUT, #(12*4);
ld1 {ROT8.16b}, [CTR];
- GET_DATA_POINTER(CTR, _gcry_chacha20_aarch64_blocks4_data_inc_counter);
+ GET_LOCAL_POINTER(CTR, _gcry_chacha20_aarch64_blocks4_data_inc_counter);
mov INPUT_POS, INPUT;
ld1 {VCTR.16b}, [CTR];