diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2013-09-01 16:50:55 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2013-09-01 16:50:55 +0300 |
commit | 8b735cb563dff7aafbf8a970972522b5621e665c (patch) | |
tree | b4efa5afde49d5ca9d0659b8f98165f6104874f5 /cipher/camellia-aesni-avx-amd64.S | |
parent | d12828cd821a4b4428eae19de5aee02cf536e536 (diff) | |
download | libgcrypt-8b735cb563dff7aafbf8a970972522b5621e665c.tar.gz |
camellia-aesni-avx-amd64: Move register clearing to assembly functions
* cipher/camellia-aesni-avx-amd64.S (_gcry_camellia_aesni_avx_ctr_enc)
(_gcry_camellia_aesni_avx_cbc_dec)
(_gcry_camellia_aesni_avx_cfb_dec): Add 'vzeroupper' at head and
'vzeroall' at tail.
* cipher/camellia-glue.c (_gcry_serpent_ctr_enc, _gcry_serpent_cbc_dec)
(_gcry_serpent_avx2_cfb_dec) [USE_AESNI_AVX]: Remove register clearing.
--
Patch moves register clearing with 'vzeroall' to assembly functions and
adds missing 'vzeroupper' instructions at head of assembly functions.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'cipher/camellia-aesni-avx-amd64.S')
-rw-r--r-- | cipher/camellia-aesni-avx-amd64.S | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/cipher/camellia-aesni-avx-amd64.S b/cipher/camellia-aesni-avx-amd64.S index b0ef5fd0..9873d983 100644 --- a/cipher/camellia-aesni-avx-amd64.S +++ b/cipher/camellia-aesni-avx-amd64.S @@ -958,6 +958,8 @@ _gcry_camellia_aesni_avx_ctr_enc: * %rcx: iv (big endian, 128bit) */ + vzeroupper; + subq $(16 * 16), %rsp; movq %rsp, %rax; @@ -1054,6 +1056,8 @@ _gcry_camellia_aesni_avx_ctr_enc: %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9, %xmm8, %rsi); + vzeroall; + ret; .size _gcry_camellia_aesni_avx_ctr_enc,.-_gcry_camellia_aesni_avx_ctr_enc; @@ -1069,6 +1073,8 @@ _gcry_camellia_aesni_avx_cbc_dec: * %rcx: iv */ + vzeroupper; + movq %rcx, %r9; cmpl $128, key_bitlength(CTX); @@ -1114,6 +1120,8 @@ _gcry_camellia_aesni_avx_cbc_dec: movq %r10, (0)(%r9); movq %r11, (8)(%r9); + vzeroall; + ret; .size _gcry_camellia_aesni_avx_cbc_dec,.-_gcry_camellia_aesni_avx_cbc_dec; @@ -1129,6 +1137,8 @@ _gcry_camellia_aesni_avx_cfb_dec: * %rcx: iv */ + vzeroupper; + subq $(16 * 16), %rsp; movq %rsp, %rax; @@ -1179,6 +1189,8 @@ _gcry_camellia_aesni_avx_cfb_dec: %xmm15, %xmm14, %xmm13, %xmm12, %xmm11, %xmm10, %xmm9, %xmm8, %rsi); + vzeroall; + ret; .size _gcry_camellia_aesni_avx_cfb_dec,.-_gcry_camellia_aesni_avx_cfb_dec; |