From 81ca0296edb7b1ab4ea588159cca4cac0215a73e Mon Sep 17 00:00:00 2001 From: Matt Mackall Date: Sun, 22 Aug 2004 22:55:57 -0700 Subject: [PATCH] [PATCH] move duplicate BUG and WARN_ON bits to asm-generic This moves duplicate BUG, PAGE_BUG, BUG_ON, and WARN_ON code to asm-generic and makes them slightly more consistent. This cleanup is also preparatory work for making BUG and WARN verbosity configurable. Signed-off-by: Matt Mackall Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- include/asm-alpha/bug.h | 12 ++---------- include/asm-arm/bug.h | 14 +++----------- include/asm-arm26/bug.h | 17 ++--------------- include/asm-cris/bug.h | 19 +------------------ include/asm-generic/bug.h | 34 ++++++++++++++++++++++++++++++++++ include/asm-h8300/bug.h | 19 +------------------ include/asm-i386/bug.h | 14 ++------------ include/asm-ia64/bug.h | 13 +++---------- include/asm-m68k/bug.h | 17 ++--------------- include/asm-m68knommu/bug.h | 22 +--------------------- include/asm-mips/bug.h | 10 ++-------- include/asm-parisc/bug.h | 27 +-------------------------- include/asm-ppc/bug.h | 7 +++++-- include/asm-ppc64/bug.h | 8 ++++++-- include/asm-s390/bug.h | 19 +++---------------- include/asm-sh/bug.h | 17 ++--------------- include/asm-sparc/bug.h | 17 ++--------------- include/asm-sparc64/bug.h | 19 ++----------------- include/asm-um/bug.h | 28 +--------------------------- include/asm-v850/bug.h | 12 ++---------- include/asm-x86_64/bug.h | 25 +++++++++---------------- 21 files changed, 86 insertions(+), 284 deletions(-) create mode 100644 include/asm-generic/bug.h diff --git a/include/asm-alpha/bug.h b/include/asm-alpha/bug.h index 61bd72ea84b16..ae1e0a5fa492c 100644 --- a/include/asm-alpha/bug.h +++ b/include/asm-alpha/bug.h @@ -9,15 +9,7 @@ __asm__ __volatile__("call_pal %0 # bugchk\n\t"".long %1\n\t.8byte %2" \ : : "i" (PAL_bugchk), "i"(__LINE__), "i"(__FILE__)) -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) - -#define PAGE_BUG(page) BUG() - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-arm/bug.h b/include/asm-arm/bug.h index a1afde728b034..5e91b90a8181c 100644 --- a/include/asm-arm/bug.h +++ b/include/asm-arm/bug.h @@ -8,23 +8,15 @@ extern volatile void __bug(const char *file, int line, void *data); /* give file/line information */ #define BUG() __bug(__FILE__, __LINE__, NULL) -#define PAGE_BUG(page) __bug(__FILE__, __LINE__, page) #else -/* these just cause an oops */ +/* this just causes an oops */ #define BUG() (*(int *)0 = 0) -#define PAGE_BUG(page) (*(int *)0 = 0) #endif -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-arm26/bug.h b/include/asm-arm26/bug.h index a1afde728b034..920b705333680 100644 --- a/include/asm-arm26/bug.h +++ b/include/asm-arm26/bug.h @@ -5,26 +5,13 @@ #ifdef CONFIG_DEBUG_BUGVERBOSE extern volatile void __bug(const char *file, int line, void *data); - /* give file/line information */ #define BUG() __bug(__FILE__, __LINE__, NULL) -#define PAGE_BUG(page) __bug(__FILE__, __LINE__, page) - #else - -/* these just cause an oops */ #define BUG() (*(int *)0 = 0) -#define PAGE_BUG(page) (*(int *)0 = 0) - #endif -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-cris/bug.h b/include/asm-cris/bug.h index d6286c265cbc0..8dd6b23c15d62 100644 --- a/include/asm-cris/bug.h +++ b/include/asm-cris/bug.h @@ -1,21 +1,4 @@ #ifndef _CRIS_BUG_H #define _CRIS_BUG_H - -#define BUG() do { \ - printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ -} while (0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) - +#include #endif diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h new file mode 100644 index 0000000000000..e5913c3b715a0 --- /dev/null +++ b/include/asm-generic/bug.h @@ -0,0 +1,34 @@ +#ifndef _ASM_GENERIC_BUG_H +#define _ASM_GENERIC_BUG_H + +#include +#include + +#ifndef HAVE_ARCH_BUG +#define BUG() do { \ + printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ + panic("BUG!"); \ +} while (0) +#endif + +#ifndef HAVE_ARCH_PAGE_BUG +#define PAGE_BUG(page) do { \ + printk("page BUG for page at %p\n", page); \ + BUG(); \ +} while (0) +#endif + +#ifndef HAVE_ARCH_BUG_ON +#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) +#endif + +#ifndef HAVE_ARCH_WARN_ON +#define WARN_ON(condition) do { \ + if (unlikely((condition)!=0)) { \ + printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ + dump_stack(); \ + } \ +} while (0) +#endif + +#endif diff --git a/include/asm-h8300/bug.h b/include/asm-h8300/bug.h index 3b6f0102f12e1..edddf5b086e5f 100644 --- a/include/asm-h8300/bug.h +++ b/include/asm-h8300/bug.h @@ -1,21 +1,4 @@ #ifndef _H8300_BUG_H #define _H8300_BUG_H - -#define BUG() do { \ - printk("%s(%d): kernel BUG!\n", __FILE__, __LINE__); \ -} while (0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) - +#include #endif diff --git a/include/asm-i386/bug.h b/include/asm-i386/bug.h index 433a6e525d1b7..c9f0bf3435d19 100644 --- a/include/asm-i386/bug.h +++ b/include/asm-i386/bug.h @@ -19,17 +19,7 @@ #define BUG() __asm__ __volatile__("ud2\n") #endif -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-ia64/bug.h b/include/asm-ia64/bug.h index abbf37a444ecc..2c0cd51e88561 100644 --- a/include/asm-ia64/bug.h +++ b/include/asm-ia64/bug.h @@ -8,15 +8,8 @@ #endif #define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); ia64_abort(); } while (0) -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) - -#define PAGE_BUG(page) do { BUG(); } while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +/* should this BUG should be made generic? */ +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-m68k/bug.h b/include/asm-m68k/bug.h index 1f21b0d197272..3e1d2266fa69e 100644 --- a/include/asm-m68k/bug.h +++ b/include/asm-m68k/bug.h @@ -21,20 +21,7 @@ } while (0) #endif -#define BUG_ON(condition) do { \ - if (unlikely((condition)!=0)) \ - BUG(); \ -} while(0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-m68knommu/bug.h b/include/asm-m68knommu/bug.h index bc027eadb9c3e..70e7dc0af21a8 100644 --- a/include/asm-m68knommu/bug.h +++ b/include/asm-m68knommu/bug.h @@ -1,24 +1,4 @@ #ifndef _M68KNOMMU_BUG_H #define _M68KNOMMU_BUG_H - -#define BUG() do { \ - printk("%s(%d): kernel BUG!\n", __FILE__, __LINE__); \ -} while (0) - -#define BUG_ON(condition) do { \ - if (unlikely((condition)!=0)) \ - BUG(); \ -} while(0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) - +#include #endif diff --git a/include/asm-mips/bug.h b/include/asm-mips/bug.h index f1f483d4fc347..eb94bb96cfbcb 100644 --- a/include/asm-mips/bug.h +++ b/include/asm-mips/bug.h @@ -7,14 +7,8 @@ do { \ __asm__ __volatile__("break %0" : : "i" (BRK_BUG)); \ } while (0) -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) -#define PAGE_BUG(page) do { BUG(); } while (0) -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-parisc/bug.h b/include/asm-parisc/bug.h index 00d6aa7f05f50..98d36ad3cf87f 100644 --- a/include/asm-parisc/bug.h +++ b/include/asm-parisc/bug.h @@ -1,29 +1,4 @@ #ifndef _PARISC_BUG_H #define _PARISC_BUG_H - -/* - * Tell the user there is some problem. - */ -#define BUG() do { \ - extern void dump_stack(void); \ - printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ - dump_stack(); \ -} while (0) - -#define BUG_ON(condition) do { \ - if (unlikely((condition)!=0)) \ - BUG(); \ -} while(0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) - +#include #endif diff --git a/include/asm-ppc/bug.h b/include/asm-ppc/bug.h index 6b2579d9d4ee0..e99c6cb9d6189 100644 --- a/include/asm-ppc/bug.h +++ b/include/asm-ppc/bug.h @@ -35,8 +35,6 @@ struct bug_entry { } \ } while (0) -#define PAGE_BUG(page) BUG() - #define WARN_ON(x) do { \ if (!__builtin_constant_p(x) || (x)) { \ __asm__ __volatile__( \ @@ -49,4 +47,9 @@ struct bug_entry { } \ } while (0) +#define HAVE_ARCH_BUG +#define HAVE_ARCH_BUG_ON +#define HAVE_ARCH_WARN_ON +#include + #endif diff --git a/include/asm-ppc64/bug.h b/include/asm-ppc64/bug.h index 9e439ee1ed4f7..790bc56091d61 100644 --- a/include/asm-ppc64/bug.h +++ b/include/asm-ppc64/bug.h @@ -43,8 +43,6 @@ struct bug_entry { "i" (__FUNCTION__)); \ } while (0) -#define PAGE_BUG(page) do { BUG(); } while (0) - #define WARN_ON(x) do { \ __asm__ __volatile__( \ "1: tdnei %0,0\n" \ @@ -56,4 +54,10 @@ struct bug_entry { } while (0) #endif + +#define HAVE_ARCH_BUG +#define HAVE_ARCH_BUG_ON +#define HAVE_ARCH_WARN_ON +#include + #endif diff --git a/include/asm-s390/bug.h b/include/asm-s390/bug.h index d59639386f7cd..2b8d6d4dffcfd 100644 --- a/include/asm-s390/bug.h +++ b/include/asm-s390/bug.h @@ -6,22 +6,9 @@ #define BUG() do { \ printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ __asm__ __volatile__(".long 0"); \ -} while (0) - -#define BUG_ON(condition) do { \ - if (unlikely((condition)!=0)) \ - BUG(); \ -} while(0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ } while (0) +#define HAVE_ARCH_BUG +#include + #endif diff --git a/include/asm-sh/bug.h b/include/asm-sh/bug.h index 0ffc7087c3d3c..ea41e17bb9593 100644 --- a/include/asm-sh/bug.h +++ b/include/asm-sh/bug.h @@ -11,20 +11,7 @@ asm volatile("nop"); \ } while (0) -#define BUG_ON(condition) do { \ - if (unlikely((condition)!=0)) \ - BUG(); \ -} while(0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-sparc/bug.h b/include/asm-sparc/bug.h index 1f321b0911410..0d30a67d87a37 100644 --- a/include/asm-sparc/bug.h +++ b/include/asm-sparc/bug.h @@ -25,20 +25,7 @@ extern void do_BUG(const char *file, int line); #define BUG() __bug_trap() #endif -#define BUG_ON(condition) do { \ - if (unlikely((condition)!=0)) \ - BUG(); \ -} while(0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-sparc64/bug.h b/include/asm-sparc64/bug.h index bfac1afa9983b..25c5b1dfe3783 100644 --- a/include/asm-sparc64/bug.h +++ b/include/asm-sparc64/bug.h @@ -1,5 +1,3 @@ -/* $Id$ */ - #ifndef _SPARC64_BUG_H #define _SPARC64_BUG_H @@ -15,20 +13,7 @@ extern void do_BUG(const char *file, int line); #define BUG() __builtin_trap() #endif -#define BUG_ON(condition) do { \ - if (unlikely((condition)!=0)) \ - BUG(); \ -} while(0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif diff --git a/include/asm-um/bug.h b/include/asm-um/bug.h index f5836c5ae7603..1e22fa26ff061 100644 --- a/include/asm-um/bug.h +++ b/include/asm-um/bug.h @@ -1,30 +1,4 @@ #ifndef __UM_BUG_H #define __UM_BUG_H - -#ifndef __ASSEMBLY__ - -#define BUG() do { \ - panic("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ -} while (0) - -#define BUG_ON(condition) do { \ - if (unlikely((condition)!=0)) \ - BUG(); \ -} while(0) - -#define PAGE_BUG(page) do { \ - BUG(); \ -} while (0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) - -extern int foo; - -#endif - +#include #endif diff --git a/include/asm-v850/bug.h b/include/asm-v850/bug.h index ce68b9abace62..c778916bf7f2c 100644 --- a/include/asm-v850/bug.h +++ b/include/asm-v850/bug.h @@ -16,15 +16,7 @@ extern void __bug (void) __attribute__ ((noreturn)); #define BUG() __bug() -#define PAGE_BUG(page) __bug() - -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#define HAVE_ARCH_BUG +#include #endif /* __V850_BUG_H__ */ diff --git a/include/asm-x86_64/bug.h b/include/asm-x86_64/bug.h index 44d70dea00e77..d2032f56e87c2 100644 --- a/include/asm-x86_64/bug.h +++ b/include/asm-x86_64/bug.h @@ -6,27 +6,20 @@ /* * Tell the user there is some problem. The exception handler decodes * this frame. - */ -struct bug_frame { - unsigned char ud2[2]; + */ +struct bug_frame { + unsigned char ud2[2]; /* should use 32bit offset instead, but the assembler doesn't - like it */ - char *filename; - unsigned short line; -} __attribute__((packed)); + like it */ + char *filename; + unsigned short line; +} __attribute__((packed)); +#define HAVE_ARCH_BUG #define BUG() \ asm volatile("ud2 ; .quad %c1 ; .short %c0" :: \ "i"(__LINE__), "i" (__stringify(KBUILD_BASENAME))) -#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) -#define PAGE_BUG(page) BUG() void out_of_line_bug(void); - -#define WARN_ON(condition) do { \ - if (unlikely((condition)!=0)) { \ - printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ - dump_stack(); \ - } \ -} while (0) +#include #endif -- 2.53.0