File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/bug.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       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.long 1b - 2b, %c0 - 2b\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:     unreachable();                        \
      26: } while (0)
      27: 
      28: #else
      29: #define BUG()                            \
      30: do {                                \
      31:     asm volatile("ud2");                    \
      32:     unreachable();                        \
      33: } while (0)
      34: #endif
      35: 
      36: #endif /* !CONFIG_BUG */
      37: 
      38: #include <asm-generic/bug.h>
      39: 
      40: #endif /* _ASM_X86_BUG_H */
      41: