From: Thomas Huth thuth@redhat.com
[ Upstream commit d6fb6511de74bd0d4cb4cabddae9b31d533af1c1 ]
__ASSEMBLY__ is only defined by the Makefile of the kernel, so this is not really useful for uapi headers (unless the userspace Makefile defines it, too). Let's switch to __ASSEMBLER__ which gets set automatically by the compiler when compiling assembly code.
This is a completely mechanical patch (done with a simple "sed -i" statement).
Cc: David S. Miller davem@davemloft.net Cc: Andreas Larsson andreas@gaisler.com Cc: sparclinux@vger.kernel.org Signed-off-by: Thomas Huth thuth@redhat.com Reviewed-by: Andreas Larsson andreas@gaisler.com Signed-off-by: Andreas Larsson andreas@gaisler.com Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
YES – Replacing the guard macro with `__ASSEMBLER__` in the SPARC UAPI headers fixes a real user-space build break for assembly consumers with negligible regression risk. - `arch/sparc/include/uapi/asm/ptrace.h:18`, `arch/sparc/include/uapi/asm/signal.h:108`, `arch/sparc/include/uapi/asm/traps.h:13`, and `arch/sparc/include/uapi/asm/utrap.h:47` now test `__ASSEMBLER__`, which every assembler run by GCC/Clang defines automatically; previously the check keyed on `__ASSEMBLY__`, a macro only injected by the kernel’s own Makefiles. - With the old guard, external SPARC assembly that includes these public headers would see the C struct/type definitions and fail to assemble; the new guard restores the intended split between C and assembly views, so this is a direct usability fix for real-world toolchains. - Normal C compilation remains untouched because neither `__ASSEMBLY__` nor `__ASSEMBLER__` are defined there, so the change is behavior- neutral for existing C users. - Kernel-internal headers already rely on `__ASSEMBLER__` (e.g., `arch/sparc/include/asm/ptrace.h:8`), so this aligns the UAPI side with established SPARC practice and does not introduce new concepts. - The patch is purely mechanical and localized to guard macros, touching no generated code or data layouts, which keeps regression risk extremely low while resolving the user-visible build failure.
arch/sparc/include/uapi/asm/ptrace.h | 24 ++++++++++++------------ arch/sparc/include/uapi/asm/signal.h | 4 ++-- arch/sparc/include/uapi/asm/traps.h | 4 ++-- arch/sparc/include/uapi/asm/utrap.h | 4 ++-- 4 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/arch/sparc/include/uapi/asm/ptrace.h b/arch/sparc/include/uapi/asm/ptrace.h index abe640037a55d..2eb677f4eb6ab 100644 --- a/arch/sparc/include/uapi/asm/ptrace.h +++ b/arch/sparc/include/uapi/asm/ptrace.h @@ -15,7 +15,7 @@ */ #define PT_REGS_MAGIC 0x57ac6c00
-#ifndef __ASSEMBLY__ +#ifndef __ASSEMBLER__
#include <linux/types.h>
@@ -88,7 +88,7 @@ struct sparc_trapf { unsigned long _unused; struct pt_regs *regs; }; -#endif /* (!__ASSEMBLY__) */ +#endif /* (!__ASSEMBLER__) */ #else /* 32 bit sparc */
@@ -97,7 +97,7 @@ struct sparc_trapf { /* This struct defines the way the registers are stored on the * stack during a system call and basically all traps. */ -#ifndef __ASSEMBLY__ +#ifndef __ASSEMBLER__
#include <linux/types.h>
@@ -125,11 +125,11 @@ struct sparc_stackf { unsigned long xargs[6]; unsigned long xxargs[1]; }; -#endif /* (!__ASSEMBLY__) */ +#endif /* (!__ASSEMBLER__) */
#endif /* (defined(__sparc__) && defined(__arch64__))*/
-#ifndef __ASSEMBLY__ +#ifndef __ASSEMBLER__
#define TRACEREG_SZ sizeof(struct pt_regs) #define STACKFRAME_SZ sizeof(struct sparc_stackf) @@ -137,7 +137,7 @@ struct sparc_stackf { #define TRACEREG32_SZ sizeof(struct pt_regs32) #define STACKFRAME32_SZ sizeof(struct sparc_stackf32)
-#endif /* (!__ASSEMBLY__) */ +#endif /* (!__ASSEMBLER__) */
#define UREG_G0 0 #define UREG_G1 1 @@ -161,30 +161,30 @@ struct sparc_stackf { #if defined(__sparc__) && defined(__arch64__) /* 64 bit sparc */
-#ifndef __ASSEMBLY__ +#ifndef __ASSEMBLER__
-#else /* __ASSEMBLY__ */ +#else /* __ASSEMBLER__ */ /* For assembly code. */ #define TRACEREG_SZ 0xa0 #define STACKFRAME_SZ 0xc0
#define TRACEREG32_SZ 0x50 #define STACKFRAME32_SZ 0x60 -#endif /* __ASSEMBLY__ */ +#endif /* __ASSEMBLER__ */
#else /* (defined(__sparc__) && defined(__arch64__)) */
/* 32 bit sparc */
-#ifndef __ASSEMBLY__ +#ifndef __ASSEMBLER__
-#else /* (!__ASSEMBLY__) */ +#else /* (!__ASSEMBLER__) */ /* For assembly code. */ #define TRACEREG_SZ 0x50 #define STACKFRAME_SZ 0x60 -#endif /* (!__ASSEMBLY__) */ +#endif /* (!__ASSEMBLER__) */
#endif /* (defined(__sparc__) && defined(__arch64__)) */
diff --git a/arch/sparc/include/uapi/asm/signal.h b/arch/sparc/include/uapi/asm/signal.h index b613829247250..9c64d7cb85c2a 100644 --- a/arch/sparc/include/uapi/asm/signal.h +++ b/arch/sparc/include/uapi/asm/signal.h @@ -105,7 +105,7 @@ #define __old_sigaction32 sigaction32 #endif
-#ifndef __ASSEMBLY__ +#ifndef __ASSEMBLER__
typedef unsigned long __old_sigset_t; /* at least 32 bits */
@@ -176,6 +176,6 @@ typedef struct sigaltstack { } stack_t;
-#endif /* !(__ASSEMBLY__) */ +#endif /* !(__ASSEMBLER__) */
#endif /* _UAPI__SPARC_SIGNAL_H */ diff --git a/arch/sparc/include/uapi/asm/traps.h b/arch/sparc/include/uapi/asm/traps.h index 930db746f8bd7..43fe5b8fe8be1 100644 --- a/arch/sparc/include/uapi/asm/traps.h +++ b/arch/sparc/include/uapi/asm/traps.h @@ -10,8 +10,8 @@
#define NUM_SPARC_TRAPS 255
-#ifndef __ASSEMBLY__ -#endif /* !(__ASSEMBLY__) */ +#ifndef __ASSEMBLER__ +#endif /* !(__ASSEMBLER__) */
/* For patching the trap table at boot time, we need to know how to * form various common Sparc instructions. Thus these macros... diff --git a/arch/sparc/include/uapi/asm/utrap.h b/arch/sparc/include/uapi/asm/utrap.h index d890b7fc6e835..a489b08b6a33d 100644 --- a/arch/sparc/include/uapi/asm/utrap.h +++ b/arch/sparc/include/uapi/asm/utrap.h @@ -44,9 +44,9 @@
#define UTH_NOCHANGE (-1)
-#ifndef __ASSEMBLY__ +#ifndef __ASSEMBLER__ typedef int utrap_entry_t; typedef void *utrap_handler_t; -#endif /* __ASSEMBLY__ */ +#endif /* __ASSEMBLER__ */
#endif /* !(__ASM_SPARC64_PROCESSOR_H) */