MIPS: kernel: mips-r2-to-r6-emul: Add R2 emulator for MIPS R6
MIPS R6 removed quite a few R2 instructions. However, there is plenty of <R6 userland code so we add an in-kernel emulator so we can still be able to execute all R2 userland out there. The emulator comes with a handy debugfs under /mips/ directory (r2-emul-stats) to provide some basic statistics of the instructions that are being emulated. Below are some statistics from booting a minimal buildroot image: Instruction Total BDslot ------------------------------ movs 236969 0 hilo 56686 0 muls 55279 0 divs 10941 0 dsps 0 0 bops 1 0 traps 0 0 fpus 0 0 loads 214981 17 stores 103364 0 llsc 56898 0 dsemul 150418 0 jr 370158 bltzl 43 bgezl 1594 bltzll 0 bgezll 0 bltzal 39 bgezal 39 beql 14503 bnel 138741 blezl 0 bgtzl 3988 Signed-off-by: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
This commit is contained in:

committed by
Markos Chandras

parent
b55b9e2715
commit
b0a668fb20
@@ -48,6 +48,7 @@
|
||||
#include <asm/processor.h>
|
||||
#include <asm/fpu_emulator.h>
|
||||
#include <asm/fpu.h>
|
||||
#include <asm/mips-r2-to-r6-emul.h>
|
||||
|
||||
#include "ieee754.h"
|
||||
|
||||
@@ -68,7 +69,7 @@ static int fpux_emu(struct pt_regs *,
|
||||
#define modeindex(v) ((v) & FPU_CSR_RM)
|
||||
|
||||
/* convert condition code register number to csr bit */
|
||||
static const unsigned int fpucondbit[8] = {
|
||||
const unsigned int fpucondbit[8] = {
|
||||
FPU_CSR_COND0,
|
||||
FPU_CSR_COND1,
|
||||
FPU_CSR_COND2,
|
||||
|
Reference in New Issue
Block a user