Re: x86/boot: Avoid using Intel mnemonics in AT&T syntax asm

From: Borislav Petkov
Date: Tue Jan 10 2023 - 06:36:48 EST


On Tue, Jan 10, 2023 at 12:15:40PM +0100, Peter Zijlstra wrote:
>
> With 'GNU assembler (GNU Binutils for Debian) 2.39.90.20221231' the
> build now reports:
>
> arch/x86/realmode/rm/../../boot/bioscall.S: Assembler messages:
> arch/x86/realmode/rm/../../boot/bioscall.S:35: Warning: found `movsd'; assuming `movsl' was meant
> arch/x86/realmode/rm/../../boot/bioscall.S:70: Warning: found `movsd'; assuming `movsl' was meant
>
> arch/x86/boot/bioscall.S: Assembler messages:
> arch/x86/boot/bioscall.S:35: Warning: found `movsd'; assuming `movsl' was meant
> arch/x86/boot/bioscall.S:70: Warning: found `movsd'; assuming `movsl' was meant
>
> Which is due to:
>
> PR gas/29525
>
> Note that with the dropped CMPSD and MOVSD Intel Syntax string insn
> templates taking operands, mixed IsString/non-IsString template groups
> (with memory operands) cannot occur anymore. With that
> maybe_adjust_templates() becomes unnecessary (and is hence being
> removed).
>
> More details: https://sourceware.org/bugzilla/show_bug.cgi?id=29525

Right, I'm being told the particular problem here is is that the 'd' suffix is
"conflicting" in the sense that you can have SSE mnemonics like movsD %xmm...
and the same thing also for string ops (which is the case here) so apparently
the agreement in binutils land is to use the always accepted suffixes 'l' or 'q'
and phase out 'd' slowly...

Which is basically what the PR text says above but more understanable. :-)

Might wanna add that to the commit message.

> Fixes: 7a734e7dd93b ("x86, setup: "glove box" BIOS calls -- infrastructure")
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> ---
> arch/x86/boot/bioscall.S | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)

In any case

Acked-by: Borislav Petkov (AMD) <bp@xxxxxxxxx>

Thx.

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette