Commit 624bde34 authored by Peter Zijlstra's avatar Peter Zijlstra
Browse files

loongarch: Use ASM_REACHABLE



annotate_reachable() is unreliable since the compiler is free to place
random code inbetween two consecutive asm() statements.

This removes the last and only annotate_reachable() user.

Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: default avatarJosh Poimboeuf <jpoimboe@kernel.org>
Link: https://lore.kernel.org/r/20241128094312.133437051@infradead.org
parent 2190966f
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@

#include <asm/break.h>
#include <linux/stringify.h>
#include <linux/objtool.h>

#ifndef CONFIG_DEBUG_BUGVERBOSE
#define _BUGVERBOSE_LOCATION(file, line)
@@ -33,25 +34,25 @@

#define ASM_BUG_FLAGS(flags)					\
	__BUG_ENTRY(flags)					\
	break		BRK_BUG
	break		BRK_BUG;

#define ASM_BUG()	ASM_BUG_FLAGS(0)

#define __BUG_FLAGS(flags)					\
	asm_inline volatile (__stringify(ASM_BUG_FLAGS(flags)));
#define __BUG_FLAGS(flags, extra)					\
	asm_inline volatile (__stringify(ASM_BUG_FLAGS(flags))		\
			     extra);

#define __WARN_FLAGS(flags)					\
do {								\
	instrumentation_begin();				\
	__BUG_FLAGS(BUGFLAG_WARNING|(flags));			\
	annotate_reachable();					\
	__BUG_FLAGS(BUGFLAG_WARNING|(flags), ASM_REACHABLE);	\
	instrumentation_end();					\
} while (0)

#define BUG()							\
do {								\
	instrumentation_begin();				\
	__BUG_FLAGS(0);						\
	__BUG_FLAGS(0, "");					\
	unreachable();						\
} while (0)