* [PATCH] powerpc/bug: Add ARCH_WARN_ASM and refactor _EMIT_BUG_ENTRY for Rust support
@ 2026-08-19 8:48 ` Mukesh Kumar Chaurasiya (IBM)
0 siblings, 0 replies; 8+ messages in thread
From: Mukesh Kumar Chaurasiya (IBM) @ 2026-08-19 8:48 UTC (permalink / raw)
To: maddy, mpe, npiggin, chleroy, pjw, palmer, aou, alex, ojeda,
boqun, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross,
dakr, daniel.almeida, tamird, acourbot, work, thuth, mkchauras,
linuxppc-dev, linux-kernel, linux-riscv, rust-for-linux
Cc: FUJITA Tomonori
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.
Refactor _EMIT_BUG_ENTRY to accept explicit (file, line, flags) string
arguments rather than relying on positional asm operand references
(%0, %1, %2, %3). This allows the macro to be composed as a plain
string concatenation, which is required for ARCH_WARN_ASM where no asm
operand context exists.
Move the .org and .previous directives out of _EMIT_BUG_ENTRY and into
the BUG_ENTRY() call site to preserve existing behaviour while enabling
ARCH_WARN_ASM to supply its own size operand independently.
Add ARCH_WARN_REACHABLE as an empty define, matching the arm64
convention, indicating that no additional reachability annotation is
needed after a WARN on powerpc.
This brings powerpc into line with x86, arm64, s390, and riscv, all of
which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
Suggested-by: FUJITA Tomonori <tomo@flapping.org>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
---
arch/powerpc/include/asm/bug.h | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
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
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH] powerpc/bug: Add ARCH_WARN_ASM and refactor _EMIT_BUG_ENTRY for Rust support
@ 2026-08-19 8:48 ` Mukesh Kumar Chaurasiya (IBM)
0 siblings, 0 replies; 8+ messages in thread
From: Mukesh Kumar Chaurasiya (IBM) @ 2026-08-19 8:48 UTC (permalink / raw)
To: maddy, mpe, npiggin, chleroy, pjw, palmer, aou, alex, ojeda,
boqun, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross,
dakr, daniel.almeida, tamird, acourbot, work, thuth, mkchauras,
linuxppc-dev, linux-kernel, linux-riscv, rust-for-linux
Cc: FUJITA Tomonori
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.
Refactor _EMIT_BUG_ENTRY to accept explicit (file, line, flags) string
arguments rather than relying on positional asm operand references
(%0, %1, %2, %3). This allows the macro to be composed as a plain
string concatenation, which is required for ARCH_WARN_ASM where no asm
operand context exists.
Move the .org and .previous directives out of _EMIT_BUG_ENTRY and into
the BUG_ENTRY() call site to preserve existing behaviour while enabling
ARCH_WARN_ASM to supply its own size operand independently.
Add ARCH_WARN_REACHABLE as an empty define, matching the arm64
convention, indicating that no additional reachability annotation is
needed after a WARN on powerpc.
This brings powerpc into line with x86, arm64, s390, and riscv, all of
which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
Suggested-by: FUJITA Tomonori <tomo@flapping.org>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
---
arch/powerpc/include/asm/bug.h | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
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
--
2.55.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc/bug: Add ARCH_WARN_ASM and refactor _EMIT_BUG_ENTRY for Rust support
2026-08-19 8:48 ` Mukesh Kumar Chaurasiya (IBM)
@ 2026-08-19 10:02 ` Miguel Ojeda
-1 siblings, 0 replies; 8+ messages in thread
From: Miguel Ojeda @ 2026-08-19 10:02 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya (IBM)
Cc: maddy, mpe, npiggin, chleroy, pjw, palmer, aou, alex, ojeda,
boqun, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross,
dakr, daniel.almeida, tamird, acourbot, work, thuth, linuxppc-dev,
linux-kernel, linux-riscv, rust-for-linux, FUJITA Tomonori
On Wed, Aug 19, 2026 at 10:48 AM Mukesh Kumar Chaurasiya (IBM)
<mkchauras@gmail.com> wrote:
>
> This brings powerpc into line with x86, arm64, s390, and riscv, all of
> which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
>
> Suggested-by: FUJITA Tomonori <tomo@flapping.org>
Should this be Reported-by?
In addition, probably we want a Link to the original report, and a Fixes tag.
Ideally, please include the error message in the commit message -- it
helps to triaging and also to search it later on etc.
Thanks!
Cheers,
Miguel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc/bug: Add ARCH_WARN_ASM and refactor _EMIT_BUG_ENTRY for Rust support
@ 2026-08-19 10:02 ` Miguel Ojeda
0 siblings, 0 replies; 8+ messages in thread
From: Miguel Ojeda @ 2026-08-19 10:02 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya (IBM)
Cc: maddy, mpe, npiggin, chleroy, pjw, palmer, aou, alex, ojeda,
boqun, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross,
dakr, daniel.almeida, tamird, acourbot, work, thuth, linuxppc-dev,
linux-kernel, linux-riscv, rust-for-linux, FUJITA Tomonori
On Wed, Aug 19, 2026 at 10:48 AM Mukesh Kumar Chaurasiya (IBM)
<mkchauras@gmail.com> wrote:
>
> This brings powerpc into line with x86, arm64, s390, and riscv, all of
> which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
>
> Suggested-by: FUJITA Tomonori <tomo@flapping.org>
Should this be Reported-by?
In addition, probably we want a Link to the original report, and a Fixes tag.
Ideally, please include the error message in the commit message -- it
helps to triaging and also to search it later on etc.
Thanks!
Cheers,
Miguel
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc/bug: Add ARCH_WARN_ASM and refactor _EMIT_BUG_ENTRY for Rust support
2026-08-19 10:02 ` Miguel Ojeda
@ 2026-08-19 10:42 ` Mukesh Kumar Chaurasiya
-1 siblings, 0 replies; 8+ messages in thread
From: Mukesh Kumar Chaurasiya @ 2026-08-19 10:42 UTC (permalink / raw)
To: Miguel Ojeda
Cc: maddy, mpe, npiggin, chleroy, pjw, palmer, aou, alex, ojeda,
boqun, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross,
dakr, daniel.almeida, tamird, acourbot, work, thuth, linuxppc-dev,
linux-kernel, linux-riscv, rust-for-linux, FUJITA Tomonori
On Wed, Aug 19, 2026 at 12:02:01PM +0200, Miguel Ojeda wrote:
> On Wed, Aug 19, 2026 at 10:48 AM Mukesh Kumar Chaurasiya (IBM)
> <mkchauras@gmail.com> wrote:
> >
> > This brings powerpc into line with x86, arm64, s390, and riscv, all of
> > which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
> >
> > Suggested-by: FUJITA Tomonori <tomo@flapping.org>
>
> Should this be Reported-by?
>
The change itself is suggested by Tomonori so i was not sure.
Yeah there should be
Reported-by: Link Mauve <linkmauve@linkmauve.fr>
Closes: https://lore.kernel.org/all/anG67Q6Y59kDqh-c@desktop
Fixes: 73b741adb264 ("rust: Add PowerPC support")
> In addition, probably we want a Link to the original report, and a Fixes tag.
>
> Ideally, please include the error message in the commit message -- it
> helps to triaging and also to search it later on etc.
>
Sure i'll add the error to the commit message and send out a new
revision.
> Thanks!
>
> Cheers,
> Miguel
Thanks for the quick review.
Regards,
Mukesh
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc/bug: Add ARCH_WARN_ASM and refactor _EMIT_BUG_ENTRY for Rust support
@ 2026-08-19 10:42 ` Mukesh Kumar Chaurasiya
0 siblings, 0 replies; 8+ messages in thread
From: Mukesh Kumar Chaurasiya @ 2026-08-19 10:42 UTC (permalink / raw)
To: Miguel Ojeda
Cc: maddy, mpe, npiggin, chleroy, pjw, palmer, aou, alex, ojeda,
boqun, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross,
dakr, daniel.almeida, tamird, acourbot, work, thuth, linuxppc-dev,
linux-kernel, linux-riscv, rust-for-linux, FUJITA Tomonori
On Wed, Aug 19, 2026 at 12:02:01PM +0200, Miguel Ojeda wrote:
> On Wed, Aug 19, 2026 at 10:48 AM Mukesh Kumar Chaurasiya (IBM)
> <mkchauras@gmail.com> wrote:
> >
> > This brings powerpc into line with x86, arm64, s390, and riscv, all of
> > which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
> >
> > Suggested-by: FUJITA Tomonori <tomo@flapping.org>
>
> Should this be Reported-by?
>
The change itself is suggested by Tomonori so i was not sure.
Yeah there should be
Reported-by: Link Mauve <linkmauve@linkmauve.fr>
Closes: https://lore.kernel.org/all/anG67Q6Y59kDqh-c@desktop
Fixes: 73b741adb264 ("rust: Add PowerPC support")
> In addition, probably we want a Link to the original report, and a Fixes tag.
>
> Ideally, please include the error message in the commit message -- it
> helps to triaging and also to search it later on etc.
>
Sure i'll add the error to the commit message and send out a new
revision.
> Thanks!
>
> Cheers,
> Miguel
Thanks for the quick review.
Regards,
Mukesh
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc/bug: Add ARCH_WARN_ASM and refactor _EMIT_BUG_ENTRY for Rust support
2026-08-19 8:48 ` Mukesh Kumar Chaurasiya (IBM)
@ 2026-08-19 11:50 ` Christophe Leroy (CS GROUP)
-1 siblings, 0 replies; 8+ messages in thread
From: Christophe Leroy (CS GROUP) @ 2026-08-19 11:50 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya (IBM), maddy, mpe, npiggin, pjw, palmer,
aou, alex, ojeda, boqun, gary, bjorn3_gh, lossin, a.hindborg,
aliceryhl, tmgross, dakr, daniel.almeida, tamird, acourbot, work,
thuth, linuxppc-dev, linux-kernel, linux-riscv, rust-for-linux
Cc: FUJITA Tomonori
Le 19/08/2026 à 10:48, Mukesh Kumar Chaurasiya (IBM) a écrit :
> 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.
>
> Refactor _EMIT_BUG_ENTRY to accept explicit (file, line, flags) string
> arguments rather than relying on positional asm operand references
> (%0, %1, %2, %3). This allows the macro to be composed as a plain
> string concatenation, which is required for ARCH_WARN_ASM where no asm
> operand context exists.
>
> Move the .org and .previous directives out of _EMIT_BUG_ENTRY and into
> the BUG_ENTRY() call site to preserve existing behaviour while enabling
> ARCH_WARN_ASM to supply its own size operand independently.
>
> Add ARCH_WARN_REACHABLE as an empty define, matching the arm64
> convention, indicating that no additional reachability annotation is
> needed after a WARN on powerpc.
>
> This brings powerpc into line with x86, arm64, s390, and riscv, all of
> which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
>
> Suggested-by: FUJITA Tomonori <tomo@flapping.org>
> Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
> ---
> arch/powerpc/include/asm/bug.h | 28 ++++++++++++++++------------
> 1 file changed, 16 insertions(+), 12 deletions(-)
>
> 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__ */
Sorry, I still don't understand. The only place the new macro is used is
a .S file (namely rust/kernel/generated_arch_warn_asm.rs.S), and the
change this patch implements is inside a #if !__ASSEMBLER__.
What am I missing ?
Christophe
> -/* _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
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] powerpc/bug: Add ARCH_WARN_ASM and refactor _EMIT_BUG_ENTRY for Rust support
@ 2026-08-19 11:50 ` Christophe Leroy (CS GROUP)
0 siblings, 0 replies; 8+ messages in thread
From: Christophe Leroy (CS GROUP) @ 2026-08-19 11:50 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya (IBM), maddy, mpe, npiggin, pjw, palmer,
aou, alex, ojeda, boqun, gary, bjorn3_gh, lossin, a.hindborg,
aliceryhl, tmgross, dakr, daniel.almeida, tamird, acourbot, work,
thuth, linuxppc-dev, linux-kernel, linux-riscv, rust-for-linux
Cc: FUJITA Tomonori
Le 19/08/2026 à 10:48, Mukesh Kumar Chaurasiya (IBM) a écrit :
> 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.
>
> Refactor _EMIT_BUG_ENTRY to accept explicit (file, line, flags) string
> arguments rather than relying on positional asm operand references
> (%0, %1, %2, %3). This allows the macro to be composed as a plain
> string concatenation, which is required for ARCH_WARN_ASM where no asm
> operand context exists.
>
> Move the .org and .previous directives out of _EMIT_BUG_ENTRY and into
> the BUG_ENTRY() call site to preserve existing behaviour while enabling
> ARCH_WARN_ASM to supply its own size operand independently.
>
> Add ARCH_WARN_REACHABLE as an empty define, matching the arm64
> convention, indicating that no additional reachability annotation is
> needed after a WARN on powerpc.
>
> This brings powerpc into line with x86, arm64, s390, and riscv, all of
> which already define ARCH_WARN_ASM and ARCH_WARN_REACHABLE.
>
> Suggested-by: FUJITA Tomonori <tomo@flapping.org>
> Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
> ---
> arch/powerpc/include/asm/bug.h | 28 ++++++++++++++++------------
> 1 file changed, 16 insertions(+), 12 deletions(-)
>
> 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__ */
Sorry, I still don't understand. The only place the new macro is used is
a .S file (namely rust/kernel/generated_arch_warn_asm.rs.S), and the
change this patch implements is inside a #if !__ASSEMBLER__.
What am I missing ?
Christophe
> -/* _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
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-08-19 11:51 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-19 8:48 [PATCH] powerpc/bug: Add ARCH_WARN_ASM and refactor _EMIT_BUG_ENTRY for Rust support Mukesh Kumar Chaurasiya (IBM)
2026-08-19 8:48 ` Mukesh Kumar Chaurasiya (IBM)
2026-08-19 10:02 ` Miguel Ojeda
2026-08-19 10:02 ` Miguel Ojeda
2026-08-19 10:42 ` Mukesh Kumar Chaurasiya
2026-08-19 10:42 ` Mukesh Kumar Chaurasiya
2026-08-19 11:50 ` Christophe Leroy (CS GROUP)
2026-08-19 11:50 ` Christophe Leroy (CS GROUP)
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.