Skip to contentSkip to conversation

s390: __builtin_trap() and gcc version.

PATCH New Martin Schwidefsky 1 participant 1 message Jul 4, 2006

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 s390: __builtin_trap() and gcc version.

From: Heiko Carstens <[email protected]>

[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.

---

 include/asm-s390/bug.h |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletion(-)
include/asm-s390/bug.h +10 -1
diff -urpN linux-2.6/include/asm-s390/bug.h linux-2.6-patched/include/asm-s390/bug.h
@@ -5,9 +5,18 @@
 
 #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__); \
-	__builtin_trap(); \
+	__do_illegal_op(); \
 } while (0)
 
 #define HAVE_ARCH_BUG