MIPS R6 removed the BNEL instruction so do not try to emulate it if the R2-to-R6 emulator is not present. Signed-off-by: Markos Chandras <markos.chandras@xxxxxxxxxx> --- arch/mips/kernel/branch.c | 4 ++++ arch/mips/math-emu/cp1emu.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/arch/mips/kernel/branch.c b/arch/mips/kernel/branch.c index a21bbda1ea9e..b71eff60543d 100644 --- a/arch/mips/kernel/branch.c +++ b/arch/mips/kernel/branch.c @@ -585,6 +585,10 @@ int __compute_return_epc_for_insn(struct pt_regs *regs, case bne_op: case bnel_op: + if (NO_R6EMU && (insn.i_format.opcode == bnel_op)) { + ret = -SIGILL; + break; + } if (regs->regs[insn.i_format.rs] != regs->regs[insn.i_format.rt]) { epc = epc + 4 + (insn.i_format.simmediate << 2); diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c index c8ab23e96310..05982b631d7c 100644 --- a/arch/mips/math-emu/cp1emu.c +++ b/arch/mips/math-emu/cp1emu.c @@ -537,6 +537,9 @@ static int isBranchInstr(struct pt_regs *regs, struct mm_decoded_insn dec_insn, return 1; case bne_op: case bnel_op: + if (NO_R6EMU && (insn.i_format.opcode == bnel_op)) + break; + if (regs->regs[insn.i_format.rs] != regs->regs[insn.i_format.rt]) *contpc = regs->cp0_epc + -- 2.2.1