changeset 6531ddc70176 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=6531ddc70176
description:
        m5: merge inorder updates

diffstat:

25 files changed, 1627 insertions(+), 1572 deletions(-)
src/arch/alpha/isa/mem.isa                     |    6 
src/arch/arm/isa/formats/mem.isa               |    2 
src/arch/mips/isa/formats/mem.isa              |    8 
src/arch/mips/isa/formats/util.isa             |    3 
src/arch/power/isa/formats/mem.isa             |    2 
src/arch/power/isa/formats/util.isa            |    3 
src/cpu/inorder/resources/cache_unit.cc        |    9 
src/cpu/simple/atomic.cc                       |   15 
src/cpu/simple/base.cc                         |   21 
src/cpu/simple/base.hh                         |   12 
src/cpu/simple/timing.cc                       |   30 
src/cpu/translation.hh                         |   64 +
src/mem/ruby/profiler/AccessTraceForAddress.cc |  135 +--
src/mem/ruby/profiler/AccessTraceForAddress.hh |  108 +-
src/mem/ruby/profiler/AddressProfiler.cc       |  484 ++++++------
src/mem/ruby/profiler/AddressProfiler.hh       |  117 +-
src/mem/ruby/profiler/CacheProfiler.cc         |  163 ++--
src/mem/ruby/profiler/CacheProfiler.hh         |   90 --
src/mem/ruby/profiler/MemCntrlProfiler.cc      |  197 ++--
src/mem/ruby/profiler/MemCntrlProfiler.hh      |  133 +--
src/mem/ruby/profiler/Profiler.cc              |  965 ++++++++++++------------
src/mem/ruby/profiler/Profiler.hh              |  259 +++---
src/mem/ruby/profiler/StoreTrace.cc            |  183 ++--
src/mem/ruby/profiler/StoreTrace.hh            |  112 +-
util/regress                                   |   78 +

diffs (truncated from 4168 to 300 lines):

diff -r d4921c2e136b -r 6531ddc70176 src/arch/alpha/isa/mem.isa
--- a/src/arch/alpha/isa/mem.isa        Sat Mar 27 02:21:22 2010 -0400
+++ b/src/arch/alpha/isa/mem.isa        Sat Mar 27 02:23:00 2010 -0400
@@ -275,7 +275,6 @@
         if (fault == NoFault) {
             fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                               memAccessFlags, NULL);
-            if (traceData) { traceData->setData(Mem); }
         }
 
         if (fault == NoFault) {
@@ -310,7 +309,6 @@
         if (fault == NoFault) {
             fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                               memAccessFlags, &write_result);
-            if (traceData) { traceData->setData(Mem); }
         }
 
         if (fault == NoFault) {
@@ -344,7 +342,6 @@
         if (fault == NoFault) {
             fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                               memAccessFlags, NULL);
-            if (traceData) { traceData->setData(Mem); }
         }
 
         return fault;
@@ -478,9 +475,6 @@
     mem_flags = makeList(mem_flags)
     inst_flags = makeList(inst_flags)
 
-    # add hook to get effective addresses into execution trace output.
-    ea_code += '\nif (traceData) { traceData->setAddr(EA); }\n'
-
     # Some CPU models execute the memory operation as an atomic unit,
     # while others want to separate them into an effective address
     # computation and a memory access operation.  As a result, we need
diff -r d4921c2e136b -r 6531ddc70176 src/arch/arm/isa/formats/mem.isa
--- a/src/arch/arm/isa/formats/mem.isa  Sat Mar 27 02:21:22 2010 -0400
+++ b/src/arch/arm/isa/formats/mem.isa  Sat Mar 27 02:23:00 2010 -0400
@@ -172,7 +172,6 @@
             if (fault == NoFault) {
                 fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                                   memAccessFlags, NULL);
-                if (traceData) { traceData->setData(Mem); }
             }
 
             if (fault == NoFault) {
@@ -204,7 +203,6 @@
             if (fault == NoFault) {
                 fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                                   memAccessFlags, NULL);
-                if (traceData) { traceData->setData(Mem); }
             }
 
             // Need to write back any potential address register update
diff -r d4921c2e136b -r 6531ddc70176 src/arch/mips/isa/formats/mem.isa
--- a/src/arch/mips/isa/formats/mem.isa Sat Mar 27 02:21:22 2010 -0400
+++ b/src/arch/mips/isa/formats/mem.isa Sat Mar 27 02:23:00 2010 -0400
@@ -305,7 +305,6 @@
         if (fault == NoFault) {
             fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                               memAccessFlags, NULL);
