Răsfoiți Sursa

[S390] __builtin_trap() and gcc version.

__builtin_trap() has the archictecture defined backend in gcc since gcc 3.3.
To make sure the kernel builds with gcc 3.2 as well, use the old style BUG()
statement if compiled with older gcc versions.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Heiko Carstens 19 ani în urmă
părinte
comite
f4a10b211d
1 a modificat fișierele cu 10 adăugiri și 1 ștergeri
  1. 10 1
      include/asm-s390/bug.h

+ 10 - 1
include/asm-s390/bug.h

@@ -5,9 +5,18 @@
 
 
 #ifdef CONFIG_BUG
 #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 { \
 #define BUG() do { \
 	printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
 	printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
-	__builtin_trap(); \
+	__do_illegal_op(); \
 } while (0)
 } while (0)
 
 
 #define HAVE_ARCH_BUG
 #define HAVE_ARCH_BUG