x86/asm: Have the __ASM_FORM macros handle commas in arguments
authorH. Peter Anvin (Intel) <hpa@zytor.com>
Mon, 10 May 2021 09:09:38 +0000 (02:09 -0700)
committerIngo Molnar <mingo@kernel.org>
Mon, 10 May 2021 10:33:28 +0000 (12:33 +0200)
The __ASM_FORM macros are really useful, but in order to be able to
use them to define instructions via .byte directives breaks because of
the necessary commas. Change the macros to handle commas correctly.

[ mingo: Removed stray whitespaces & aligned the definitions vertically. ]

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20210510090940.924953-2-hpa@zytor.com
arch/x86/include/asm/asm.h

index 0603c7423aca234e3e55df6076acb119958b6910..93aad0b638065b76dca35ed8e241e3726e98db5f 100644 (file)
@@ -3,25 +3,24 @@
 #define _ASM_X86_ASM_H
 
 #ifdef __ASSEMBLY__
-# define __ASM_FORM(x) x
-# define __ASM_FORM_RAW(x)     x
-# define __ASM_FORM_COMMA(x) x,
+# define __ASM_FORM(x, ...)            x,## __VA_ARGS__
+# define __ASM_FORM_RAW(x, ...)                x,## __VA_ARGS__
+# define __ASM_FORM_COMMA(x, ...)      x,## __VA_ARGS__,
 #else
 #include <linux/stringify.h>
-
-# define __ASM_FORM(x) " " __stringify(x) " "
-# define __ASM_FORM_RAW(x)     __stringify(x)
-# define __ASM_FORM_COMMA(x) " " __stringify(x) ","
+# define __ASM_FORM(x, ...)            " " __stringify(x,##__VA_ARGS__) " "
+# define __ASM_FORM_RAW(x, ...)                    __stringify(x,##__VA_ARGS__)
+# define __ASM_FORM_COMMA(x, ...)      " " __stringify(x,##__VA_ARGS__) ","
 #endif
 
 #ifndef __x86_64__
 /* 32 bit */
-# define __ASM_SEL(a,b) __ASM_FORM(a)
-# define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(a)
+# define __ASM_SEL(a,b)                __ASM_FORM(a)
+# define __ASM_SEL_RAW(a,b)    __ASM_FORM_RAW(a)
 #else
 /* 64 bit */
-# define __ASM_SEL(a,b) __ASM_FORM(b)
-# define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(b)
+# define __ASM_SEL(a,b)                __ASM_FORM(b)
+# define __ASM_SEL_RAW(a,b)    __ASM_FORM_RAW(b)
 #endif
 
 #define __ASM_SIZE(inst, ...)  __ASM_SEL(inst##l##__VA_ARGS__, \