Hi Mukesh,
On Wed, Aug 05, 2026 at 05:59:14PM +0530, Mukesh Kumar Chaurasiya wrote:
On Tue, Aug 04, 2026 at 10:40:35PM +0900, FUJITA Tomonori wrote:
quoted
On Tue, 4 Aug 2026 12:11:57 +0200
Link Mauve [off-list ref] wrote:
quoted
I just tested those again in linux-next, with the Wii support series on
top, but now the kernel fails to build due to ARCH_WARN_ASM and
ARCH_WARN_REACHABLE not being defined on PowerPC:
error: no rules expected `ARCH_WARN_ASM`
--> /home/linkmauve/dev/linux/wii/rust/kernel/generated_arch_warn_asm.rs:1:28
|
1 | ::kernel::concat_literals!(ARCH_WARN_ASM("{file}", "{line}", "{flags}", "{size}"))
| ^^^^^^^^^^^^^ no rules expected this token in macro call
|
::: ../rust/kernel/lib.rs:279:1
|
279 | macro_rules! concat_literals {
| ---------------------------- when calling this macro
|
= note: while trying to match sequence start
error: no rules expected `ARCH_WARN_REACHABLE`
--> /home/linkmauve/dev/linux/wii/rust/kernel/generated_arch_reachable_asm.rs:1:28
|
1 | ::kernel::concat_literals!(ARCH_WARN_REACHABLE)
| ^^^^^^^^^^^^^^^^^^^ no rules expected this token in macro call
|
::: ../rust/kernel/lib.rs:279:1
|
279 | macro_rules! concat_literals {
| ---------------------------- when calling this macro
|
= note: while trying to match sequence start
error: aborting due to 2 previous errors
Looks like powerpc needs something like the followings:
diff --git a/arch/powerpc/include/asm/bug.h b/arch/powerpc/include/asm/bug.h
index 0db48977c70c..8aba39e0cf26 100644
--- a/arch/powerpc/include/asm/bug.h
+++ b/arch/powerpc/include/asm/bug.h
@@ -32,34 +32,38 @@
#endif /* verbose */
#else /* !__ASSEMBLER__ */
-/* _EMIT_BUG_ENTRY expects args %0,%1,%2,%3 to be FILE, LINE, flags and
- sizeof(struct bug_entry), respectively */
#ifdef CONFIG_DEBUG_BUGVERBOSE
-#define _EMIT_BUG_ENTRY \
+#define _EMIT_BUG_ENTRY(file, line, flags) \
".section __bug_table,\"aw\"\n" \
"2: .4byte 1b - .\n" \
- " .4byte %0 - .\n" \
- " .short %1, %2\n" \
- ".org 2b+%3\n" \
- ".previous\n"
+ " .4byte " file " - .\n" \
+ " .short " line ", " flags "\n"
#else
-#define _EMIT_BUG_ENTRY \
+#define _EMIT_BUG_ENTRY(file, line, flags) \
".section __bug_table,\"aw\"\n" \
"2: .4byte 1b - .\n" \
- " .short %2\n" \
- ".org 2b+%3\n" \
- ".previous\n"
+ " .short " flags "\n"
#endif
#define BUG_ENTRY(cond_str, insn, flags, ...) \
__asm__ __volatile__( \
"1: " insn "\n" \
- _EMIT_BUG_ENTRY \
+ _EMIT_BUG_ENTRY("%0", "%1", "%2") \
+ ".org 2b+%3\n" \
+ ".previous\n" \
: : "i" (WARN_CONDITION_STR(cond_str) __FILE__), "i" (__LINE__), \
"i" (flags), \
"i" (sizeof(struct bug_entry)), \
##__VA_ARGS__)
+#define ARCH_WARN_ASM(file, line, flags, size) \
+ "1: twi 31, 0, 0\n" \
+ _EMIT_BUG_ENTRY(file, line, flags) \
+ ".org 2b+" size "\n" \
+ ".previous\n"
+
+#define ARCH_WARN_REACHABLE
+
/*
* BUG_ON() and WARN_ON() do their best to cooperate with compile-time
* optimisations. However depending on the complexity of the condition
Yeah, This makes sense.
I'll work on this and send out a fix soon.
Did a fix for this ever materialize? I am still seeing the errors that
Link posted above in next-20260817.
--
Cheers,
Nathan