From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BrQlg-0006Oe-Ut for qemu-devel@nongnu.org; Sun, 01 Aug 2004 20:33:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BrQlf-0006OS-BT for qemu-devel@nongnu.org; Sun, 01 Aug 2004 20:33:32 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BrQlf-0006OP-8c for qemu-devel@nongnu.org; Sun, 01 Aug 2004 20:33:31 -0400 Received: from [62.241.160.9] (helo=shockwave.systems.pipex.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BrQiH-0007XU-AL for qemu-devel@nongnu.org; Sun, 01 Aug 2004 20:30:01 -0400 Received: from nowt.org (81-178-252-250.dsl.pipex.com [81.178.252.250]) by shockwave.systems.pipex.net (Postfix) with ESMTP id D956E1C000A1 for ; Mon, 2 Aug 2004 01:29:59 +0100 (BST) Received: from wren.home (wren.home [192.168.1.7]) by nowt.org (Postfix) with ESMTP id 64D3AAC92 for ; Mon, 2 Aug 2004 01:29:59 +0100 (BST) From: Paul Brook Date: Mon, 2 Aug 2004 01:29:58 +0100 MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Message-Id: <200408020129.58784.paul@codesourcery.com> Subject: [Qemu-devel] [patch] Fix arm self-modifying code 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 The patch adds the signal handling necessary to make arm self-modifying code work. You'll notice it looks remarkably similar to the sparc routine :) This should fix the "uncaught target signal 11" crash people have been seeing. Paul 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; }