[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] m68k: implement movep instruction
From: |
Thomas Huth |
Subject: |
Re: [Qemu-devel] [PATCH] m68k: implement movep instruction |
Date: |
Tue, 6 Feb 2018 11:14:47 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 |
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 <address@hidden>
> Signed-off-by: Mihail Abakumov <address@hidden>
> ---
[...]
> @@ -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