From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nrsnc-00031k-J3 for qemu-devel@nongnu.org; Wed, 17 Mar 2010 08:56:36 -0400 Received: from [199.232.76.173] (port=53361 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nrsnb-00031C-VO for qemu-devel@nongnu.org; Wed, 17 Mar 2010 08:56:36 -0400 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Nrsnb-0008K2-2V for qemu-devel@nongnu.org; Wed, 17 Mar 2010 08:56:35 -0400 Received: from ey-out-1920.google.com ([74.125.78.145]:20148) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Nrsna-0008Jn-KN for qemu-devel@nongnu.org; Wed, 17 Mar 2010 08:56:34 -0400 Received: by ey-out-1920.google.com with SMTP id 4so37942eyg.14 for ; Wed, 17 Mar 2010 05:56:32 -0700 (PDT) From: Johan Bengtsson Date: Wed, 17 Mar 2010 13:56:07 +0100 Message-Id: <1268830567-3422-1-git-send-email-teofrastius@gmail.com> Subject: [Qemu-devel] [PATCH 001/399] target-arm: Fix handling of AL condition in IT instruction List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Johan Bengtsson Do not try to insert a conditional jump over next instruction when the condition code is AL as this will trigger an internal error. Signed-off-by: Johan Bengtsson --- target-arm/translate.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/target-arm/translate.c b/target-arm/translate.c index 786c329..554583d 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -8328,9 +8328,11 @@ static void disas_thumb_insn(CPUState *env, DisasContext *s) if (s->condexec_mask) { cond = s->condexec_cond; - s->condlabel = gen_new_label(); - gen_test_cc(cond ^ 1, s->condlabel); - s->condjmp = 1; + if (cond != 0x0e) { /* Skip conditional when condition is AL. */ + s->condlabel = gen_new_label(); + gen_test_cc(cond ^ 1, s->condlabel); + s->condjmp = 1; + } } insn = lduw_code(s->pc); -- 1.6.3.3