[PATCH v5 0/8] Replace __ASSEMBLY__ with __ASSEMBLER__ in header files

Thomas Huth
2026-04-09T09:47:27Z

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