From fa7a6a5d91a5a411ddfa3883a42b82eecdaaddef Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 21 Nov 2019 16:17:32 -0500 Subject: [PATCH] target/arm: Do not reject rt == rt2 for strexd There was too much cut and paste between ldrexd and strexd, as ldrexd does prohibit two output registers the same. Fixes: af288228995 Backports commit 655b02646dc175dc10666459b0a1e4346fc8d46a from qemu --- qemu/target/arm/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/target/arm/translate.c b/qemu/target/arm/translate.c index cbbbcecd..07017a59 100644 --- a/qemu/target/arm/translate.c +++ b/qemu/target/arm/translate.c @@ -9213,7 +9213,7 @@ static bool op_strex(DisasContext *s, arg_STREX *a, MemOp mop, bool rel) || (s->thumb && (a->rd == 13 || a->rt == 13)) || (mop == MO_64 && (a->rt2 == 15 - || a->rd == a->rt2 || a->rt == a->rt2 + || a->rd == a->rt2 || (s->thumb && a->rt2 == 13)))) { unallocated_encoding(s); return true;