Skip to content

Commit

Permalink
alpha: fix the BUG() macro
Browse files Browse the repository at this point in the history
The commit "alpha: teach the compiler that BUG doesn't return"
(ed6b9b9) 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>
  • Loading branch information
Ivan Kokshaysky authored and Linus Torvalds committed Jan 30, 2009
1 parent ee0c468 commit 945048c
Showing 1 changed file with 6 additions and 11 deletions.
17 changes: 6 additions & 11 deletions arch/alpha/include/asm/bug.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,12 @@

/* ??? 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. */
static inline void ATTRIB_NORET __BUG(const char *file, int line)
{
__asm__ __volatile__(
"call_pal %0 # bugchk\n\t"
".long %1\n\t.8byte %2"
: : "i" (PAL_bugchk), "i"(line), "i"(file));
for ( ; ; )
;
}

#define BUG() __BUG(__FILE__, __LINE__)
#define BUG() { \
__asm__ __volatile__( \
"call_pal %0 # bugchk\n\t" \
".long %1\n\t.8byte %2" \
: : "i"(PAL_bugchk), "i"(__LINE__), "i"(__FILE__)); \
for ( ; ; ); }

#define HAVE_ARCH_BUG
#endif
Expand Down

0 comments on commit 945048c

Please sign in to comment.