MIPS: Fix branch emulation for BLTC and BGEC instructions
Commitsf1b44067c1
("MIPS: Emulate the new MIPS R6 B{L,G}T{Z,}{AL,}C instructions") and commita8ff66f52d
("MIPS: Emulate the new MIPS R6 B{L,G}E{Z,}{AL,}C instructions") added support for emulating various branch compact instructions. However, it missed the case for those which use the old BLEZL and BGTZL opcodes leading to random crashes when the R6 emulator is disabled. We fix this by ensuring that the 'rt' field is not zero which is always true for these branch compact instructions. Fixes:f1b44067c1
("MIPS: Emulate the new MIPS R6 B{L,G}T{Z,}{AL,}C instructions") Fixes:a8ff66f52d
("MIPS: Emulate the new MIPS R6 B{L,G}E{Z,}{AL,}C instructions") Cc: <stable@vger.kernel.org> # 4.0+ Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Cc: linux-mips@linux-mips.org Cc: Markos Chandras <markos.chandras@imgtec.com> Patchwork: https://patchwork.linux-mips.org/patch/10582/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Šī revīzija ir iekļauta:

revīziju iesūtīja
Ralf Baechle

vecāks
761b4493bb
revīzija
e9d92d2233
@@ -551,7 +551,7 @@ static int isBranchInstr(struct pt_regs *regs, struct mm_decoded_insn dec_insn,
|
||||
dec_insn.next_pc_inc;
|
||||
return 1;
|
||||
case blezl_op:
|
||||
if (NO_R6EMU)
|
||||
if (!insn.i_format.rt && NO_R6EMU)
|
||||
break;
|
||||
case blez_op:
|
||||
|
||||
@@ -588,7 +588,7 @@ static int isBranchInstr(struct pt_regs *regs, struct mm_decoded_insn dec_insn,
|
||||
dec_insn.next_pc_inc;
|
||||
return 1;
|
||||
case bgtzl_op:
|
||||
if (NO_R6EMU)
|
||||
if (!insn.i_format.rt && NO_R6EMU)
|
||||
break;
|
||||
case bgtz_op:
|
||||
/*
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user