From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46030) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YOQsQ-0003yR-62 for qemu-devel@nongnu.org; Thu, 19 Feb 2015 08:10:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YOQsM-0001hx-NX for qemu-devel@nongnu.org; Thu, 19 Feb 2015 08:10:46 -0500 Received: from mail-lb0-f173.google.com ([209.85.217.173]:38847) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YOQsM-0001hr-GH for qemu-devel@nongnu.org; Thu, 19 Feb 2015 08:10:42 -0500 Received: by lbiz11 with SMTP id z11so7295396lbi.5 for ; Thu, 19 Feb 2015 05:10:41 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <1424348812-4289-1-git-send-email-ild@inbox.ru> References: <1424348812-4289-1-git-send-email-ild@inbox.ru> From: Peter Maydell Date: Thu, 19 Feb 2015 22:10:21 +0900 Message-ID: Content-Type: text/plain; charset=UTF-8 Subject: Re: [Qemu-devel] [PATCH] target-arm: modifying pc in tcg code for load/store multiple List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: ild ild Cc: QEMU Developers On 19 February 2015 at 21:26, wrote: > From: Ildar Isaev > > pc wasn't modified in tcg code for load/store multiple, > causing translation block to be executed in infinite loop forever > > Signed-off-by: Ildar Isaev It would be helpful if you gave an example of guest code which we mishandle. Do you have a test case? > --- > target-arm/translate.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target-arm/translate.c b/target-arm/translate.c > index 36868ed..622aa03 100644 > --- a/target-arm/translate.c > +++ b/target-arm/translate.c > @@ -8973,7 +8973,7 @@ static void disas_arm_insn(DisasContext *s, unsigned int insn) > tmp = load_cpu_field(spsr); > gen_set_cpsr(tmp, CPSR_ERET_MASK); > tcg_temp_free_i32(tmp); > - s->is_jmp = DISAS_UPDATE; > + gen_lookup_tb(s); > } > } > break; This doesn't look right. What if the load-multiple loaded PC? Calling gen_lookup_tb() will overwrite that. -- PMM