[PATCH 03/11] sm4-aarch64: clear volatile vectors registers

Jussi Kivilinna <[email protected]>
Newsgroups gmane.comp.encryption.gpg.libgcrypt.devel
Message-ID <[email protected]>
* cipher/sm4-aarch64.S (clear_volatile_vec_regs): New.
(_gcry_sm4_aarch64_crypt_blk1_8, _gcry_sm4_aarch64_crypt)
(_gcry_sm4_aarch64_cbc_dec, _gcry_sm4_aarch64_cfb_dec)
(_gcry_sm4_aarch64_ctr_enc): Add clear_volatile_vec_regs.
--

Signed-off-by: Jussi Kivilinna <[email protected]>
---
 cipher/sm4-aarch64.S | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/cipher/sm4-aarch64.S b/cipher/sm4-aarch64.S
index cce6fcc4..bab4b4df 100644
--- a/cipher/sm4-aarch64.S
+++ b/cipher/sm4-aarch64.S
@@ -110,6 +110,12 @@ ELF(.size _gcry_sm4_aarch64_consts,.-_gcry_sm4_aarch64_consts)
         zip1 s2.2d, RTMP3.2d, RTMP1.2d;     \
         zip2 s3.2d, RTMP3.2d, RTMP1.2d;
 
+#define clear_volatile_vec_regs() \
+	CLEAR_REG(v0); CLEAR_REG(v1); CLEAR_REG(v2); CLEAR_REG(v3); \
+	CLEAR_REG(v4); CLEAR_REG(v5); CLEAR_REG(v6); \
+	/* v8-v15 are ABI callee saved. */ \
+	/* v16-v31 are loaded with non-secret (SM4 sbox). */
+
 
 .text
 
@@ -385,6 +391,7 @@ _gcry_sm4_aarch64_crypt_blk1_8:
 
 .Lblk8_store_output_done:
     VPOP_ABI;
+    clear_volatile_vec_regs();
     ldp x29, x30, [sp], #16;
     CFI_ADJUST_CFA_OFFSET(-16);
     CFI_RESTORE(x29);
@@ -427,6 +434,7 @@ _gcry_sm4_aarch64_crypt:
 
 .Lcrypt_end:
     VPOP_ABI;
+    clear_volatile_vec_regs();
     ldp x29, x30, [sp], #16;
     CFI_ADJUST_CFA_OFFSET(-16);
     CFI_RESTORE(x29);
@@ -491,6 +499,7 @@ _gcry_sm4_aarch64_cbc_dec:
     st1 {RIV.16b}, [x3];
 
     VPOP_ABI;
+    clear_volatile_vec_regs();
     ldp x29, x30, [sp], #16;
     CFI_ADJUST_CFA_OFFSET(-16);
     CFI_RESTORE(x29);
@@ -554,6 +563,7 @@ _gcry_sm4_aarch64_cfb_dec:
     st1 {v0.16b}, [x3];
 
     VPOP_ABI;
+    clear_volatile_vec_regs();
     ldp x29, x30, [sp], #16;
     CFI_ADJUST_CFA_OFFSET(-16);
     CFI_RESTORE(x29);
@@ -633,6 +643,7 @@ _gcry_sm4_aarch64_ctr_enc:
     stp x7, x8, [x3];
 
     VPOP_ABI;
+    clear_volatile_vec_regs();
     ldp x29, x30, [sp], #16;
     CFI_ADJUST_CFA_OFFSET(-16);
     CFI_RESTORE(x29);
-- 
2.45.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.