diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2006-07-12 16:39:42 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-07-12 16:39:42 +0200 |
commit | f4a10b211ddb71d6b4e423fd529468691dec5cca (patch) | |
tree | b76a969ac6eb92e91b5d115e66e89cf5c785b962 /include/asm-s390 | |
parent | 7c3dec0679c66ce177726802adbe2f403942fc27 (diff) | |
download | linux-f4a10b211ddb71d6b4e423fd529468691dec5cca.tar.bz2 |
[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>
Diffstat (limited to 'include/asm-s390')
-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 @@ #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 |