Skip to content

Commit

Permalink
exec.c: Use correct AddressSpace in watch_mem_read and watch_mem_write
Browse files Browse the repository at this point in the history
In the watchpoint access routines watch_mem_read and watch_mem_write,
find the correct AddressSpace to use from current_cpu and the memory
transaction attributes, rather than always assuming address_space_memory.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
  • Loading branch information
pm215 committed Jan 21, 2016
1 parent 5232e4c commit 79ed041
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions exec.c
Expand Up @@ -2056,17 +2056,19 @@ static MemTxResult watch_mem_read(void *opaque, hwaddr addr, uint64_t *pdata,
{
MemTxResult res;
uint64_t data;
int asidx = cpu_asidx_from_attrs(current_cpu, attrs);
AddressSpace *as = current_cpu->cpu_ases[asidx].as;

check_watchpoint(addr & ~TARGET_PAGE_MASK, size, attrs, BP_MEM_READ);
switch (size) {
case 1:
data = address_space_ldub(&address_space_memory, addr, attrs, &res);
data = address_space_ldub(as, addr, attrs, &res);
break;
case 2:
data = address_space_lduw(&address_space_memory, addr, attrs, &res);
data = address_space_lduw(as, addr, attrs, &res);
break;
case 4:
data = address_space_ldl(&address_space_memory, addr, attrs, &res);
data = address_space_ldl(as, addr, attrs, &res);
break;
default: abort();
}
Expand All @@ -2079,17 +2081,19 @@ static MemTxResult watch_mem_write(void *opaque, hwaddr addr,
MemTxAttrs attrs)
{
MemTxResult res;
int asidx = cpu_asidx_from_attrs(current_cpu, attrs);
AddressSpace *as = current_cpu->cpu_ases[asidx].as;

check_watchpoint(addr & ~TARGET_PAGE_MASK, size, attrs, BP_MEM_WRITE);
switch (size) {
case 1:
address_space_stb(&address_space_memory, addr, val, attrs, &res);
address_space_stb(as, addr, val, attrs, &res);
break;
case 2:
address_space_stw(&address_space_memory, addr, val, attrs, &res);
address_space_stw(as, addr, val, attrs, &res);
break;
case 4:
address_space_stl(&address_space_memory, addr, val, attrs, &res);
address_space_stl(as, addr, val, attrs, &res);
break;
default: abort();
}
Expand Down

0 comments on commit 79ed041

Please sign in to comment.