4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx> commit 0e2e160033283e20f688d8bad5b89460cc5bfcc4 upstream. i386 and x86-64 uses different registers for arguments; make them available so we don't have to #ifdef in the actual code. Native size and specified size (q, l, w, b) versions are provided. Signed-off-by: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx> Signed-off-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> Reviewed-by: Sedat Dilek <sedat.dilek@xxxxxxxxx> Acked-by: Juergen Gross <jgross@xxxxxxxx> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: acme@xxxxxxxxxx Cc: akataria@xxxxxxxxxx Cc: akpm@xxxxxxxxxxxxxxxxxxxx Cc: andrea.parri@xxxxxxxxxxxxxxxxxxxx Cc: ard.biesheuvel@xxxxxxxxxx Cc: arnd@xxxxxxxx Cc: aryabinin@xxxxxxxxxxxxx Cc: astrachan@xxxxxxxxxx Cc: boris.ostrovsky@xxxxxxxxxx Cc: brijesh.singh@xxxxxxx Cc: caoj.fnst@xxxxxxxxxxxxxx Cc: geert@xxxxxxxxxxxxxx Cc: ghackmann@xxxxxxxxxx Cc: gregkh@xxxxxxxxxxxxxxxxxxx Cc: jan.kiszka@xxxxxxxxxxx Cc: jarkko.sakkinen@xxxxxxxxxxxxxxx Cc: joe@xxxxxxxxxxx Cc: jpoimboe@xxxxxxxxxx Cc: keescook@xxxxxxxxxx Cc: kirill.shutemov@xxxxxxxxxxxxxxx Cc: kstewart@xxxxxxxxxxxxxxxxxxx Cc: linux-efi@xxxxxxxxxxxxxxx Cc: linux-kbuild@xxxxxxxxxxxxxxx Cc: manojgupta@xxxxxxxxxx Cc: mawilcox@xxxxxxxxxxxxx Cc: michal.lkml@xxxxxxxxxxx Cc: mjg59@xxxxxxxxxx Cc: mka@xxxxxxxxxxxx Cc: pombredanne@xxxxxxxx Cc: rientjes@xxxxxxxxxx Cc: rostedt@xxxxxxxxxxx Cc: thomas.lendacky@xxxxxxx Cc: tstellar@xxxxxxxxxx Cc: tweek@xxxxxxxxxx Cc: virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx Cc: will.deacon@xxxxxxx Cc: yamada.masahiro@xxxxxxxxxxxxx Link: http://lkml.kernel.org/r/20180621162324.36656-3-ndesaulniers@xxxxxxxxxx Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- arch/x86/include/asm/asm.h | 59 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) --- a/arch/x86/include/asm/asm.h +++ b/arch/x86/include/asm/asm.h @@ -45,6 +45,65 @@ #define _ASM_SI __ASM_REG(si) #define _ASM_DI __ASM_REG(di) +#ifndef __x86_64__ +/* 32 bit */ + +#define _ASM_ARG1 _ASM_AX +#define _ASM_ARG2 _ASM_DX +#define _ASM_ARG3 _ASM_CX + +#define _ASM_ARG1L eax +#define _ASM_ARG2L edx +#define _ASM_ARG3L ecx + +#define _ASM_ARG1W ax +#define _ASM_ARG2W dx +#define _ASM_ARG3W cx + +#define _ASM_ARG1B al +#define _ASM_ARG2B dl +#define _ASM_ARG3B cl + +#else +/* 64 bit */ + +#define _ASM_ARG1 _ASM_DI +#define _ASM_ARG2 _ASM_SI +#define _ASM_ARG3 _ASM_DX +#define _ASM_ARG4 _ASM_CX +#define _ASM_ARG5 r8 +#define _ASM_ARG6 r9 + +#define _ASM_ARG1Q rdi +#define _ASM_ARG2Q rsi +#define _ASM_ARG3Q rdx +#define _ASM_ARG4Q rcx +#define _ASM_ARG5Q r8 +#define _ASM_ARG6Q r9 + +#define _ASM_ARG1L edi +#define _ASM_ARG2L esi +#define _ASM_ARG3L edx +#define _ASM_ARG4L ecx +#define _ASM_ARG5L r8d +#define _ASM_ARG6L r9d + +#define _ASM_ARG1W di +#define _ASM_ARG2W si +#define _ASM_ARG3W dx +#define _ASM_ARG4W cx +#define _ASM_ARG5W r8w +#define _ASM_ARG6W r9w + +#define _ASM_ARG1B dil +#define _ASM_ARG2B sil +#define _ASM_ARG3B dl +#define _ASM_ARG4B cl +#define _ASM_ARG5B r8b +#define _ASM_ARG6B r9b + +#endif + /* * Macros to generate condition code outputs from inline assembly, * The output operand must be type "bool".