From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45772) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZuP51-0005oG-En for qemu-devel@nongnu.org; Thu, 05 Nov 2015 13:16:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZuP50-00052j-1K for qemu-devel@nongnu.org; Thu, 05 Nov 2015 13:16:11 -0500 Received: from mnementh.archaic.org.uk ([81.2.115.146]:57814) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZuP4z-00051O-Re for qemu-devel@nongnu.org; Thu, 05 Nov 2015 13:16:09 -0500 From: Peter Maydell Date: Thu, 5 Nov 2015 18:15:49 +0000 Message-Id: <1446747358-18214-8-git-send-email-peter.maydell@linaro.org> In-Reply-To: <1446747358-18214-1-git-send-email-peter.maydell@linaro.org> References: <1446747358-18214-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PATCH 07/16] exec.c: Use cpu_get_phys_page_asidx_debug List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: patches@linaro.org, qemu-arm@nongnu.org, Paolo Bonzini , "Edgar E. Iglesias" , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Andreas=20F=C3=A4rber?= Use cpu_get_phys_page_asidx_debug() when doing virtual-to-physical conversions in debug related code, so that we can obtain the right address space index and thus select the correct AddressSpace, rather than always using cpu->as. Signed-off-by: Peter Maydell --- exec.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/exec.c b/exec.c index 13da780..bc6ab8a 100644 --- a/exec.c +++ b/exec.c @@ -684,9 +684,10 @@ static void breakpoint_invalidate(CPUState *cpu, target_ulong pc) #else static void breakpoint_invalidate(CPUState *cpu, target_ulong pc) { - hwaddr phys = cpu_get_phys_page_debug(cpu, pc); + int asidx; + hwaddr phys = cpu_get_phys_page_asidx_debug(cpu, pc, &asidx); if (phys != -1) { - tb_invalidate_phys_addr(cpu->as, + tb_invalidate_phys_addr(cpu->cpu_ases[asidx].as, phys | (pc & ~TARGET_PAGE_MASK)); } } @@ -3502,8 +3503,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr, target_ulong page; while (len > 0) { + int asidx; + page = addr & TARGET_PAGE_MASK; - phys_addr = cpu_get_phys_page_debug(cpu, page); + phys_addr = cpu_get_phys_page_asidx_debug(cpu, page, &asidx); /* if no physical page mapped, return an error */ if (phys_addr == -1) return -1; @@ -3512,9 +3515,11 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr, l = len; phys_addr += (addr & ~TARGET_PAGE_MASK); if (is_write) { - cpu_physical_memory_write_rom(cpu->as, phys_addr, buf, l); + cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as, + phys_addr, buf, l); } else { - address_space_rw(cpu->as, phys_addr, MEMTXATTRS_UNSPECIFIED, + address_space_rw(cpu->cpu_ases[asidx].as, phys_addr, + MEMTXATTRS_UNSPECIFIED, buf, l, 0); } len -= l; -- 1.9.1