Home | History | Annotate | Download | only in asm-x86
      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
     43