]> git.baikalelectronics.ru Git - kernel.git/commit
MIPS: math-emu: Make microMIPS branch delay slot emulation work
authorMaciej W. Rozycki <macro@imgtec.com>
Fri, 22 Jan 2016 05:20:46 +0000 (05:20 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Sun, 24 Jan 2016 00:35:46 +0000 (01:35 +0100)
commited302de76f950990ba22ab76a114d9981019e2f0
tree66645e3de66dd678e42db66113be76c21a0c766a
parentcf4f40c61473f7d7525c84d3b6543534905a18c5
MIPS: math-emu: Make microMIPS branch delay slot emulation work

Complement commit a8dfab5f3f5d ("MIPS: microMIPS: Floating point
support.") which introduced microMIPS FPU emulation, but did not adjust
the encoding of the BREAK instruction used to terminate the branch delay
slot emulation frame.  Consequently the execution of any such frame is
indeterminate and, depending on CPU configuration, will result in random
code execution or an offending program being terminated with SIGILL.

This is because the regular MIPS BREAK instruction is encoded with the 0
major and the 0xd minor opcode, however in the microMIPS instruction set
this major/minor opcode pair denotes an encoding reserved for the DSP
ASE.  Instead the microMIPS BREAK instruction is encoded with the 0
major and the 0x7 minor opcode.

Use the correct BREAK encoding for microMIPS FPU emulation then.

Signed-off-by: Maciej W. Rozycki <macro@imgtec.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/12174/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/asm/fpu_emulator.h
arch/mips/include/asm/mips-r2-to-r6-emul.h
arch/mips/math-emu/dsemul.c