[PATCH] powerpc: Merge bug.h
authorBecky Bruce <bgill@freescale.com>
Mon, 19 Sep 2005 22:01:54 +0000 (17:01 -0500)
committerPaul Mackerras <paulus@samba.org>
Wed, 21 Sep 2005 09:21:09 +0000 (19:21 +1000)
ppc32/ppc64: Merge bug.h into include/asm-powerpc

This patch merges bug.h into include/asm-powerpc.  Changed the data
structure for bug_entry such that line is always an int on both 32 and
64-bit platforms; removed casts to int from the 64-bit trap code to
reflect this.

Signed-off-by: Kumar Gala <kumar.gala@freescale.com>
Signed-off-by: Becky Bruce <Becky.Bruce@freescale.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/ppc/kernel/traps.c
arch/ppc64/kernel/traps.c
include/asm-powerpc/bug.h [moved from include/asm-ppc64/bug.h with 62% similarity]
include/asm-ppc/bug.h [deleted file]

index 961ede87be72254f421d6f2f269668bb19f54070..82e4d70e6dbb26a5f87fbad2adadb8b7fac90522 100644 (file)
@@ -575,7 +575,7 @@ extern struct bug_entry __start___bug_table[], __stop___bug_table[];
 #define module_find_bug(x)     NULL
 #endif
 
-static struct bug_entry *find_bug(unsigned long bugaddr)
+struct bug_entry *find_bug(unsigned long bugaddr)
 {
        struct bug_entry *bug;
 
index 7467ae508e6e27e734c1fc9110c2f03e60790900..5c4647b2c5f3cbf3cf3ef87f18acaea9d32045a0 100644 (file)
@@ -390,12 +390,12 @@ check_bug_trap(struct pt_regs *regs)
                /* this is a WARN_ON rather than BUG/BUG_ON */
                printk(KERN_ERR "Badness in %s at %s:%d\n",
                       bug->function, bug->file,
-                     (unsigned int)bug->line & ~BUG_WARNING_TRAP);
+                      bug->line & ~BUG_WARNING_TRAP);
                show_stack(current, (void *)regs->gpr[1]);
                return 1;
        }
        printk(KERN_CRIT "kernel BUG in %s at %s:%d!\n",
-              bug->function, bug->file, (unsigned int)bug->line);
+              bug->function, bug->file, bug->line);
        return 0;
 }
 
similarity index 62%
rename from include/asm-ppc64/bug.h
rename to include/asm-powerpc/bug.h
index 1601782788610748de11a46dd6cfa288f3dc7a5e..e4d028e8702042d3573117b53241dfda23f48fab 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef _PPC64_BUG_H
-#define _PPC64_BUG_H
+#ifndef _ASM_POWERPC_BUG_H
+#define _ASM_POWERPC_BUG_H
 
 /*
  * Define an illegal instr to trap on the bug.
 
 #ifndef __ASSEMBLY__
 
+#ifdef __powerpc64__
+#define BUG_TABLE_ENTRY(label, line, file, func) \
+       ".llong " #label "\n .long " #line "\n .llong " #file ", " #func "\n"
+#define TRAP_OP(ra, rb) "1: tdnei " #ra ", " #rb "\n"
+#define DATA_TYPE long long
+#else 
+#define BUG_TABLE_ENTRY(label, line, file, func) \
+       ".long " #label ", " #line ", " #file ", " #func "\n"
+#define TRAP_OP(ra, rb) "1: twnei " #ra ", " #rb "\n"
+#define DATA_TYPE int
+#endif /* __powerpc64__ */
+
 struct bug_entry {
        unsigned long   bug_addr;
-       long            line;
+       int             line;
        const char      *file;
        const char      *function;
 };
