• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef __ASM_CRISv32_ARCH_BUG_H
2 #define __ASM_CRISv32_ARCH_BUG_H
3 
4 #include <linux/stringify.h>
5 
6 #ifdef CONFIG_BUG
7 #ifdef CONFIG_DEBUG_BUGVERBOSE
8 /*
9  * The penalty for the in-band code path will be the size of break 14.
10  * All other stuff is done out-of-band with exception handlers.
11  */
12 #define BUG()								\
13 do {									\
14 	__asm__ __volatile__ ("0: break 14\n\t"				\
15 			      ".section .fixup,\"ax\"\n"		\
16 			      "1:\n\t"					\
17 			      "move.d %0, $r10\n\t"			\
18 			      "move.d %1, $r11\n\t"			\
19 			      "jump do_BUG\n\t"				\
20 			      "nop\n\t"					\
21 			      ".previous\n\t"				\
22 			      ".section __ex_table,\"a\"\n\t"		\
23 			      ".dword 0b, 1b\n\t"			\
24 			      ".previous\n\t"				\
25 			      : : "ri" (__FILE__), "i" (__LINE__));	\
26 	unreachable();				\
27 } while (0)
28 #else
29 #define BUG() 					\
30 do {						\
31 	__asm__ __volatile__ ("break 14\n\t");	\
32 	unreachable();				\
33 } while (0)
34 #endif
35 
36 #define HAVE_ARCH_BUG
37 #endif
38 
39 #include <asm-generic/bug.h>
40 #endif
41