home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / s390 / include / asm / bug.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.4 KB  |  71 lines

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