alpha: fix the BUG() macro
The commit "alpha: teach the compiler that BUG doesn't return"
(ed6b9b97f4
) 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>
This commit is contained in:
parent
ee0c468bb1
commit
945048ca36
|
@ -8,17 +8,12 @@
|
||||||
|
|
||||||
/* ??? Would be nice to use .gprel32 here, but we can't be sure that the
|
/* ??? Would be nice to use .gprel32 here, but we can't be sure that the
|
||||||
function loaded the GP, so this could fail in modules. */
|
function loaded the GP, so this could fail in modules. */
|
||||||
static inline void ATTRIB_NORET __BUG(const char *file, int line)
|
#define BUG() { \
|
||||||
{
|
__asm__ __volatile__( \
|
||||||
__asm__ __volatile__(
|
"call_pal %0 # bugchk\n\t" \
|
||||||
"call_pal %0 # bugchk\n\t"
|
".long %1\n\t.8byte %2" \
|
||||||
".long %1\n\t.8byte %2"
|
: : "i"(PAL_bugchk), "i"(__LINE__), "i"(__FILE__)); \
|
||||||
: : "i" (PAL_bugchk), "i"(line), "i"(file));
|
for ( ; ; ); }
|
||||||
for ( ; ; )
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define BUG() __BUG(__FILE__, __LINE__)
|
|
||||||
|
|
||||||
#define HAVE_ARCH_BUG
|
#define HAVE_ARCH_BUG
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue