public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-kbuild@vger.kernel.org, Thomas Huth <thuth@redhat.com>
Subject: [PATCH v5 0/8] Replace __ASSEMBLY__ with __ASSEMBLER__ in header files
Date: Thu,  9 Apr 2026 11:47:00 +0200	[thread overview]
Message-ID: <20260409094708.1687376-1-thuth@redhat.com> (raw)

The kernel Makefiles define the __ASSEMBLY__ macro to provide
a way to use headers in both, assembly and C source code.
However, all the supported versions of the GCC and Clang compilers
also define the macro __ASSEMBLER__ automatically already when compiling
assembly code, so some kernel headers are using __ASSEMBLER__ instead.
With regards to userspace code, this seems also to be constant source
of confusion, see for example these links here:

 https://lore.kernel.org/kvm/20250222014526.2302653-1-seanjc@google.com/
 https://stackoverflow.com/questions/28924355/gcc-assembler-preprocessor-not-compatible-with-standard-headers
 https://forums.raspberrypi.com/viewtopic.php?p=1652944#p1653834
 https://github.com/riscv-software-src/opensbi/issues/199

To avoid confusion in the future, it would make sense to standardize
on the macro that gets defined by the compiler, so this patch series
changes all occurances of __ASSEMBLY__ into __ASSEMBLER__ and
finally removes the -D__ASSEMBLY__ from the Makefiles.

I split the patches per architecture to ease the review, and I also
split the uapi headers from the normal ones in case we decide that
uapi needs to be treated differently from the normal headers here.

Most patches for the individual architectures have already been merged
through the corresponding architecture trees (big thanks to the main-
tainers!), so this series here now just consists of the remaining
patches.

v5:
- More patches have been merged through architecture trees, dropped
  them now from this series here.
- Fixed some more occurances of __ASSEMBLY__ in new code.

v4:
- Most patches from the original series got already merged via the
  tree of the individual architectures, so the amount of patches here
  has been greatly reduced
- Rebased patches on top of linux-next, fixed conflicts and new
  occurances

