On 06.02.2018 10:56, Pavel Dovgalyuk wrote: > This patch implements movep instruction. It moves data between a data register > and alternate bytes within the address space starting at the location > specified and incrementing by two. > > It was designed for the original 68000 and used in firmwares for > interfacing the 8-bit peripherals through the 16-bit data bus. > Without this patch opcode for this instruction is recognized as some bitop. > > Signed-off-by: Pavel Dovgalyuk <[email protected]> > Signed-off-by: Mihail Abakumov <[email protected]> > --- [...] > @@ -5579,9 +5628,13 @@ void register_m68k_insns (CPUM68KState *env) > INSN(chk2, 00c0, f9c0, CHK2); > INSN(bitrev, 00c0, fff8, CF_ISA_APLUSC); > BASE(bitop_reg, 0100, f1c0); > + BASE(movep, 0108, f1f8); > BASE(bitop_reg, 0140, f1c0); > + BASE(movep, 0148, f1f8); > BASE(bitop_reg, 0180, f1c0); > + BASE(movep, 0188, f1f8); > BASE(bitop_reg, 01c0, f1c0); > + BASE(movep, 01c8, f1f8); > INSN(arith_im, 0280, fff8, CF_ISA_A); > INSN(arith_im, 0200, ff00, M68000); > INSN(undef, 02c0, ffc0, M68000);
Hi, movep is only available on 68000 - 68040. The function is illegal on 68060 and Coldfire. So I think you should introduce a M68K_FEATURE_MOVEP for this and then register the function here with INSN(movep ... , MOVEP) instead of using BASE(). Thomas
