From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Lba9G-0005lE-W2 for qemu-devel@nongnu.org; Mon, 23 Feb 2009 07:43:03 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Lba9E-0005km-Vw for qemu-devel@nongnu.org; Mon, 23 Feb 2009 07:43:01 -0500 Received: from [199.232.76.173] (port=38185 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Lba9E-0005kX-QX for qemu-devel@nongnu.org; Mon, 23 Feb 2009 07:43:00 -0500 Received: from pop-canoe.atl.sa.earthlink.net ([207.69.195.66]:35422) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Lba9E-0008Uq-Gi for qemu-devel@nongnu.org; Mon, 23 Feb 2009 07:43:00 -0500 Message-ID: <49A299CF.3010602@earthlink.net> Date: Mon, 23 Feb 2009 07:42:55 -0500 From: Robert Reif MIME-Version: 1.0 Subject: Re: [Qemu-devel] [5849] Change MMIO callbacks to use offsets, not absolute addresses. References: <49A29403.7080801@earthlink.net> <200902231236.26691.paul@nowt.org> In-Reply-To: <200902231236.26691.paul@nowt.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paul Brook Cc: qemu-devel@nongnu.org Paul Brook wrote: > On Monday 23 February 2009, Robert Reif wrote: > >> Paul Brook wrote: >> >>> Revision: 5849 >>> http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5849 >>> Author: pbrook >>> Date: 2008-12-01 18:59:50 +0000 (Mon, 01 Dec 2008) >>> >>> Log Message: >>> ----------- >>> Change MMIO callbacks to use offsets, not absolute addresses. >>> >>> Signed-off-by: Paul Brook >>> >> This patch breaks sparc illegal access fault handling because the >> address of the fault is no longer available, only the offset. >> > > Really? DEBUG_UNASSIGNED prints the expected values for ARM targets, and the > sparc code looks like it should be using the same value. > > Paul > > in exec.c static uint32_t unassigned_mem_readb(void *opaque, target_phys_addr_t addr) { #ifdef DEBUG_UNASSIGNED printf("Unassigned mem read byte " TARGET_FMT_plx "\n", addr); #endif #if defined(TARGET_SPARC) do_unassigned_access(addr, 0, 0, 0, 1); #endif return 0; } addr is now the offset rather than the physical address and it is passed to do_unassigned_access which then puts the offset into the fault address register.