diff options
author | Ivan Kokshaysky <ink@jurassic.park.msu.ru> | 2009-01-29 17:25:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-29 21:04:44 -0500 |
commit | 945048ca36173315afa2f0c53bed21ba01a588c1 (patch) | |
tree | 075e21bf5258f6fa9894918deef4e6ca20171b29 /arch | |
parent | ee0c468bb151aad23281660152d2894f1e214238 (diff) |
alpha: fix the BUG() macro
The commit "alpha: teach the compiler that BUG doesn't return"
(ed6b9b97f42c091630335bfb71a2931e6f86388b) moved the asm code into inline
function which takes __FILE__ and __LINE__ as arguments. This violates
asm constrains there ("i" - an immediate operand with constant value), so
that compile may result in warning or error, depending on compiler
version.
Just adding an infinite loop to the BUG() is sufficient.
Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/alpha/include/asm/bug.h | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/arch/alpha/include/asm/bug.h b/arch/alpha/include/asm/bug.h index 695a5ee4b5d3..7b85b7c93709 100644 --- a/arch/alpha/include/asm/bug.h +++ b/arch/alpha/include/asm/bug.h | |||
@@ -8,17 +8,12 @@ | |||
8 | 8 | ||
9 | /* ??? Would be nice to use .gprel32 here, but we can't be sure that the | 9 | /* ??? Would be nice to use .gprel32 here, but we can't be sure that the |
10 | function loaded the GP, so this could fail in modules. */ | 10 | function loaded the GP, so this could fail in modules. */ |
11 | static inline void ATTRIB_NORET __BUG(const char *file, int line) | 11 | #define BUG() { \ |
12 | { | 12 | __asm__ __volatile__( \ |
13 | __asm__ __volatile__( | 13 | "call_pal %0 # bugchk\n\t" \ |
14 | "call_pal %0 # bugchk\n\t" | 14 | ".long %1\n\t.8byte %2" \ |
15 | ".long %1\n\t.8byte %2" | 15 | : : "i"(PAL_bugchk), "i"(__LINE__), "i"(__FILE__)); \ |
16 | : : "i" (PAL_bugchk), "i"(line), "i"(file)); | 16 | for ( ; ; ); } |
17 | for ( ; ; ) | ||
18 | ; | ||
19 | } | ||
20 | |||
21 | #define BUG() __BUG(__FILE__, __LINE__) | ||
22 | 17 | ||
23 | #define HAVE_ARCH_BUG | 18 | #define HAVE_ARCH_BUG |
24 | #endif | 19 | #endif |