linux/arch/s390/include/asm/bug.h
<<
>>
Prefs
   1#ifndef _ASM_S390_BUG_H
   2#define _ASM_S390_BUG_H
   3
   4#include <linux/kernel.h>
   5
   6#ifdef CONFIG_BUG
   7
   8#ifdef CONFIG_DEBUG_BUGVERBOSE
   9
  10#define __EMIT_BUG(x) do {                                      \
  11        asm volatile(                                           \
  12                "0:     j       0b+2\n"                         \
  13                "1:\n"                                          \
  14                ".section .rodata.str,\"aMS\",@progbits,1\n"    \
  15                "2:     .asciz  \""__FILE__"\"\n"               \
  16                ".previous\n"                                   \
  17                ".section __bug_table,\"a\"\n"                  \
  18                "3:     .long   1b-3b,2b-3b\n"                  \
  19                "       .short  %0,%1\n"                        \
  20                "       .org    3b+%2\n"                        \
  21                ".previous\n"                                   \
  22                : : "i" (__LINE__),                             \
  23                    "i" (x),                                    \
  24                    "i" (sizeof(struct bug_entry)));            \
  25} while (0)
  26
  27#else /* CONFIG_DEBUG_BUGVERBOSE */
  28
  29#define __EMIT_BUG(x) do {                              \
  30        asm volatile(                                   \
  31                "0:     j       0b+2\n"                 \
  32                "1:\n"                                  \
  33                ".section __bug_table,\"a\"\n"          \
  34                "2:     .long   1b-2b\n"                \
  35                "       .short  %0\n"                   \
  36                "       .org    2b+%1\n"                \
  37                ".previous\n"                           \
  38                : : "i" (x),                            \
  39                    "i" (sizeof(struct bug_entry)));    \
  40} while (0)
  41
  42#endif /* CONFIG_DEBUG_BUGVERBOSE */
  43
  44#define BUG() do {                                      \
  45        __EMIT_BUG(0);                                  \
  46        unreachable();                                  \
  47} while (0)
  48
  49#define __WARN_TAINT(taint) do {                        \
  50        __EMIT_BUG(BUGFLAG_TAINT(taint));               \
  51} while (0)
  52
  53#define WARN_ON(x) ({                                   \
  54        int __ret_warn_on = !!(x);                      \
  55        if (__builtin_constant_p(__ret_warn_on)) {      \
  56                if (__ret_warn_on)                      \
  57                        __WARN();                       \
  58        } else {                                        \
  59                if (unlikely(__ret_warn_on))            \
  60                        __WARN();                       \
  61        }                                               \
  62        unlikely(__ret_warn_on);                        \
  63})
  64
  65#define HAVE_ARCH_BUG
  66#define HAVE_ARCH_WARN_ON
  67#endif /* CONFIG_BUG */
  68
  69#include <asm-generic/bug.h>
  70
  71#endif /* _ASM_S390_BUG_H */
  72