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

Commit 5ef739b7 authored by Jian Cai's avatar Jian Cai Committed by Greg Kroah-Hartman
Browse files

crypto: aesni - add compatibility with IAS

[ Upstream commit 44069737ac9625a0f02f0f7f5ab96aae4cd819bc ]

Clang's integrated assembler complains "invalid reassignment of
non-absolute variable 'var_ddq_add'" while assembling
arch/x86/crypto/aes_ctrby8_avx-x86_64.S. It was because var_ddq_add was
reassigned with non-absolute values several times, which IAS did not
support. We can avoid the reassignment by replacing the uses of
var_ddq_add with its definitions accordingly to have compatilibility
with IAS.

Link: https://github.com/ClangBuiltLinux/linux/issues/1008


Reported-by: default avatarSedat Dilek <sedat.dilek@gmail.com>
Reported-by: default avatarFangrui Song <maskray@google.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # build+boot Linux v5.7.5; clang v11.0.0-git
Signed-off-by: default avatarJian Cai <caij2003@gmail.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent c44efee6
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -127,10 +127,6 @@ ddq_add_8:

/* generate a unique variable for ddq_add_x */

.macro setddq n
	var_ddq_add = ddq_add_\n
.endm

/* generate a unique variable for xmm register */
.macro setxdata n
	var_xdata = %xmm\n
@@ -140,9 +136,7 @@ ddq_add_8:

.macro club name, id
.altmacro
	.if \name == DDQ_DATA
		setddq %\id
	.elseif \name == XDATA
	.if \name == XDATA
		setxdata %\id
	.endif
.noaltmacro
@@ -165,9 +159,8 @@ ddq_add_8:

	.set i, 1
	.rept (by - 1)
		club DDQ_DATA, i
		club XDATA, i
		vpaddq	var_ddq_add(%rip), xcounter, var_xdata
		vpaddq	(ddq_add_1 + 16 * (i - 1))(%rip), xcounter, var_xdata
		vptest	ddq_low_msk(%rip), var_xdata
		jnz 1f
		vpaddq	ddq_high_add_1(%rip), var_xdata, var_xdata
@@ -180,8 +173,7 @@ ddq_add_8:
	vmovdqa	1*16(p_keys), xkeyA

	vpxor	xkey0, xdata0, xdata0
	club DDQ_DATA, by
	vpaddq	var_ddq_add(%rip), xcounter, xcounter
	vpaddq	(ddq_add_1 + 16 * (by - 1))(%rip), xcounter, xcounter
	vptest	ddq_low_msk(%rip), xcounter
	jnz	1f
	vpaddq	ddq_high_add_1(%rip), xcounter, xcounter