@@ -32,28 +44,28 @@ struct bug_entry *find_bug(unsigned long bugaddr);
        __asm__ __volatile__(                                            \
                "1:     twi 31,0,0\n"                                    \
                ".section __bug_table,\"a\"\n\t"                         \
-               "       .llong 1b,%0,%1,%2\n"                            \
+               BUG_TABLE_ENTRY(1b,%0,%1,%2)                             \
                ".previous"                                              \
                : : "i" (__LINE__), "i" (__FILE__), "i" (__FUNCTION__)); \
 } while (0)
 
 #define BUG_ON(x) do {                                         \
        __asm__ __volatile__(                                   \
-               "1:     tdnei %0,0\n"                           \
+               TRAP_OP(%0,0)                                   \
                ".section __bug_table,\"a\"\n\t"                \
-               "       .llong 1b,%1,%2,%3\n"                   \
+               BUG_TABLE_ENTRY(1b,%1,%2,%3)                    \
                ".previous"                                     \
-               : : "r" ((long long)(x)), "i" (__LINE__),       \
+               : : "r" ((DATA_TYPE)(x)), "i" (__LINE__),       \
                    "i" (__FILE__), "i" (__FUNCTION__));        \
 } while (0)
 
 #define WARN_ON(x) do {                                                \
        __asm__ __volatile__(                                   \
-               "1:     tdnei %0,0\n"                           \
+               TRAP_OP(%0,0)                                   \
                ".section __bug_table,\"a\"\n\t"                \
-               "       .llong 1b,%1,%2,%3\n"                   \
+               BUG_TABLE_ENTRY(1b,%1,%2,%3)                    \
                ".previous"                                     \
-               : : "r" ((long long)(x)),                       \
+               : : "r" ((DATA_TYPE)(x)),                       \
                    "i" (__LINE__ + BUG_WARNING_TRAP),          \
                    "i" (__FILE__), "i" (__FUNCTION__));        \
 } while (0)
@@ -61,9 +73,9 @@ struct bug_entry *find_bug(unsigned long bugaddr);
 #define HAVE_ARCH_BUG
 #define HAVE_ARCH_BUG_ON
 #define HAVE_ARCH_WARN_ON
-#endif
-#endif
+#endif /* CONFIG_BUG */
+#endif /* __ASSEMBLY __ */
 
 #include <asm-generic/bug.h>
 
-#endif
+#endif /* _ASM_POWERPC_BUG_H */
diff --git a/include/asm-ppc/bug.h b/include/asm-ppc/bug.h
deleted file mode 100644 (file)
index 8b34fd6..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef _PPC_BUG_H
-#define _PPC_BUG_H
-
-struct bug_entry {
-       unsigned long   bug_addr;
-       int             line;
-       const char      *file;
-       const char      *function;
-};
-
-/*
- * If this bit is set in the line number it means that the trap
- * is for WARN_ON rather than BUG or BUG_ON.
- */
-#define BUG_WARNING_TRAP       0x1000000
-
-#ifdef CONFIG_BUG
-#define BUG() do {                                                      \
-       __asm__ __volatile__(                                            \
-               "1:     twi 31,0,0\n"                                    \
-               ".section __bug_table,\"a\"\n\t"                         \
-               "       .long 1b,%0,%1,%2\n"                             \
-               ".previous"                                              \
-               : : "i" (__LINE__), "i" (__FILE__), "i" (__FUNCTION__)); \
-} while (0)
-
-#define BUG_ON(x) do {                                                 \
-       if (!__builtin_constant_p(x) || (x)) {                          \
-               __asm__ __volatile__(                                   \
-                       "1:     twnei %0,0\n"                           \
-                       ".section __bug_table,\"a\"\n\t"                \
-                       "       .long 1b,%1,%2,%3\n"                    \
-                       ".previous"                                     \
-                       : : "r" (x), "i" (__LINE__), "i" (__FILE__),    \
-                           "i" (__FUNCTION__));                        \
-       }                                                               \
-} while (0)
-
-#define WARN_ON(x) do {                                                        \
-       if (!__builtin_constant_p(x) || (x)) {                          \
-               __asm__ __volatile__(                                   \
-                       "1:     twnei %0,0\n"                           \
-                       ".section __bug_table,\"a\"\n\t"                \
-                       "       .long 1b,%1,%2,%3\n"                    \
-                       ".previous"                                     \
-                       : : "r" (x), "i" (__LINE__ + BUG_WARNING_TRAP), \
-                           "i" (__FILE__), "i" (__FUNCTION__));        \
-       }                                                               \
-} while (0)
-
-#define HAVE_ARCH_BUG
-#define HAVE_ARCH_BUG_ON
-#define HAVE_ARCH_WARN_ON
-#endif
-
-#include <asm-generic/bug.h>
-
-#endif