Thomas Huth (8):
  arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in uapi headers
  arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers
  hexagon: Replace __ASSEMBLY__ with __ASSEMBLER__ in uapi headers
  hexagon: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers
  kselftest/riscv: Replace __ASSEMBLY__ with __ASSEMBLER__
  uapi: Replace __ASSEMBLY__ with __ASSEMBLER__ in uapi headers
  include: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers
  treewide: Stop defining __ASSEMBLY__ for assembler files

 Documentation/dev-tools/checkuapi.rst          |  2 +-
 Makefile                                       |  2 +-
 arch/arm/include/asm/arch_gicv3.h              |  4 ++--
 arch/arm/include/asm/assembler.h               |  2 +-
 arch/arm/include/asm/barrier.h                 |  4 ++--
 arch/arm/include/asm/cache.h                   |  2 +-
 arch/arm/include/asm/cp15.h                    |  4 ++--
 arch/arm/include/asm/cputype.h                 |  4 ++--
 arch/arm/include/asm/current.h                 |  4 ++--
 arch/arm/include/asm/delay.h                   |  4 ++--
 arch/arm/include/asm/domain.h                  |  8 ++++----
 arch/arm/include/asm/fpstate.h                 |  2 +-
 arch/arm/include/asm/ftrace.h                  |  6 +++---
 arch/arm/include/asm/hardware/cache-b15-rac.h  |  2 +-
 arch/arm/include/asm/hardware/cache-l2x0.h     |  4 ++--
 arch/arm/include/asm/hardware/dec21285.h       |  2 +-
 arch/arm/include/asm/hardware/ioc.h            |  2 +-
 arch/arm/include/asm/hardware/iomd.h           |  4 ++--
 arch/arm/include/asm/hardware/memc.h           |  2 +-
 arch/arm/include/asm/hwcap.h                   |  2 +-
 arch/arm/include/asm/irq.h                     |  2 +-
 arch/arm/include/asm/jump_label.h              |  4 ++--
 arch/arm/include/asm/kexec.h                   |  4 ++--
 arch/arm/include/asm/kgdb.h                    |  4 ++--
 arch/arm/include/asm/mach/arch.h               |  2 +-
 arch/arm/include/asm/mcpm.h                    |  4 ++--
 arch/arm/include/asm/memory.h                  |  4 ++--
 arch/arm/include/asm/mpu.h                     |  4 ++--
 arch/arm/include/asm/opcodes.h                 | 12 ++++++------
 arch/arm/include/asm/page.h                    |  4 ++--
 arch/arm/include/asm/pgtable-2level.h          |  4 ++--
 arch/arm/include/asm/pgtable-3level.h          |  4 ++--
 arch/arm/include/asm/pgtable-nommu.h           |  4 ++--
 arch/arm/include/asm/pgtable.h                 | 10 +++++-----
 arch/arm/include/asm/probes.h                  |  4 ++--
 arch/arm/include/asm/proc-fns.h                |  4 ++--
 arch/arm/include/asm/ptrace.h                  |  4 ++--
 arch/arm/include/asm/system_info.h             |  4 ++--
 arch/arm/include/asm/system_misc.h             |  4 ++--
 arch/arm/include/asm/thread_info.h             |  2 +-
 arch/arm/include/asm/thread_notify.h           |  2 +-
 arch/arm/include/asm/tlbflush.h                | 10 +++++-----
 arch/arm/include/asm/tls.h                     |  4 ++--
 arch/arm/include/asm/unified.h                 |  6 +++---
 arch/arm/include/asm/unwind.h                  |  4 ++--
 arch/arm/include/asm/v7m.h                     |  4 ++--
 arch/arm/include/asm/vdso.h                    |  4 ++--
 arch/arm/include/asm/vdso/cp15.h               |  4 ++--
 arch/arm/include/asm/vdso/gettimeofday.h       |  4 ++--
 arch/arm/include/asm/vdso/processor.h          |  4 ++--
 arch/arm/include/asm/vdso/vsyscall.h           |  4 ++--
 arch/arm/include/asm/vfp.h                     |  2 +-
 arch/arm/include/asm/virt.h                    |  4 ++--
 arch/arm/include/uapi/asm/ptrace.h             |  4 ++--
 arch/arm/mach-at91/pm.h                        |  2 +-
 arch/arm/mach-exynos/smc.h                     |  4 ++--
 .../mach-footbridge/include/mach/hardware.h    |  2 +-
 arch/arm/mach-imx/hardware.h                   |  2 +-
 arch/arm/mach-imx/mxc.h                        |  2 +-
 arch/arm/mach-omap2/control.h                  |  8 ++++----
 arch/arm/mach-omap2/soc.h                      |  4 ++--
 arch/arm/mach-omap2/sram.h                     |  4 ++--
 arch/arm/mach-pxa/irqs.h                       |  2 +-
 arch/arm/mach-pxa/pxa-regs.h                   |  2 +-
 arch/arm/mach-s3c/map-base.h                   |  2 +-
 arch/arm/mach-sa1100/include/mach/bitfield.h   |  2 +-
 arch/arm/mach-sa1100/include/mach/hardware.h   |  2 +-
 arch/arm/mach-tegra/reset.h                    |  2 +-
 arch/arm/mach-tegra/sleep.h                    |  2 +-
 arch/arm/tools/gen-mach-types                  |  2 +-
 arch/arm64/kernel/vdso32/Makefile              |  1 -
 arch/hexagon/include/asm/hexagon_vm.h          |  4 ++--
 arch/hexagon/include/asm/mem-layout.h          |  6 +++---
 arch/hexagon/include/asm/page.h                |  4 ++--
 arch/hexagon/include/asm/processor.h           |  4 ++--
 arch/hexagon/include/asm/thread_info.h         | 12 ++++++------
 arch/hexagon/include/uapi/asm/registers.h      |  4 ++--
 arch/loongarch/vdso/Makefile                   |  2 +-
 arch/mips/boot/compressed/Makefile             |  2 +-
 arch/mips/vdso/Makefile                        |  2 +-
 arch/powerpc/boot/Makefile                     |  2 +-
 arch/powerpc/platforms/cell/spufs/Makefile     |  2 +-
 arch/s390/Makefile                             |  2 +-
 arch/x86/boot/Makefile                         |  2 +-
 arch/x86/boot/compressed/Makefile              |  2 +-
 arch/x86/realmode/rm/Makefile                  |  2 +-
 arch/xtensa/kernel/Makefile                    |  2 +-
 drivers/firmware/efi/libstub/Makefile          |  2 +-
 drivers/memory/emif.h                          |  4 ++--
 drivers/net/wan/Makefile                       |  2 +-
 include/asm-generic/barrier.h                  |  4 ++--
 include/asm-generic/bug.h                      |  4 ++--
 include/asm-generic/current.h                  |  2 +-
 include/asm-generic/error-injection.h          |  2 +-
 include/asm-generic/fixmap.h                   |  4 ++--
 include/asm-generic/getorder.h                 |  4 ++--
 include/asm-generic/int-ll64.h                 |  6 +++---
 include/asm-generic/kprobes.h                  |  4 ++--
 include/asm-generic/memory_model.h             |  4 ++--
 include/asm-generic/mmu.h                      |  2 +-
 include/asm-generic/pgtable-nop4d.h            |  4 ++--
 include/asm-generic/pgtable-nopmd.h            |  4 ++--
 include/asm-generic/pgtable-nopud.h            |  4 ++--
 include/asm-generic/rwonce.h                   |  4 ++--
 include/asm-generic/signal.h                   |  4 ++--
 include/asm-generic/vdso/vsyscall.h            |  4 ++--
 include/linux/amba/serial.h                    |  4 ++--
 include/linux/annotate.h                       | 18 +++++++++---------
 include/linux/arm-smccc.h                      | 10 +++++-----
 include/linux/bitmap.h                         |  4 ++--
 include/linux/bits.h                           |  6 +++---
 include/linux/cfi_types.h                      |  6 +++---
 include/linux/compiler.h                       |  4 ++--
 include/linux/compiler_types.h                 |  8 ++++----
 include/linux/edd.h                            |  4 ++--
 include/linux/err.h                            |  2 +-
 include/linux/export.h                         |  2 +-
 include/linux/init.h                           |  6 +++---
 include/linux/ioport.h                         |  4 ++--
 include/linux/irqchip/arm-gic-v3.h             |  2 +-
 include/linux/irqchip/arm-gic.h                |  4 ++--
 include/linux/jump_label.h                     | 10 +++++-----
 include/linux/kexec.h                          |  2 +-
 include/linux/linkage.h                        |  6 +++---
 include/linux/mem_encrypt.h                    |  4 ++--
 include/linux/mmzone.h                         |  4 ++--
 include/linux/objtool.h                        |  8 ++++----
 include/linux/objtool_types.h                  |  4 ++--
 include/linux/of_fdt.h                         |  4 ++--
 include/linux/pe.h                             |  4 ++--
 include/linux/percpu-defs.h                    |  4 ++--
 include/linux/pfn.h                            |  2 +-
 include/linux/pgtable.h                        |  4 ++--
 include/linux/platform_data/emif_plat.h        |  4 ++--
 include/linux/serial_s3c.h                     |  4 ++--
 include/linux/static_call_types.h              |  4 ++--
 include/linux/ti-emif-sram.h                   |  2 +-
 include/linux/types.h                          |  4 ++--
 include/soc/imx/cpu.h                          |  2 +-
 include/soc/tegra/flowctrl.h                   |  4 ++--
 include/soc/tegra/fuse.h                       |  4 ++--
 include/uapi/asm-generic/int-l64.h             |  4 ++--
 include/uapi/asm-generic/int-ll64.h            |  4 ++--
 include/uapi/asm-generic/signal-defs.h         |  2 +-
 include/uapi/asm-generic/signal.h              |  4 ++--
 include/uapi/linux/a.out.h                     |  4 ++--
 include/uapi/linux/const.h                     |  4 ++--
 include/uapi/linux/edd.h                       |  4 ++--
 include/uapi/linux/hdlc/ioctl.h                |  4 ++--
 include/uapi/linux/sched.h                     |  2 +-
 include/uapi/linux/types.h                     |  4 ++--
 include/vdso/datapage.h                        |  6 +++---
 include/vdso/helpers.h                         |  4 ++--
 include/vdso/processor.h                       |  4 ++--
 include/vdso/vsyscall.h                        |  4 ++--
 include/xen/arm/interface.h                    |  2 +-
 include/xen/interface/xen-mca.h                |  4 ++--
 include/xen/interface/xen.h                    |  8 ++++----
 scripts/Makefile.build                         |  2 +-
 scripts/gfp-translate                          |  2 +-
 tools/include/asm-generic/barrier.h            |  4 ++--
 tools/include/asm/alternative.h                |  2 +-
 tools/include/linux/bits.h                     |  6 +++---
 tools/include/linux/cfi_types.h                |  6 +++---
 tools/include/linux/compiler.h                 |  4 ++--
 tools/include/linux/objtool_types.h            |  4 ++--
 tools/include/linux/static_call_types.h        |  4 ++--
 tools/include/uapi/linux/const.h               |  4 ++--
 .../trace/beauty/include/uapi/linux/sched.h    |  2 +-
 .../testing/selftests/kvm/lib/riscv/handlers.S |  4 ----
 .../testing/selftests/riscv/cfi/cfi_rv_test.h  |  2 +-
 .../testing/selftests/vDSO/vgetrandom-chacha.S |  2 --
 172 files changed, 329 insertions(+), 336 deletions(-)