-            if (traceData) { traceData->setData(Mem); }
         }
 
         if (fault == NoFault) {
@@ -342,7 +341,6 @@
         if (fault == NoFault) {
             fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                               memAccessFlags, NULL);
-            if (traceData) { traceData->setData(Mem); }
         }
 
         if (fault == NoFault) {
@@ -377,7 +375,6 @@
         if (fault == NoFault) {
             fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                               memAccessFlags, &write_result);
-            if (traceData) { traceData->setData(Mem); }
         }
 
         if (fault == NoFault) {
@@ -411,7 +408,6 @@
         if (fault == NoFault) {
             fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                               memAccessFlags, NULL);
-            if (traceData) { traceData->setData(Mem); }
         }
 
         return fault;
@@ -435,8 +431,6 @@
 
         if (fault == NoFault) {
             %(op_wb)s;
-
-            if (traceData) { traceData->setData(getMemData(xc, pkt)); }
         }
 
         return fault;
@@ -459,8 +453,6 @@
 
         if (fault == NoFault) {
             %(op_wb)s;
-
-            if (traceData) { traceData->setData(getMemData(xc, pkt)); }
         }
 
         return fault;
diff -r d4921c2e136b -r 6531ddc70176 src/arch/mips/isa/formats/util.isa
--- a/src/arch/mips/isa/formats/util.isa        Sat Mar 27 02:21:22 2010 -0400
+++ b/src/arch/mips/isa/formats/util.isa        Sat Mar 27 02:23:00 2010 -0400
@@ -38,9 +38,6 @@
     mem_flags = makeList(mem_flags)
     inst_flags = makeList(inst_flags)
 
-    # add hook to get effective addresses into execution trace output.
-    ea_code += '\nif (traceData) { traceData->setAddr(EA); }\n'
-
     # Some CPU models execute the memory operation as an atomic unit,
     # while others want to separate them into an effective address
     # computation and a memory access operation.  As a result, we need
diff -r d4921c2e136b -r 6531ddc70176 src/arch/power/isa/formats/mem.isa
--- a/src/arch/power/isa/formats/mem.isa        Sat Mar 27 02:21:22 2010 -0400
+++ b/src/arch/power/isa/formats/mem.isa        Sat Mar 27 02:23:00 2010 -0400
@@ -166,7 +166,6 @@
         if (fault == NoFault) {
             fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                               memAccessFlags, NULL);
-            if (traceData) { traceData->setData(Mem); }
         }
 
         if (fault == NoFault) {
@@ -196,7 +195,6 @@
         if (fault == NoFault) {
             fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
                               memAccessFlags, NULL);
-            if (traceData) { traceData->setData(Mem); }
         }
 
         // Need to write back any potential address register update
diff -r d4921c2e136b -r 6531ddc70176 src/arch/power/isa/formats/util.isa
--- a/src/arch/power/isa/formats/util.isa       Sat Mar 27 02:21:22 2010 -0400
+++ b/src/arch/power/isa/formats/util.isa       Sat Mar 27 02:23:00 2010 -0400
@@ -97,9 +97,6 @@
     mem_flags = makeList(mem_flags)
     inst_flags = makeList(inst_flags)
 
