diff options
Diffstat (limited to 'include/asm-s390/bug.h')
| -rw-r--r-- | include/asm-s390/bug.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/include/asm-s390/bug.h b/include/asm-s390/bug.h index 7ddaa05b98d8..876898363944 100644 --- a/include/asm-s390/bug.h +++ b/include/asm-s390/bug.h | |||
| @@ -5,9 +5,18 @@ | |||
| 5 | 5 | ||
| 6 | #ifdef CONFIG_BUG | 6 | #ifdef CONFIG_BUG |
| 7 | 7 | ||
| 8 | static inline __attribute__((noreturn)) void __do_illegal_op(void) | ||
| 9 | { | ||
| 10 | #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) | ||
| 11 | __builtin_trap(); | ||
| 12 | #else | ||
| 13 | asm volatile(".long 0"); | ||
| 14 | #endif | ||
| 15 | } | ||
| 16 | |||
| 8 | #define BUG() do { \ | 17 | #define BUG() do { \ |
| 9 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ | 18 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ |
| 10 | __builtin_trap(); \ | 19 | __do_illegal_op(); \ |
| 11 | } while (0) | 20 | } while (0) |
| 12 | 21 | ||
| 13 | #define HAVE_ARCH_BUG | 22 | #define HAVE_ARCH_BUG |
