fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / asm-s390 / bug.h
index a2e7430..8768983 100644 (file)
@@ -4,9 +4,19 @@
 #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