diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2022-05-12 09:06:07 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2022-05-15 11:06:02 +0300 |
commit | fd02e8e78470deb661269c429f3348f811c054c6 (patch) | |
tree | 65db38859f583410d4e59ead6b102563dc6d9a3a /cipher/chacha20-aarch64.S | |
parent | a9700956361d280746f2bffe94cbdb72c95eb3ed (diff) | |
download | libgcrypt-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.S | 8 |
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]; |