[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/4] target-arm: Fix mixup in decoding of satura
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH 2/4] target-arm: Fix mixup in decoding of saturating add and sub |
Date: |
Wed, 13 Oct 2010 17:00:14 +0100 |
On 11 October 2010 09:18, Johan Bengtsson <address@hidden> wrote:
> The thumb2 decoder contained a mixup between the bit controlling
> doubling and the bit controlling if the operation was an add or a sub.
>
> Signed-off-by: Johan Bengtsson <address@hidden>
I've confirmed against the ARM ARM that this patch matches
the T1 encodings of QADD, QDADD, QSUB, QDSUB, and
have tested that once the patch is applied qemu gives identical
results to the hardware for execution of these instructions.
Acked-by: Peter Maydell <address@hidden>
> ---
> target-arm/translate.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/target-arm/translate.c b/target-arm/translate.c
> index f39efc5..b530a53 100644
> --- a/target-arm/translate.c
> +++ b/target-arm/translate.c
> @@ -7713,9 +7713,9 @@ static int disas_thumb2_insn(CPUState *env,
> DisasContext *s, uint16_t insn_hw1)
> /* Saturating add/subtract. */
> tmp = load_reg(s, rn);
> tmp2 = load_reg(s, rm);
> - if (op & 2)
> - gen_helper_double_saturate(tmp, tmp);
> if (op & 1)
> + gen_helper_double_saturate(tmp, tmp);
> + if (op & 2)
> gen_helper_sub_saturate(tmp, tmp2, tmp);
> else
> gen_helper_add_saturate(tmp, tmp, tmp2);
> --
> 1.7.0.4
>
>
>