Message ID | 1286785138-20401-2-git-send-email-teofrastius@gmail.com |
---|---|
State | New |
Headers | show |
On 11 October 2010 09:18, Johan Bengtsson <teofrastius@gmail.com> 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 <teofrastius@gmail.com> 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 <peter.maydell@linaro.org> > --- > 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 > > >
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);
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 <teofrastius@gmail.com> --- target-arm/translate.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)