Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
bug.h
Go to the documentation of this file.
1 #ifndef __ASM_BUG_H
2 #define __ASM_BUG_H
3 
4 #include <linux/compiler.h>
5 #include <asm/sgidefs.h>
6 
7 #ifdef CONFIG_BUG
8 
9 #include <asm/break.h>
10 
11 static inline void __noreturn BUG(void)
12 {
13  __asm__ __volatile__("break %0" : : "i" (BRK_BUG));
14  unreachable();
15 }
16 
17 #define HAVE_ARCH_BUG
18 
19 #if (_MIPS_ISA > _MIPS_ISA_MIPS1)
20 
21 static inline void __BUG_ON(unsigned long condition)
22 {
23  if (__builtin_constant_p(condition)) {
24  if (condition)
25  BUG();
26  else
27  return;
28  }
29  __asm__ __volatile__("tne $0, %0, %1"
30  : : "r" (condition), "i" (BRK_BUG));
31 }
32 
33 #define BUG_ON(C) __BUG_ON((unsigned long)(C))
34 
35 #define HAVE_ARCH_BUG_ON
36 
37 #endif /* _MIPS_ISA > _MIPS_ISA_MIPS1 */
38 
39 #endif
40 
41 #include <asm-generic/bug.h>
42 
43 #endif /* __ASM_BUG_H */