]> err.no Git - linux-2.6/blobdiff - include/asm-s390/bug.h
[PATCH] Generic BUG for x86-64
[linux-2.6] / include / asm-s390 / bug.h
index 2b8d6d4dffcfdc6a696cd41877a94ba0af262dca..87689836394442804ce094da6358dd898c272081 100644 (file)
@@ -3,12 +3,25 @@
 
 #include <linux/kernel.h>
 
+#ifdef CONFIG_BUG
+
+static inline __attribute__((noreturn)) void __do_illegal_op(void)
+{
+#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
+       __builtin_trap();
+#else
+       asm volatile(".long 0");
+#endif
+}
+
 #define BUG() do { \
-        printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
-        __asm__ __volatile__(".long 0"); \
+       printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
+       __do_illegal_op(); \
 } while (0)
 
 #define HAVE_ARCH_BUG
+#endif
+
 #include <asm-generic/bug.h>
 
 #endif