[PATCH RFC v2 50/70] MIPS: kernel: branch: Prevent BNEL emulation for MIPS R6
From: Markos Chandras <hidden>
Date: 2015-01-16 11:06:01
Subsystem:
mips, the rest · Maintainers:
Thomas Bogendoerfer, Linus Torvalds
From: Markos Chandras <hidden>
Date: 2015-01-16 11:06:01
Subsystem:
mips, the rest · Maintainers:
Thomas Bogendoerfer, Linus Torvalds
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 <redacted> --- 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