Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38d9deec authored by Sabrina Dubroca's avatar Sabrina Dubroca Committed by Herbert Xu
Browse files

crypto: aesni - make non-AVX AES-GCM work with all valid auth_tag_len

parent 0487ccac
Loading
Loading
Loading
Loading
+48 −14
Original line number Diff line number Diff line
@@ -1549,18 +1549,35 @@ _return_T_decrypt:
	mov	arg10, %r11               # %r11 = auth_tag_len
	cmp	$16, %r11
	je	_T_16_decrypt
	cmp	$12, %r11
	je	_T_12_decrypt
	cmp	$8, %r11
	jl	_T_4_decrypt
_T_8_decrypt:
	MOVQ_R64_XMM	%xmm0, %rax
	mov	%rax, (%r10)
	jmp	_return_T_done_decrypt
_T_12_decrypt:
	MOVQ_R64_XMM	%xmm0, %rax
	mov	%rax, (%r10)
	add	$8, %r10
	sub	$8, %r11
	psrldq	$8, %xmm0
	cmp	$0, %r11
	je	_return_T_done_decrypt
_T_4_decrypt:
	movd	%xmm0, %eax
	mov	%eax, (%r10)
	add	$4, %r10
	sub	$4, %r11
	psrldq	$4, %xmm0
	cmp	$0, %r11
	je	_return_T_done_decrypt
_T_123_decrypt:
	movd	%xmm0, %eax
	mov	%eax, 8(%r10)
	cmp	$2, %r11
	jl	_T_1_decrypt
	mov	%ax, (%r10)
	cmp	$2, %r11
	je	_return_T_done_decrypt
	add	$2, %r10
	sar	$16, %eax
_T_1_decrypt:
	mov	%al, (%r10)
	jmp	_return_T_done_decrypt
_T_16_decrypt:
	movdqu	%xmm0, (%r10)
@@ -1813,18 +1830,35 @@ _return_T_encrypt:
	mov	arg10, %r11                    # %r11 = auth_tag_len
	cmp	$16, %r11
	je	_T_16_encrypt
	cmp	$12, %r11
	je	_T_12_encrypt
	cmp	$8, %r11
	jl	_T_4_encrypt
_T_8_encrypt:
	MOVQ_R64_XMM	%xmm0, %rax
	mov	%rax, (%r10)
	jmp	_return_T_done_encrypt
_T_12_encrypt:
	MOVQ_R64_XMM	%xmm0, %rax
	mov	%rax, (%r10)
	add	$8, %r10
	sub	$8, %r11
	psrldq	$8, %xmm0
	cmp	$0, %r11
	je	_return_T_done_encrypt
_T_4_encrypt:
	movd	%xmm0, %eax
	mov	%eax, (%r10)
	add	$4, %r10
	sub	$4, %r11
	psrldq	$4, %xmm0
	cmp	$0, %r11
	je	_return_T_done_encrypt
_T_123_encrypt:
	movd	%xmm0, %eax
	mov	%eax, 8(%r10)
	cmp	$2, %r11
	jl	_T_1_encrypt
	mov	%ax, (%r10)
	cmp	$2, %r11
	je	_return_T_done_encrypt
	add	$2, %r10
	sar	$16, %eax
_T_1_encrypt:
	mov	%al, (%r10)
	jmp	_return_T_done_encrypt
_T_16_encrypt:
	movdqu	%xmm0, (%r10)