-    # add hook to get effective addresses into execution trace output.
-    ea_code += '\nif (traceData) { traceData->setAddr(EA); }\n'
-
     # Generate InstObjParams for the memory access.
     iop = InstObjParams(name, Name, base_class,
                         {'ea_code': ea_code,
diff -r d4921c2e136b -r 6531ddc70176 src/cpu/inorder/resources/cache_unit.cc
--- a/src/cpu/inorder/resources/cache_unit.cc   Sat Mar 27 02:21:22 2010 -0400
+++ b/src/cpu/inorder/resources/cache_unit.cc   Sat Mar 27 02:23:00 2010 -0400
@@ -443,6 +443,10 @@
     //The size of the data we're trying to read.
     int dataSize = sizeof(T);
 
+    if (inst->traceData) {
+        inst->traceData->setAddr(addr);
+    }
+
     if (inst->split2ndAccess) {     
         dataSize = inst->split2ndSize;
         cache_req->splitAccess = true;        
@@ -541,6 +545,11 @@
     //The size of the data we're trying to read.
     int dataSize = sizeof(T);
 
+    if (inst->traceData) {
+        inst->traceData->setAddr(addr);
+        inst->traceData->setData(data);
+    }
+
     if (inst->split2ndAccess) {     
         dataSize = inst->split2ndSize;
         cache_req->splitAccess = true;        
diff -r d4921c2e136b -r 6531ddc70176 src/cpu/simple/atomic.cc
--- a/src/cpu/simple/atomic.cc  Sat Mar 27 02:21:22 2010 -0400
+++ b/src/cpu/simple/atomic.cc  Sat Mar 27 02:23:00 2010 -0400
@@ -351,10 +351,6 @@
             }
         }
 
-        // This will need a new way to tell if it has a dcache attached.
-        if (req->isUncacheable())
-            recordEvent("Uncached Read");
-
         //If there's a fault, return it
         if (fault != NoFault) {
             if (req->isPrefetch()) {
@@ -451,6 +447,7 @@
 
     if (traceData) {
         traceData->setAddr(addr);
+        traceData->setData(data);
     }
 
     //The block size of our peer.
@@ -522,20 +519,10 @@
             }
         }
 
-        // This will need a new way to tell if it's hooked up to a cache or 
not.
-        if (req->isUncacheable())
-            recordEvent("Uncached Write");
-
         //If there's a fault or we don't need to access a second cache line,
         //stop now.
         if (fault != NoFault || secondAddr <= addr)
         {
-            // If the write needs to have a fault on the access, consider
-            // calling changeStatus() and changing it to "bad addr write"
-            // or something.
-            if (traceData) {
-                traceData->setData(gtoh(data));
-            }
             if (req->isLocked() && fault == NoFault) {
                 assert(locked);
                 locked = false;
diff -r d4921c2e136b -r 6531ddc70176 src/cpu/simple/base.cc
--- a/src/cpu/simple/base.cc    Sat Mar 27 02:21:22 2010 -0400
+++ b/src/cpu/simple/base.cc    Sat Mar 27 02:23:00 2010 -0400
@@ -205,6 +205,27 @@
 {
 }
 
+void
+BaseSimpleCPU::prefetch(Addr addr, unsigned flags)
+{
+    if (traceData) {
+        traceData->setAddr(addr);
+    }
+
+    // need to do this...
+}
+
+void
+BaseSimpleCPU::writeHint(Addr addr, int size, unsigned flags)
+{
+    if (traceData) {
+        traceData->setAddr(addr);
+    }
+
+    // need to do this...
+}
+
+
 Fault
 BaseSimpleCPU::copySrcTranslate(Addr src)
 {
diff -r d4921c2e136b -r 6531ddc70176 src/cpu/simple/base.hh
--- a/src/cpu/simple/base.hh    Sat Mar 27 02:21:22 2010 -0400
+++ b/src/cpu/simple/base.hh    Sat Mar 27 02:23:00 2010 -0400
@@ -232,16 +232,8 @@
     Addr getEA()        { panic("BaseSimpleCPU::getEA() not implemented\n");
         M5_DUMMY_RETURN}
 
-    void prefetch(Addr addr, unsigned flags)
-    {
-        // need to do this...
-    }
-
-    void writeHint(Addr addr, int size, unsigned flags)
-    {
-        // need to do this...
-    }
-
+    void prefetch(Addr addr, unsigned flags);
+    void writeHint(Addr addr, int size, unsigned flags);
 
     Fault copySrcTranslate(Addr src);
 
diff -r d4921c2e136b -r 6531ddc70176 src/cpu/simple/timing.cc
--- a/src/cpu/simple/timing.cc  Sat Mar 27 02:21:22 2010 -0400
+++ b/src/cpu/simple/timing.cc  Sat Mar 27 02:23:00 2010 -0400
@@ -426,16 +426,16 @@
     int data_size = sizeof(T);
     BaseTLB::Mode mode = BaseTLB::Read;
 
+    if (traceData) {
+        traceData->setAddr(addr);
+    }
+
     RequestPtr req  = new Request(asid, addr, data_size,
                                   flags, pc, _cpuId, tid);
 
     Addr split_addr = roundDown(addr + data_size - 1, block_size);
     assert(split_addr <= addr || split_addr - addr < block_size);
 
-    // This will need a new way to tell if it's hooked up to a cache or not.
-    if (req->isUncacheable())
-        recordEvent("Uncached Write");
-
     _status = DTBWaitResponse;
     if (split_addr > addr) {
         RequestPtr req1, req2;
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to