ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / asm-x86_64 / bug.h
1 #ifndef __ASM_X8664_BUG_H
2 #define __ASM_X8664_BUG_H 1
3
4 #include <linux/stringify.h>
5
6 /*
7  * Tell the user there is some problem.  The exception handler decodes 
8  * this frame.
9  */ 
10 struct bug_frame { 
11        unsigned char ud2[2];          
12         /* should use 32bit offset instead, but the assembler doesn't 
13            like it */ 
14         char *filename;   
15         unsigned short line; 
16 } __attribute__((packed)); 
17
18 #define BUG() \
19         asm volatile("ud2 ; .quad %c1 ; .short %c0" :: \
20                      "i"(__LINE__), "i" (__stringify(KBUILD_BASENAME)))
21 #define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0)
22 #define PAGE_BUG(page) BUG()
23 void out_of_line_bug(void);
24
25 #define WARN_ON(condition) do { \
26         if (unlikely((condition)!=0)) { \
27                 printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \
28                 dump_stack(); \
29         } \
30 } while (0)
31
32 #endif