Commit 945048ca authored by Ivan Kokshaysky's avatar Ivan Kokshaysky Committed by Linus Torvalds
Browse files

alpha: fix the BUG() macro



The commit "alpha: teach the compiler that BUG doesn't return"
(ed6b9b97) 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: default avatarIvan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent ee0c468b
Loading
Loading
Loading
Loading
+6 −11
Original line number Diff line number Diff line
@@ -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