-- 
2.53.0


             reply	other threads:[~2026-04-09  9:47 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-09  9:47 Thomas Huth [this message]
2026-04-09  9:47 ` [PATCH v5 1/8] arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in uapi headers Thomas Huth
2026-04-09  9:47 ` [PATCH v5 2/8] arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers Thomas Huth
2026-04-09  9:47 ` [PATCH v5 3/8] hexagon: Replace __ASSEMBLY__ with __ASSEMBLER__ in uapi headers Thomas Huth
2026-04-09  9:47 ` [PATCH v5 4/8] hexagon: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers Thomas Huth
2026-04-09  9:47 ` [PATCH v5 5/8] kselftest/riscv: Replace __ASSEMBLY__ with __ASSEMBLER__ Thomas Huth
2026-04-09  9:47 ` [PATCH v5 6/8] uapi: Replace __ASSEMBLY__ with __ASSEMBLER__ in uapi headers Thomas Huth
2026-04-09  9:47 ` [PATCH v5 7/8] include: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers Thomas Huth
2026-04-09  9:47 ` [PATCH v5 8/8] treewide: Stop defining __ASSEMBLY__ for assembler files Thomas Huth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260409094708.1687376-1-thuth@redhat.com \
    --to=thuth@redhat.com \
    --cc=arnd@arndb.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox