[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 [new file with mode: 0644]
include/asm-ppc/bug.h [deleted file]
include/asm-ppc64/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;
 }
 
diff --git a/include/asm-powerpc/bug.h b/include/asm-powerpc/bug.h
new file mode 100644 (file)
index 0000000..e4d028e
--- /dev/null
@@ -0,0 +1,81 @@
+#ifndef _ASM_POWERPC_BUG_H
+#define _ASM_POWERPC_BUG_H
+
+/*
+ * Define an illegal instr to trap on the bug.
+ * We don't use 0 because that marks the end of a function
+ * in the ELF ABI.  That's "Boo Boo" in case you wonder...
+ */
+#define BUG_OPCODE .long 0x00b00b00  /* For asm */
+#define BUG_ILLEGAL_INSTR "0x00b00b00" /* For BUG macro */
+
+#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;
+       int             line;
+       const char      *file;
+       const char      *function;
+};
+
+struct bug_entry *find_bug(unsigned long bugaddr);
+
+/*
+ * 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"                         \
+               BUG_TABLE_ENTRY(1b,%0,%1,%2)                             \
+               ".previous"                                              \
+               : : "i" (__LINE__), "i" (__FILE__), "i" (__FUNCTION__)); \
+} while (0)
+
+#define BUG_ON(x) do {                                         \
+       __asm__ __volatile__(                                   \
+               TRAP_OP(%0,0)                                   \
+               ".section __bug_table,\"a\"\n\t"                \
+               BUG_TABLE_ENTRY(1b,%1,%2,%3)                    \
+               ".previous"                                     \
+               : : "r" ((DATA_TYPE)(x)), "i" (__LINE__),       \
+                   "i" (__FILE__), "i" (__FUNCTION__));        \
+} while (0)
+
+#define WARN_ON(x) do {                                                \
+       __asm__ __volatile__(                                   \
+               TRAP_OP(%0,0)                                   \
+               ".section __bug_table,\"a\"\n\t"                \
+               BUG_TABLE_ENTRY(1b,%1,%2,%3)                    \
+               ".previous"                                     \
+               : : "r" ((DATA_TYPE)(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 /* CONFIG_BUG */
+#endif /* __ASSEMBLY __ */
+
+#include <asm-generic/bug.h>
+
+#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
diff --git a/include/asm-ppc64/bug.h b/include/asm-ppc64/bug.h
deleted file mode 100644 (file)
index 1601782..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef _PPC64_BUG_H
-#define _PPC64_BUG_H
-
-/*
- * Define an illegal instr to trap on the bug.
- * We don't use 0 because that marks the end of a function
- * in the ELF ABI.  That's "Boo Boo" in case you wonder...
- */
-#define BUG_OPCODE .long 0x00b00b00  /* For asm */
-#define BUG_ILLEGAL_INSTR "0x00b00b00" /* For BUG macro */
-
-#ifndef __ASSEMBLY__
-
-struct bug_entry {
-       unsigned long   bug_addr;
-       long            line;
-       const char      *file;
-       const char      *function;
-};
-
-struct bug_entry *find_bug(unsigned long bugaddr);
-
-/*
- * 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"                         \
-               "       .llong 1b,%0,%1,%2\n"                            \
-               ".previous"                                              \
-               : : "i" (__LINE__), "i" (__FILE__), "i" (__FUNCTION__)); \
-} while (0)
-
-#define BUG_ON(x) do {                                         \
-       __asm__ __volatile__(                                   \
-               "1:     tdnei %0,0\n"                           \
-               ".section __bug_table,\"a\"\n\t"                \
-               "       .llong 1b,%1,%2,%3\n"                   \
-               ".previous"                                     \
-               : : "r" ((long long)(x)), "i" (__LINE__),       \
-                   "i" (__FILE__), "i" (__FUNCTION__));        \
-} while (0)
-
-#define WARN_ON(x) do {                                                \
-       __asm__ __volatile__(                                   \
-               "1:     tdnei %0,0\n"                           \
-               ".section __bug_table,\"a\"\n\t"                \
-               "       .llong 1b,%1,%2,%3\n"                   \
-               ".previous"                                     \
-               : : "r" ((long long)(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
-#endif
-
-#include <asm-generic/bug.h>
-
-#endif