From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I3wJL-0007Xh-2J for qemu-devel@nongnu.org; Thu, 28 Jun 2007 11:53:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I3wJH-0007X4-9d for qemu-devel@nongnu.org; Thu, 28 Jun 2007 11:53:34 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I3wJH-0007X1-77 for qemu-devel@nongnu.org; Thu, 28 Jun 2007 11:53:31 -0400 Received: from ns.suse.de ([195.135.220.2] helo=mx1.suse.de) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1I3wJG-0005Y7-D8 for qemu-devel@nongnu.org; Thu, 28 Jun 2007 11:53:30 -0400 Received: from Relay2.suse.de (mail2.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id 16058122A9 for ; Thu, 28 Jun 2007 17:53:27 +0200 (CEST) From: Ulrich Hecht Subject: Re: [Qemu-devel] [PATCH] ARM (Thumb) read from R15 Date: Thu, 28 Jun 2007 17:53:27 +0200 References: <200706281631.32640.uli@suse.de> <200706281730.45680.uli@suse.de> In-Reply-To: <200706281730.45680.uli@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Message-Id: <200706281753.27518.uli@suse.de> Content-Transfer-Encoding: quoted-printable Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org On Thursday 28 June 2007 17:30, Ulrich Hecht wrote: > On Thursday 28 June 2007 16:31, Ulrich Hecht wrote: > > QEMU does not set the Thumb bit when reading from R15 in Thumb mode. > > Here's the fix: > > Maybe not; this seems to break some cases ... :( This works in all my cases, although I am not sure if it is correct: Index: target-arm/translate.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /sources/qemu/qemu/target-arm/translate.c,v retrieving revision 1.53 diff -u -r1.53 translate.c --- target-arm/translate.c 11 Jun 2007 18:59:35 -0000 1.53 +++ target-arm/translate.c 28 Jun 2007 15:48:59 -0000 @@ -307,7 +307,7 @@ if (reg =3D=3D 15) { /* normaly, since we updated PC, we need only to add one insn */ if (s->thumb) - val =3D (long)s->pc + 2; + val =3D (long)s->pc + 3; else val =3D (long)s->pc + 4; gen_op_movl_TN_im[t](val); @@ -3062,7 +3062,10 @@ gen_op_movl_T1_im(val); gen_movl_reg_T1(s, 14); } - gen_movl_T0_reg(s, rm); + if (rm =3D=3D 15) + gen_op_movl_T0_im(s->pc + 2); + else + gen_movl_T0_reg(s, rm); gen_bx(s); break; } CU Uli --=20 SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG N=FCrnberg)