[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 5/5] target-m68k: increment/decrement with SP
From: |
Thomas Huth |
Subject: |
Re: [Qemu-devel] [PATCH v2 5/5] target-m68k: increment/decrement with SP |
Date: |
Fri, 13 Jan 2017 13:57:08 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 |
On 13.01.2017 13:52, Laurent Vivier wrote:
> On 680x0 family only.
>
> Address Register indirect With postincrement:
>
> When using the stack pointer (A7) with byte size data, the register
> is incremented by two.
>
> Address Register indirect With predecrement:
>
> When using the stack pointer (A7) with byte size data, the register
> is decremented by two.
>
> Signed-off-by: Laurent Vivier <address@hidden>
> ---
> target/m68k/translate.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/target/m68k/translate.c b/target/m68k/translate.c
> index cf5d8dd..727c189 100644
> --- a/target/m68k/translate.c
> +++ b/target/m68k/translate.c
> @@ -725,7 +725,12 @@ static TCGv gen_lea_mode(CPUM68KState *env, DisasContext
> *s,
> }
> reg = get_areg(s, reg0);
> tmp = tcg_temp_new();
> - tcg_gen_subi_i32(tmp, reg, opsize_bytes(opsize));
> + if (reg0 == 7 && opsize == OS_BYTE &&
> + m68k_feature(s->env, M68K_FEATURE_M68000)) {
> + tcg_gen_subi_i32(tmp, reg, 2);
> + } else {
> + tcg_gen_subi_i32(tmp, reg, opsize_bytes(opsize));
> + }
> return tmp;
> case 5: /* Indirect displacement. */
> reg = get_areg(s, reg0);
> @@ -801,7 +806,12 @@ static TCGv gen_ea_mode(CPUM68KState *env, DisasContext
> *s, int mode, int reg0,
> result = gen_ldst(s, opsize, reg, val, what);
> if (what == EA_STORE || !addrp) {
> TCGv tmp = tcg_temp_new();
> - tcg_gen_addi_i32(tmp, reg, opsize_bytes(opsize));
> + if (reg0 == 7 && opsize == OS_BYTE &&
> + m68k_feature(s->env, M68K_FEATURE_M68000)) {
> + tcg_gen_subi_i32(tmp, reg, 2);
> + } else {
> + tcg_gen_addi_i32(tmp, reg, opsize_bytes(opsize));
> + }
> delay_set_areg(s, reg0, tmp, true);
> }
> return result;
>
Reviewed-by: Thomas Huth <address@hidden>
- [Qemu-devel] [PATCH v2 0/5] Fixes for target/m68k, Laurent Vivier, 2017/01/13
- [Qemu-devel] [PATCH v2 2/5] target-m68k: fix gen_flush_flags(), Laurent Vivier, 2017/01/13
- [Qemu-devel] [PATCH v2 4/5] target-m68k: CAS doesn't need aligned access, Laurent Vivier, 2017/01/13
- [Qemu-devel] [PATCH v2 5/5] target-m68k: increment/decrement with SP, Laurent Vivier, 2017/01/13
- [Qemu-devel] [PATCH v2 3/5] target-m68k: manage pre-dec et post-inc in CAS, Laurent Vivier, 2017/01/13