Commit e8f44c50 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Paul Walmsley
Browse files

riscv: cleanup do_trap_break



If we always compile the get_break_insn_length inline function we can
remove the ifdefs and let dead code elimination take care of the warn
branch that is now unreadable because the report_bug stub always
returns BUG_TRAP_TYPE_BUG.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarAnup Patel <anup@brainfault.org>
Signed-off-by: default avatarPaul Walmsley <paul.walmsley@sifive.com>
parent a6d9e267
Loading
Loading
Loading
Loading
+6 −20
Original line number Diff line number Diff line
@@ -111,7 +111,6 @@ DO_ERROR_INFO(do_trap_ecall_s,
DO_ERROR_INFO(do_trap_ecall_m,
	SIGILL, ILL_ILLTRP, "environment call from M-mode");

#ifdef CONFIG_GENERIC_BUG
static inline unsigned long get_break_insn_length(unsigned long pc)
{
	bug_insn_t insn;
@@ -120,27 +119,14 @@ static inline unsigned long get_break_insn_length(unsigned long pc)
		return 0;
	return (((insn & __INSN_LENGTH_MASK) == __INSN_LENGTH_32) ? 4UL : 2UL);
}
#endif /* CONFIG_GENERIC_BUG */

asmlinkage void do_trap_break(struct pt_regs *regs)
{
	if (user_mode(regs)) {
		force_sig_fault(SIGTRAP, TRAP_BRKPT,
				(void __user *)(regs->sepc));
		return;
	}
#ifdef CONFIG_GENERIC_BUG
	{
		enum bug_trap_type type;

		type = report_bug(regs->sepc, regs);
		if (type == BUG_TRAP_TYPE_WARN) {
	if (user_mode(regs))
		force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->sepc);
	else if (report_bug(regs->sepc, regs) == BUG_TRAP_TYPE_WARN)
		regs->sepc += get_break_insn_length(regs->sepc);
			return;
		}
	}
#endif /* CONFIG_GENERIC_BUG */

	else
		die(regs, "Kernel BUG");
}