On Thu, Nov 05, 2015 at 06:15:49PM +0000, Peter Maydell wrote: > 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.
Reviewed-by: Edgar E. Iglesias <edgar.igles...@xilinx.com> > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --- > 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 >