blob: 6e5aaaa9a2fb8d89710c357201dd83bcc69757b2 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef _ASM_GENERIC_BUG_H
2#define _ASM_GENERIC_BUG_H
3
4#include <linux/compiler.h>
5#include <linux/config.h>
6
Matt Mackallc8538a72005-05-01 08:59:01 -07007#ifdef CONFIG_BUG
Linus Torvalds1da177e2005-04-16 15:20:36 -07008#ifndef HAVE_ARCH_BUG
9#define BUG() do { \
10 printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
11 panic("BUG!"); \
12} while (0)
13#endif
14
15#ifndef HAVE_ARCH_PAGE_BUG
16#define PAGE_BUG(page) do { \
17 printk("page BUG for page at %p\n", page); \
18 BUG(); \
19} while (0)
20#endif
21
22#ifndef HAVE_ARCH_BUG_ON
23#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0)
24#endif
25
26#ifndef HAVE_ARCH_WARN_ON
27#define WARN_ON(condition) do { \
28 if (unlikely((condition)!=0)) { \
29 printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \
30 dump_stack(); \
31 } \
32} while (0)
33#endif
34
Matt Mackallc8538a72005-05-01 08:59:01 -070035#else /* !CONFIG_BUG */
36#ifndef HAVE_ARCH_BUG
37#define BUG()
38#endif
39
40#ifndef HAVE_ARCH_PAGE_BUG
41#define PAGE_BUG(page) do { if (page) ; } while (0)
42#endif
43
44#ifndef HAVE_ARCH_BUG_ON
45#define BUG_ON(condition) do { if (condition) ; } while(0)
46#endif
47
48#ifndef HAVE_ARCH_WARN_ON
49#define WARN_ON(condition) do { if (condition) ; } while(0)
50#endif
51#endif
52
Linus Torvalds1da177e2005-04-16 15:20:36 -070053#endif