[PATCH v5 00/13] treewide: Replace __ASSEMBLY__ with __ASSEMBLER__ in header files
From: Thomas Huth
Date: Fri Oct 23 2026 - 02:49:33 EST
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 (and
also other compilers like Tiny-C or PCC) define the macro __ASSEMBLER__
automatically already when compiling assembly code, too, 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@xxxxxxxxxx/
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 makes sense to standardize
on the macro that gets defined by the compiler, so this patch series
changes all occurrences of __ASSEMBLY__ into __ASSEMBLER__ and
finally removes the -D__ASSEMBLY__ from the Makefiles.
I split the patches per architecture / maintained subsystem to ease
the review, and I also split the uapi headers from the normal ones in
case we ever decide that uapi needs to be treated differently from the
normal headers here and the patches would need to get reverted.
v5:
- To ease the review, I split some huge patches into smaller patches
when there was a separate entry for the files in the MAINTAINERS file
- Dropped the patches that were already merged
- Rebased the patches to the current master branch and fixed new
occurrences of __ASSEMBLY__
Thomas Huth (13):
of: fdt: Replace __ASSEMBLY__ with __ASSEMBLER__ in of_fdt.h header
file
smccc: Replace __ASSEMBLY__ with __ASSEMBLER__
ARM: PXA: Replace __ASSEMBLY__ with __ASSEMBLER__
ARM: BCM7XXX: Replace __ASSEMBLY__ with __ASSEMBLER__
arm: Replace __ASSEMBLY__ with __ASSEMBLER__ in ptrace uapi header
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
asm-generic: Replace __ASSEMBLY__ with __ASSEMBLER__ in uapi headers
uapi: Replace __ASSEMBLY__ with __ASSEMBLER__ in uapi headers
asm-generic: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-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/alpha/boot/compressed/Makefile | 2 +-
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/kexec.h | 4 ++--
arch/arm/include/asm/kgdb.h | 4 ++--
arch/arm/include/asm/linkage.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 | 8 ++++----
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/vfp.h | 2 +-
arch/arm/include/asm/virt.h | 4 ++--
arch/arm/include/uapi/asm/ptrace.h | 4 ++--
.../mach-footbridge/include/mach/hardware.h | 2 +-
arch/arm/mach-pxa/irqs.h | 2 +-
arch/arm/mach-pxa/pxa-regs.h | 2 +-
arch/arm/mach-sa1100/include/mach/bitfield.h | 2 +-
arch/arm/mach-sa1100/include/mach/hardware.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/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/int-ll64.h | 6 +++---
include/asm-generic/rwonce.h | 4 ++--
include/asm-generic/signal.h | 4 ++--
include/linux/amba/serial.h | 4 ++--
include/linux/annotate.h | 18 +++++++++---------
include/linux/arm-smccc.h | 10 +++++-----
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/linkage.h | 6 +++---
include/linux/mem_encrypt.h | 4 ++--
include/linux/of_fdt.h | 4 ++--
include/linux/pe.h | 4 ++--
include/linux/platform_data/emif_plat.h | 4 ++--
include/linux/ti-emif-sram.h | 2 +-
include/linux/types.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/types.h | 4 ++--
scripts/Makefile.build | 2 +-
scripts/gfp-translate | 2 +-
scripts/headers_install.sh | 1 -
.../tests/cmd_graph/test_savedcmd_parser.py | 2 +-
tools/include/asm-generic/barrier.h | 4 ++--
tools/include/asm/alternative.h | 2 +-
tools/include/linux/cfi_types.h | 6 +++---
tools/include/linux/compiler.h | 4 ++--
tools/include/uapi/linux/const.h | 4 ++--
.../testing/selftests/kvm/lib/riscv/handlers.S | 4 ----
.../testing/selftests/vDSO/vgetrandom-chacha.S | 2 --
123 files changed, 229 insertions(+), 237 deletions(-)
--
2.56.0