summaryrefslogtreecommitdiffstats
path: root/arch/x86/crypto
diff options
context:
space:
mode:
authorDave Watson <davejwatson@fb.com>2018-12-10 20:57:49 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2018-12-23 04:52:42 +0100
commite377bedb09d6970ad27d7714b0a6365ee7e4d732 (patch)
tree822f6318ecac12cbfbd9f81a9631f69b6d2267f3 /arch/x86/crypto
parentcrypto: aesni - support 256 byte keys in avx asm (diff)
downloadlinux-e377bedb09d6970ad27d7714b0a6365ee7e4d732.tar.xz
linux-e377bedb09d6970ad27d7714b0a6365ee7e4d732.zip
crypto: aesni - Add GCM_COMPLETE macro
Merge encode and decode tag calculations in GCM_COMPLETE macro. Scatter/gather routines will call this once at the end of encryption or decryption. Signed-off-by: Dave Watson <davejwatson@fb.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'arch/x86/crypto')
-rw-r--r--arch/x86/crypto/aesni-intel_avx-x86_64.S8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86/crypto/aesni-intel_avx-x86_64.S b/arch/x86/crypto/aesni-intel_avx-x86_64.S
index 2aa11c503bb9..8e9ae4b26118 100644
--- a/arch/x86/crypto/aesni-intel_avx-x86_64.S
+++ b/arch/x86/crypto/aesni-intel_avx-x86_64.S
@@ -510,6 +510,14 @@ _less_than_8_bytes_left\@:
#############################
_multiple_of_16_bytes\@:
+ GCM_COMPLETE \GHASH_MUL \REP
+.endm
+
+
+# GCM_COMPLETE Finishes update of tag of last partial block
+# Output: Authorization Tag (AUTH_TAG)
+# Clobbers rax, r10-r12, and xmm0, xmm1, xmm5-xmm15
+.macro GCM_COMPLETE GHASH_MUL REP
mov arg8, %r12 # r12 = aadLen (number of bytes)
shl $3, %r12 # convert into number of bits
vmovd %r12d, %xmm15 # len(A) in xmm15