xref: /linux/arch/mips/include/asm/bug.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __ASM_BUG_H
3 #define __ASM_BUG_H
4 
5 #include <linux/compiler.h>
6 #include <asm/sgidefs.h>
7 
8 #ifdef CONFIG_BUG
9 
10 #include <asm/break.h>
11 
BUG(void)12 static inline void __noreturn BUG(void)
13 {
14 	__asm__ __volatile__("break %0" : : "i" (BRK_BUG));
15 	unreachable();
16 }
17 
18 #define HAVE_ARCH_BUG
19 
20 #if (_MIPS_ISA > _MIPS_ISA_MIPS1)
21 
__BUG_ON(unsigned long condition)22 static inline void  __BUG_ON(unsigned long condition)
23 {
24 	if (__builtin_constant_p(condition)) {
25 		if (condition)
26 			BUG();
27 		else
28 			return;
29 	}
30 	__asm__ __volatile__("tne $0, %0, %1"
31 			     : : "r" (condition), "i" (BRK_BUG));
32 }
33 
34 #define BUG_ON(C) __BUG_ON((unsigned long)(C))
35 
36 #define HAVE_ARCH_BUG_ON
37 
38 #endif /* _MIPS_ISA > _MIPS_ISA_MIPS1 */
39 
40 #endif
41 
42 #include <asm-generic/bug.h>
43 
44 #endif /* __ASM_BUG_H */
45