Re: [patch 5/5] PowerPC: switch to generic WARN_ON / BUG_ON

From: Benjamin Herrenschmidt
Date: Sun Jan 06 2008 - 06:17:20 EST



On Sat, 2008-01-05 at 19:12 -0800, Arjan van de Ven wrote:
> From: Olof Johansson <olof@xxxxxxxxx>
>
> Not using the ppc-specific WARN_ON/BUG_ON constructs actually saves about
> 4K text on a ppc64_defconfig. The main reason seems to be that prepping
> the arguments to the conditional trap instructions is more work than just
> doing a compare and branch.

I'm a bit annoyed by that one ... for obvious reasons... I wish gcc
could be better here. Also, we can't completely remove the support for
the trap since we use that in asm in various places...

Ben.

> Signed-off-by: Olof Johansson <olof@xxxxxxxxx>
> Cc: <linux-arch@xxxxxxxxxxxxxxx>
> Cc: Scott Wood <scottwood@xxxxxxxxxxxxx>
> Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
> Cc: Paul Mackerras <paulus@xxxxxxxxx>,
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> ---
>
> include/asm-powerpc/bug.h | 37 -------------------------------------
> 1 file changed, 37 deletions(-)
>
> Index: linux-2.6.24-rc6/include/asm-powerpc/bug.h
> ===================================================================
> --- linux-2.6.24-rc6.orig/include/asm-powerpc/bug.h
> +++ linux-2.6.24-rc6/include/asm-powerpc/bug.h
> @@ -54,12 +54,6 @@
> ".previous\n"
> #endif
>
> -/*
> - * BUG_ON() and WARN_ON() do their best to cooperate with compile-time
> - * optimisations. However depending on the complexity of the condition
> - * some compiler versions may not produce optimal results.
> - */
> -
> #define BUG() do { \
> __asm__ __volatile__( \
> "1: twi 31,0,0\n" \
> @@ -69,20 +63,6 @@
> for(;;) ; \
> } while (0)
>
> -#define BUG_ON(x) do { \
> - if (__builtin_constant_p(x)) { \
> - if (x) \
> - BUG(); \
> - } else { \
> - __asm__ __volatile__( \
> - "1: "PPC_TLNEI" %4,0\n" \
> - _EMIT_BUG_ENTRY \
> - : : "i" (__FILE__), "i" (__LINE__), "i" (0), \
> - "i" (sizeof(struct bug_entry)), \
> - "r" ((__force long)(x))); \
> - } \
> -} while (0)
> -
> #define __WARN() do { \
> __asm__ __volatile__( \
> "1: twi 31,0,0\n" \
> @@ -92,23 +72,6 @@
> "i" (sizeof(struct bug_entry))); \
> } while (0)
>
> -#define WARN_ON(x) ({ \
> - int __ret_warn_on = !!(x); \
> - if (__builtin_constant_p(__ret_warn_on)) { \
> - if (__ret_warn_on) \
> - __WARN(); \
> - } else { \
> - __asm__ __volatile__( \
> - "1: "PPC_TLNEI" %4,0\n" \
> - _EMIT_BUG_ENTRY \
> - : : "i" (__FILE__), "i" (__LINE__), \
> - "i" (BUGFLAG_WARNING), \
> - "i" (sizeof(struct bug_entry)), \
> - "r" (__ret_warn_on)); \
> - } \
> - unlikely(__ret_warn_on); \
> -})
> -
> #endif /* __ASSEMBLY __ */
> #endif /* CONFIG_BUG */
>
>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/