Message ID | 20241210001802.228725-5-fujita.tomonori@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | rust: Add bug/warn abstractions | expand |
Hi, FUJITA, On Tue, Dec 10, 2024 at 8:19 AM FUJITA Tomonori <fujita.tomonori@gmail.com> wrote: > > Add new ARCH_WARN_ASM macro for BUG/WARN assembly code sharing with > Rust to avoid the duplication. > > No functional changes. > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com> > --- > arch/loongarch/include/asm/bug.h | 31 ++++++++++++++++++++++++++++--- > 1 file changed, 28 insertions(+), 3 deletions(-) > > diff --git a/arch/loongarch/include/asm/bug.h b/arch/loongarch/include/asm/bug.h > index 08388876ade4..2343c4226595 100644 > --- a/arch/loongarch/include/asm/bug.h > +++ b/arch/loongarch/include/asm/bug.h > @@ -21,14 +21,21 @@ > #ifndef CONFIG_GENERIC_BUG > #define __BUG_ENTRY(flags) > #else > -#define __BUG_ENTRY(flags) \ > + > +#define __BUG_ENTRY_START \ > .pushsection __bug_table, "aw"; \ > .align 2; \ > 10000: .long 10001f - .; \ > - _BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ > - .short flags; \ > + > +#define __BUG_ENTRY_END \ > .popsection; \ > 10001: > + > +#define __BUG_ENTRY(flags) \ > + __BUG_ENTRY_START \ > + _BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ > + .short flags; \ > + __BUG_ENTRY_END > #endif > > #define ASM_BUG_FLAGS(flags) \ > @@ -55,6 +62,24 @@ do { \ > unreachable(); \ > } while (0) > > +#ifdef CONFIG_DEBUG_BUGVERBOSE > +#define __BUG_LOCATION_STRING(file, line) \ > + ".long " file "- .;" \ > + ".short " line ";" > +#else > +#define __BUG_LOCATION_STRING(_file, _line) > +#endif Can we use file and line instead of _file and _line, which is the same as the CONFIG_DEBUG_BUGVERBOSE case? > + > +#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(break BRK_BUG) ";" > + Can we use the same indentation in this file? Huacai > #define HAVE_ARCH_BUG > > #include <asm-generic/bug.h> > -- > 2.43.0 >
On Wed, 11 Dec 2024 16:41:42 +0800 Huacai Chen <chenhuacai@kernel.org> wrote: >> +#ifdef CONFIG_DEBUG_BUGVERBOSE >> +#define __BUG_LOCATION_STRING(file, line) \ >> + ".long " file "- .;" \ >> + ".short " line ";" >> +#else >> +#define __BUG_LOCATION_STRING(_file, _line) >> +#endif > Can we use file and line instead of _file and _line, which is the same > as the CONFIG_DEBUG_BUGVERBOSE case? Of course, I'll fix in v2. I should have done that. >> + >> +#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(break BRK_BUG) ";" >> + > Can we use the same indentation in this file? Oops, I'll fix in v2. Thanks!
diff --git a/arch/loongarch/include/asm/bug.h b/arch/loongarch/include/asm/bug.h index 08388876ade4..2343c4226595 100644 --- a/arch/loongarch/include/asm/bug.h +++ b/arch/loongarch/include/asm/bug.h @@ -21,14 +21,21 @@ #ifndef CONFIG_GENERIC_BUG #define __BUG_ENTRY(flags) #else -#define __BUG_ENTRY(flags) \ + +#define __BUG_ENTRY_START \ .pushsection __bug_table, "aw"; \ .align 2; \ 10000: .long 10001f - .; \ - _BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ - .short flags; \ + +#define __BUG_ENTRY_END \ .popsection; \ 10001: + +#define __BUG_ENTRY(flags) \ + __BUG_ENTRY_START \ + _BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ + .short flags; \ + __BUG_ENTRY_END #endif #define ASM_BUG_FLAGS(flags) \ @@ -55,6 +62,24 @@ do { \ unreachable(); \ } while (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(break BRK_BUG) ";" + #define HAVE_ARCH_BUG #include <asm-generic/bug.h>
Add new ARCH_WARN_ASM macro for BUG/WARN assembly code sharing with Rust to avoid the duplication. No functional changes. Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com> --- arch/loongarch/include/asm/bug.h | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-)