ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / asm-sparc / bug.h
1 #ifndef _SPARC_BUG_H
2 #define _SPARC_BUG_H
3
4 /* Only use the inline asm until a gcc release that can handle __builtin_trap
5  * -rob 2003-06-25
6  *
7  * gcc-3.3.1 and later will be OK -DaveM
8  */
9 #if (__GNUC__ > 3) || \
10     (__GNUC__ == 3 && __GNUC_MINOR__ > 3) || \
11     (__GNUC__ == 3 && __GNUC_MINOR__ == 3 && __GNUC_PATCHLEVEL__ >= 1)
12 #define __bug_trap()            __builtin_trap()
13 #else
14 #define __bug_trap()                                    \
15         __asm__ __volatile__ ("t 0x5\n\t" : : )
16 #endif
17
18 #ifdef CONFIG_DEBUG_BUGVERBOSE
19 extern void do_BUG(const char *file, int line);
20 #define BUG() do {                                      \
21         do_BUG(__FILE__, __LINE__);                     \
22         __bug_trap();                           \
23 } while (0)
24 #else
25 #define BUG()           __bug_trap()
26 #endif
27
28 #define BUG_ON(condition) do { \
29         if (unlikely((condition)!=0)) \
30                 BUG(); \
31 } while(0)
32
33 #define PAGE_BUG(page) do { \
34         BUG(); \
35 } while (0)
36
37 #define WARN_ON(condition) do { \
38         if (unlikely((condition)!=0)) { \
39                 printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \
40                 dump_stack(); \
41         } \
42 } while (0)
43
44 #endif