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
36void out_of_line_bug(void);
37#else /* CONFIG_BUG */
38static inline void out_of_line_bug(void) { }
39#endif /* !CONFIG_BUG */
40
41#include <asm-generic/bug.h>
42#endif
43