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