Re: [PATCH v2] s390: Guard emitting assembler macros for insn-common-asm.h
From: Alexander Gordeev
Date: Mon Nov 09 2026 - 06:57:48 EST
On Thu, Nov 05, 2026 at 02:46:14PM +0100, Steffen Eiden wrote:
> The CPP include guard of insn-common-asm.h is ineffective when the file
> is read via a gas-level .include from inline asm. The assembler ignores
> all '#' lines, so every .include redefines GR_NUM/VX_NUM and fails with
> "Macro was already defined" if a translation unit emits more than one
> such include. This is not the case right now but may lead to future
> build issues.
>
> Add a header 'asm/insn-common-asm-emit.h' that can be used by C/H files
> which want to emit those macros. The header guards the GAS include to
> prevent multiple includes in one compilation unit.
>
> Co-developed-by: Andreas Grapentin <gra@xxxxxxxxxxxxx>
> Signed-off-by: Andreas Grapentin <gra@xxxxxxxxxxxxx>
> Signed-off-by: Steffen Eiden <seiden@xxxxxxxxxxxxx>
> ---
> Changes in v2:
> - Use a separate -emit header and CPP Guards to guard the asm .include.
> (Andreas)
> - Link to v1: https://lore.kernel.org/r/20261102-insn-v1-1-df048a0be0d5@xxxxxxxxxxxxx
> ---
> arch/s390/include/asm/fpu-insn.h | 2 +-
> arch/s390/include/asm/insn-common-asm-emit.h | 8 ++++++++
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/arch/s390/include/asm/fpu-insn.h b/arch/s390/include/asm/fpu-insn.h
> index eeb0a233d5c7..aaf1faeb3dc5 100644
> --- a/arch/s390/include/asm/fpu-insn.h
> +++ b/arch/s390/include/asm/fpu-insn.h
> @@ -14,8 +14,8 @@
> #include <linux/instrumented.h>
> #include <linux/kmsan.h>
> #include <asm/asm-extable.h>
> +#include <asm/insn-common-asm-emit.h>
>
> -asm(".include \"asm/insn-common-asm.h\"\n");
> asm(".include \"asm/fpu-insn-asm.h\"\n");
>
> /*
> diff --git a/arch/s390/include/asm/insn-common-asm-emit.h b/arch/s390/include/asm/insn-common-asm-emit.h
> new file mode 100644
> index 000000000000..26a31e8439bf
> --- /dev/null
> +++ b/arch/s390/include/asm/insn-common-asm-emit.h
> @@ -0,0 +1,8 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +
> +#ifndef __ASM_S390_INSN_COMMON_ASM_EMIT_H
> +#define __ASM_S390_INSN_COMMON_ASM_EMIT_H
> +
> +asm(".include \"asm/insn-common-asm.h\"\n");
> +
> +#endif /* __ASM_S390_INSN_COMMON_ASM_EMIT_H */
Reviewed-by: Alexander Gordeev <agordeev@xxxxxxxxxxxxx>