X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-s390%2Fbug.h;h=87689836394442804ce094da6358dd898c272081;hb=a2f44b27303a5353859d77a3e96a1d3f33f56ab7;hp=a2e7430aafa625b53cc889a998b4ad972f876763;hpb=134734d875a0a48d994ef20b9905209b4b8b6f75;p=linux-2.6.git diff --git a/include/asm-s390/bug.h b/include/asm-s390/bug.h index a2e7430aa..876898363 100644 --- a/include/asm-s390/bug.h +++ b/include/asm-s390/bug.h @@ -4,9 +4,19 @@ #include #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