reg_t paddr = translate(addr, LOAD);
if (paddr < memsz) {
memcpy(bytes, mem + paddr, len);
- if (!tracer.interested_in_range(paddr, paddr + PGSIZE, LOAD))
+ if (tracer.interested_in_range(paddr, paddr + PGSIZE, LOAD))
+ tracer.trace(paddr, len, LOAD);
+ else
refill_tlb(addr, paddr, LOAD);
} else if (!proc || !proc->sim->mmio_load(addr, len, bytes)) {
throw trap_load_access_fault(addr);
reg_t paddr = translate(addr, STORE);
if (paddr < memsz) {
memcpy(mem + paddr, bytes, len);
- if (!tracer.interested_in_range(paddr, paddr + PGSIZE, STORE))
+ if (tracer.interested_in_range(paddr, paddr + PGSIZE, STORE))
+ tracer.trace(paddr, len, STORE);
+ else
refill_tlb(addr, paddr, STORE);
} else if (!proc || !proc->sim->mmio_store(addr, len, bytes)) {
throw trap_store_access_fault(addr);