Commit-ID: 0e2e160033283e20f688d8bad5b89460cc5bfcc4 Gitweb: https://git.kernel.org/tip/0e2e160033283e20f688d8bad5b89460cc5bfcc4 Author: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx> AuthorDate: Thu, 21 Jun 2018 09:23:23 -0700 Committer: Ingo Molnar <mingo@xxxxxxxxxx> CommitDate: Tue, 3 Jul 2018 10:56:27 +0200 x86/asm: Add _ASM_ARG* constants for argument registers to <asm/asm.h> 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> --- arch/x86/include/asm/asm.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h index 219faaec51df..990770f9e76b 100644 --- a/arch/x86/include/asm/asm.h +++ b/arch/x86/include/asm/asm.h @@ -46,6 +46,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". -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |