unicorn/qemu/target-mips
Maciej W. Rozycki 611933d18d
target-mips: Fix the 64-bit case for microMIPS MOVE16 and MOVEP
Fix microMIPS MOVE16 and MOVEP instructions on 64-bit processors by
using register addition operations.

This copies the approach taken with MIPS16 MOVE instructions (I8_MOV32R
and I8_MOVR32 opcodes) and follows the observation that OPC_ADDU expands
to tcg_gen_mov_tl whenever `rt' is 0 and `rs' is not, therefore copying
`rs' to `rd' verbatim. This is not the case with OPC_ADDIU where a
sign-extension from bit #31 is made, unless in the uninteresting case of
`rs' being 0, losing the upper 32 bits of the value copied for any
proper 64-bit values.

This also serves as an optimization as one op is produced in generated
code rather than two (again, unless `rs' is 0, where it doesn't change
anything).

Backports commit 7215d7e7aea85699bf516c3e8d84f6a22584da35 from qemu
2018-02-11 16:17:41 -05:00
..
cpu-qom.h remove slow cpu QOM casts (#815) 2017-05-02 14:56:39 +08:00
cpu.c Fix for MIPS issue. (#733) 2017-01-23 12:39:34 +08:00
cpu.h target-mips: Correct the writes to Status and Cause registers via gdbstub 2018-02-11 16:16:16 -05:00
dsp_helper.c Added MIPS support and projects for all samples. 2017-01-23 01:05:08 +11:00
helper.c target-mips: Use CPU_LOG_INT for logging related to interrupts 2018-02-10 21:12:41 -05:00
helper.h rework code/block tracing 2016-01-22 18:42:27 -08:00
lmi_helper.c import 2015-08-21 15:04:50 +08:00
Makefile.objs import 2015-08-21 15:04:50 +08:00
mips-defs.h import 2015-08-21 15:04:50 +08:00
msa_helper.c Added MIPS support and projects for all samples. 2017-01-23 01:05:08 +11:00
op_helper.c target-mips: Correct the writes to Status and Cause registers via gdbstub 2018-02-11 16:16:16 -05:00
TODO import 2015-08-21 15:04:50 +08:00
translate.c target-mips: Fix the 64-bit case for microMIPS MOVE16 and MOVEP 2018-02-11 16:17:41 -05:00
translate_init.c target-mips: assorted formatting fixes 2018-02-11 16:01:23 -05:00
unicorn.c Merge branch 'master' into msvc2 2017-04-21 01:17:00 +08:00
unicorn.h armeb: rename arm's and mips's *REGS_STORAGE_SIZE to avoid big-endian and little-endian's duplicated definition. 2017-03-15 22:25:35 +08:00