~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/s390/include/asm/bug.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 */