[tip:x86/urgent] x86/asm: Add _ASM_ARG* constants for argument registers to <asm/asm.h>

From: tip-bot for H. Peter Anvin
Date: Tue Jul 03 2018 - 12:00:20 EST


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".