Fix --dc flag
authorAndrew Waterman <waterman@cs.berkeley.edu>
Tue, 13 Oct 2015 16:42:36 +0000 (09:42 -0700)
committerAndrew Waterman <waterman@cs.berkeley.edu>
Tue, 13 Oct 2015 16:42:36 +0000 (09:42 -0700)
Resolves #33.

riscv/mmu.cc

index 6173b433cf0eeefec336f6df11437e20aaaa3360..a8b167544cb64c9847c85f272b083ffa34b2daf7 100644 (file)
@@ -60,7 +60,9 @@ void mmu_t::load_slow_path(reg_t addr, reg_t len, uint8_t* bytes)
   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);
@@ -72,7 +74,9 @@ void mmu_t::store_slow_path(reg_t addr, reg_t len, const uint8_t* bytes)
   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);