From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Cvl1n-0001DU-H5 for qemu-devel@nongnu.org; Mon, 31 Jan 2005 18:32:19 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Cvl1k-0001BU-3j for qemu-devel@nongnu.org; Mon, 31 Jan 2005 18:32:18 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Cvl1i-00019g-Bd for qemu-devel@nongnu.org; Mon, 31 Jan 2005 18:32:14 -0500 Received: from [65.74.133.9] (helo=mail.codesourcery.com) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1Cvkjn-0006dI-2w for qemu-devel@nongnu.org; Mon, 31 Jan 2005 18:13:43 -0500 From: Paul Brook Subject: Re: [Qemu-devel] Armv5 target Date: Mon, 31 Jan 2005 23:13:37 +0000 References: <200501312019.45282.paul@codesourcery.com> <20050131224414.GA28203@xi.wantstofly.org> In-Reply-To: <20050131224414.GA28203@xi.wantstofly.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200501312313.38869.paul@codesourcery.com> 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 Monday 31 January 2005 22:44, Lennert Buytenhek wrote: > Hi, > > On Mon, Jan 31, 2005 at 08:19:44PM +0000, Paul Brook wrote: > > The attached patch implements the full armv5te user mode instruction set. > > Thanks for persisting on this! > > You posted this patch on 20040802 -- is it still needed? > > Index: cpu-exec.c > =================================================================== > RCS file: /cvsroot/qemu/qemu/cpu-exec.c,v > retrieving revision 1.38 > diff -u -p -r1.38 cpu-exec.c > --- cpu-exec.c 14 Jul 2004 17:20:55 -0000 1.38 > +++ cpu-exec.c 2 Aug 2004 00:24:46 -0000 > @@ -718,6 +719,10 @@ static inline int handle_cpu_signal(unsi > int is_write, sigset_t *old_set, > void *puc) > { > + /* XXX: locking issue */ > + if (is_write && page_unprotect(address, pc, puc)) { > + return 1; > + } > /* XXX: do more */ > return 0; > } Sort of. Self-modifying code (e.g. stack trampolines) are still broken, and the patch above should work. However I just tested it and it doesn't seem to work any more. It seems that the SEGV handler is being passed an address of 0, rather than the actual faulting location. This may be a host kernel/libc bug. Paul