linux/arch/x86/include/asm/bug.h
<<
>>
Prefs
   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()                                                   \
  16do {                                                            \
  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()                                                   \
  30do {                                                            \
  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