summaryrefslogtreecommitdiff
path: root/arch/mips/include/asm/bug.h
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-12-12 11:59:39 +0100
committerIngo Molnar <mingo@elte.hu>2008-12-12 11:59:39 +0100
commitfd10902797fc9d6abaf55d9c2e3c6698c90b10c7 (patch)
tree0bc15b8b967e6f0973387e7c81f5b0dc9ce44e75 /arch/mips/include/asm/bug.h
parent5b3eec0c80038c8739ccd465b897a35c0dff1cc4 (diff)
parent8b1fae4e4200388b64dd88065639413cb3f1051c (diff)
Merge commit 'v2.6.28-rc8' into x86/irq
Diffstat (limited to 'arch/mips/include/asm/bug.h')
-rw-r--r--arch/mips/include/asm/bug.h29
1 files changed, 20 insertions, 9 deletions
diff --git a/arch/mips/include/asm/bug.h b/arch/mips/include/asm/bug.h
index 7eb63de808bc..08ea46863fe5 100644
--- a/arch/mips/include/asm/bug.h
+++ b/arch/mips/include/asm/bug.h
@@ -7,20 +7,31 @@
#include <asm/break.h>
-#define BUG() \
-do { \
- __asm__ __volatile__("break %0" : : "i" (BRK_BUG)); \
-} while (0)
+static inline void __noreturn BUG(void)
+{
+ __asm__ __volatile__("break %0" : : "i" (BRK_BUG));
+ /* Fool GCC into thinking the function doesn't return. */
+ while (1)
+ ;
+}
#define HAVE_ARCH_BUG
#if (_MIPS_ISA > _MIPS_ISA_MIPS1)
-#define BUG_ON(condition) \
-do { \
- __asm__ __volatile__("tne $0, %0, %1" \
- : : "r" (condition), "i" (BRK_BUG)); \
-} while (0)
+static inline void __BUG_ON(unsigned long condition)
+{
+ if (__builtin_constant_p(condition)) {
+ if (condition)
+ BUG();
+ else
+ return;
+ }
+ __asm__ __volatile__("tne $0, %0, %1"
+ : : "r" (condition), "i" (BRK_BUG));
+}
+
+#define BUG_ON(C) __BUG_ON((unsigned long)(C))
#define HAVE_ARCH_BUG_ON