Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux-2.6] / include / asm-x86 / bug.h
1 #ifndef _ASM_X86_BUG_H
2 #define _ASM_X86_BUG_H
3
4 #ifdef CONFIG_BUG
5 #define HAVE_ARCH_BUG
6
7 #ifdef CONFIG_DEBUG_BUGVERBOSE
8
9 #ifdef CONFIG_X86_32
10 # define __BUG_C0       "2:\t.long 1b, %c0\n"
11 #else
12 # define __BUG_C0       "2:\t.quad 1b, %c0\n"
13 #endif
14
15 #define BUG()                                                           \
16         do {                                                            \
17                 asm volatile("1:\tud2\n"                                \
18                              ".pushsection __bug_table,\"a\"\n"         \
19                              __BUG_C0                                   \
20                              "\t.word %c1, 0\n"                         \
21                              "\t.org 2b+%c2\n"                          \
22                              ".popsection"                              \
23                              : : "i" (__FILE__), "i" (__LINE__),        \
24                              "i" (sizeof(struct bug_entry)));           \
25                 for(;;) ;                                               \
26         } while(0)
27
28 #else
29 #define BUG()                                                           \
30         do {                                                            \
31                 asm volatile("ud2");                                    \
32                 for(;;) ;                                               \
33         } while(0)
34 #endif
35
36 void out_of_line_bug(void);
37 #else /* CONFIG_BUG */
38 static inline void out_of_line_bug(void) { }
39 #endif /* !CONFIG_BUG */
40
41 #include <asm-generic/bug.h>
42 #endif