On Thu, Sep 10, 2026 at 01:05:27PM +0100, Gary Guo wrote:
> On Thu Sep 10, 2026 at 11:08 AM BST, Mukesh Kumar Chaurasiya (IBM) wrote:
> > The Rust kernel infrastructure generates inline asm for WARN() via
> > ARCH_WARN_ASM(file, line, flags, size), expanding it through a C
> > preprocessor pass (generated_arch_warn_asm.rs.S) to produce an
> > arch-specific asm template string for use in Rust's core::arch macros.
> >
> > powerpc currently lacks ARCH_WARN_ASM and ARCH_WARN_REACHABLE, causing
> > Rust builds to fail on powerpc with
> > ```
> > 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}"))
>
> I think we probably want to catch this earlier by have something like
>
> #ifndef ARCH_WARN_ASM
> #error "ARCH_WARM_ASM is not defined"
> #endif
>
> in generated_arch_warn_asm.rs.S.
>
Hey Gary,
Sounds good.
[...]
> >
> > arch/powerpc/include/asm/bug.h | 36 +++++++++++++++++++---------------
> > 1 file changed, 20 insertions(+), 16 deletions(-)
> >
> > diff --git a/arch/powerpc/include/asm/bug.h b/arch/powerpc/include/asm/bug.h
> > index 0db48977c70c..df2183c35945 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 \
> > - ".section __bug_table,\"aw\"\n" \
> > - "2: .4byte 1b - .\n" \
> > - " .4byte %0 - .\n" \
> > - " .short %1, %2\n" \
> > - ".org 2b+%3\n" \
> > - ".previous\n"
> > +#define _EMIT_BUG_ENTRY(label, file, line, flags) \
> > + ".section __bug_table,\"aw\"\n" \
> > + "2: .4byte " label "b - .\n" \
>
> "b" is part of the label. "1b" itself is a label and "1" is just an integer.
>
> If the code uses
>
> _EMIT_BUG_ENTRY(..)
> "1: ..."
>
> then the correct label would be "1f".
>
> Best,
> Gary
>
Thanks, I missed that part.
Will fix it and send it out.
Regards,
Mukesh
>
[...]