Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
[linux-2.6] / include / asm-sh / bug.h
1 #ifndef __ASM_SH_BUG_H
2 #define __ASM_SH_BUG_H
3
4 #ifdef CONFIG_BUG
5
6 struct bug_frame {
7         unsigned short  opcode;
8         unsigned short  line;
9         const char      *file;
10         const char      *func;
11 };
12
13 struct pt_regs;
14
15 extern void handle_BUG(struct pt_regs *);
16
17 #define TRAPA_BUG_OPCODE        0xc33e  /* trapa #0x3e */
18
19 #ifdef CONFIG_DEBUG_BUGVERBOSE
20
21 #define BUG()                                           \
22 do {                                                    \
23         __asm__ __volatile__ (                          \
24                 ".align 2\n\t"                          \
25                 ".short %O0\n\t"                        \
26                 ".short %O1\n\t"                        \
27                 ".long  %O2\n\t"                        \
28                 ".long  %O3\n\t"                        \
29                 :                                       \
30                 : "n" (TRAPA_BUG_OPCODE),               \
31                   "i" (__LINE__), "X" (__FILE__),       \
32                   "X" (__FUNCTION__));                  \
33 } while (0)
34
35 #else
36
37 #define BUG()                                   \
38 do {                                            \
39         __asm__ __volatile__ (                  \
40                 ".align 2\n\t"                  \
41                 ".short %O0\n\t"                \
42                 :                               \
43                 : "n" (TRAPA_BUG_OPCODE));      \
44 } while (0)
45
46 #endif /* CONFIG_DEBUG_BUGVERBOSE */
47
48 #define HAVE_ARCH_BUG
49
50 #endif /* CONFIG_BUG */
51
52 #include <asm-generic/bug.h>
53
54 #endif /* __ASM_SH_BUG_H */