]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64/bug: Add ARCH_WARN_ASM macro for BUG/WARN asm code sharing with Rust
authorFUJITA Tomonori <fujita.tomonori@gmail.com>
Fri, 2 May 2025 09:45:35 +0000 (18:45 +0900)
committerMiguel Ojeda <ojeda@kernel.org>
Tue, 22 Jul 2025 22:04:53 +0000 (00:04 +0200)
Add new ARCH_WARN_ASM macro for BUG/WARN assembly code sharing with
Rust to avoid the duplication.

No functional changes.

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Link: https://lore.kernel.org/r/20250502094537.231725-4-fujita.tomonori@gmail.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
arch/arm64/include/asm/asm-bug.h

index 6e73809f6492a208feee82a678db8a3eaa6a57af..a5f13801b7840ae3672bfb141f25e941168f1544 100644 (file)
 #endif
 
 #ifdef CONFIG_GENERIC_BUG
-
-#define __BUG_ENTRY(flags)                             \
+#define __BUG_ENTRY_START                              \
                .pushsection __bug_table,"aw";          \
                .align 2;                               \
        14470:  .long 14471f - .;                       \
-_BUGVERBOSE_LOCATION(__FILE__, __LINE__)               \
-               .short flags;                           \
+
+#define __BUG_ENTRY_END                                        \
                .align 2;                               \
                .popsection;                            \
        14471:
+
+#define __BUG_ENTRY(flags)                             \
+               __BUG_ENTRY_START                       \
+_BUGVERBOSE_LOCATION(__FILE__, __LINE__)               \
+               .short flags;                           \
+               __BUG_ENTRY_END
 #else
 #define __BUG_ENTRY(flags)
 #endif
@@ -41,4 +46,24 @@ _BUGVERBOSE_LOCATION(__FILE__, __LINE__)             \
 
 #define ASM_BUG()      ASM_BUG_FLAGS(0)
 
+#ifdef CONFIG_DEBUG_BUGVERBOSE
+#define __BUG_LOCATION_STRING(file, line)              \
+               ".long " file "- .;"                    \
+               ".short " line ";"
+#else
+#define __BUG_LOCATION_STRING(file, line)
+#endif
+
+#define __BUG_ENTRY_STRING(file, line, flags)          \
+               __stringify(__BUG_ENTRY_START)          \
+               __BUG_LOCATION_STRING(file, line)       \
+               ".short " flags ";"                     \
+               __stringify(__BUG_ENTRY_END)
+
+#define ARCH_WARN_ASM(file, line, flags, size)         \
+       __BUG_ENTRY_STRING(file, line, flags)           \
+       __stringify(brk BUG_BRK_IMM)
+
+#define ARCH_WARN_REACHABLE
+
 #endif /* __ASM_ASM_BUG_H */