-----Original Message-----
From: [email protected] on behalf of [email protected]
Sent: Mon 1/18/2010 2:40 PM
To: Hsu, Lisa
Subject: changeset in m5: Automated merge with ssh://h...@localhost:4444/...
 
You are not allowed to post to this mailing list, and your message has
been automatically rejected.  If you think that your messages are
being rejected in error, contact the mailing list owner at
[email protected].


--- Begin Message ---
changeset a9c220194f14 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=a9c220194f14
description:
        Automated merge with ssh://h...@localhost:4444//repo/m5

diffstat:

12 files changed, 172 insertions(+), 20 deletions(-)
src/cpu/base.hh               |    2 
src/mem/cache/cache_impl.hh   |    9 +-
src/mem/cache/tags/fa_lru.cc  |    4 -
src/mem/cache/tags/fa_lru.hh  |    4 -
src/mem/cache/tags/iic.cc     |    4 -
src/mem/cache/tags/iic.hh     |    4 -
src/mem/cache/tags/lru.cc     |    4 -
src/mem/cache/tags/lru.hh     |    4 -
src/mem/page_table.cc         |   12 +++
src/sim/faults.cc             |    4 -
src/sim/serialize.cc          |    2 
util/checkpoint-aggregator.py |  139 +++++++++++++++++++++++++++++++++++++++++

diffs (truncated from 368 to 300 lines):

diff -r cdf3b0523858 -r a9c220194f14 src/cpu/base.hh
--- a/src/cpu/base.hh   Sun Jan 17 02:22:30 2010 -0800
+++ b/src/cpu/base.hh   Mon Jan 18 14:33:02 2010 -0800
@@ -274,7 +274,7 @@
      */
     virtual BranchPred *getBranchPred() { return NULL; };
 
-    virtual Counter totalInstructions() const { return 0; }
+    virtual Counter totalInstructions() const = 0;
 
     // Function tracing
   private:
diff -r cdf3b0523858 -r a9c220194f14 src/mem/cache/cache_impl.hh
--- a/src/mem/cache/cache_impl.hh       Sun Jan 17 02:22:30 2010 -0800
+++ b/src/mem/cache/cache_impl.hh       Mon Jan 18 14:33:02 2010 -0800
@@ -266,7 +266,8 @@
         return false;
     }
 
-    blk = tags->accessBlock(pkt->getAddr(), lat);
+    int id = pkt->req->hasContextId() ? pkt->req->contextId() : -1;
+    blk = tags->accessBlock(pkt->getAddr(), lat, id);
 
     DPRINTF(Cache, "%s%s %x %s\n", pkt->cmdString(),
             pkt->req->isInstFetch() ? " (ifetch)" : "",
@@ -299,7 +300,8 @@
                 incMissCount(pkt);
                 return false;
             }
-            tags->insertBlock(pkt->getAddr(), blk);
+            int id = pkt->req->hasContextId() ? pkt->req->contextId() : -1;
+            tags->insertBlock(pkt->getAddr(), blk, id);
             blk->status = BlkValid | BlkReadable;
         }
         std::memcpy(blk->data, pkt->getPtr<uint8_t>(), blkSize);
@@ -976,7 +978,8 @@
             tempBlock->tag = tags->extractTag(addr);
             DPRINTF(Cache, "using temp block for %x\n", addr);
         } else {
-            tags->insertBlock(addr, blk);
+            int id = pkt->req->hasContextId() ? pkt->req->contextId() : -1;
+            tags->insertBlock(pkt->getAddr(), blk, id);
         }
     } else {
         // existing block... probably an upgrade
diff -r cdf3b0523858 -r a9c220194f14 src/mem/cache/tags/fa_lru.cc
--- a/src/mem/cache/tags/fa_lru.cc      Sun Jan 17 02:22:30 2010 -0800
+++ b/src/mem/cache/tags/fa_lru.cc      Mon Jan 18 14:33:02 2010 -0800
@@ -154,7 +154,7 @@
 }
 
 FALRUBlk*
-FALRU::accessBlock(Addr addr, int &lat, int *inCache)
+FALRU::accessBlock(Addr addr, int &lat, int context_src, int *inCache)
 {
     accesses++;
     int tmp_in_cache = 0;
@@ -228,7 +228,7 @@
 }
 
 void
-FALRU::insertBlock(Addr addr, FALRU::BlkType *blk)
+FALRU::insertBlock(Addr addr, FALRU::BlkType *blk, int context_src)
 {
 }
 
diff -r cdf3b0523858 -r a9c220194f14 src/mem/cache/tags/fa_lru.hh
--- a/src/mem/cache/tags/fa_lru.hh      Sun Jan 17 02:22:30 2010 -0800
+++ b/src/mem/cache/tags/fa_lru.hh      Mon Jan 18 14:33:02 2010 -0800
@@ -182,7 +182,7 @@
      * @param inCache The FALRUBlk::inCache flags.
      * @return Pointer to the cache block.
      */
-    FALRUBlk* accessBlock(Addr addr, int &lat, int *inCache = 0);
+    FALRUBlk* accessBlock(Addr addr, int &lat, int context_src, int *inCache = 
0);
 
     /**
      * Find the block in the cache, do not update the replacement data.
@@ -200,7 +200,7 @@
      */
     FALRUBlk* findVictim(Addr addr, PacketList & writebacks);
 
-    void insertBlock(Addr addr, BlkType *blk);
+    void insertBlock(Addr addr, BlkType *blk, int context_src);
 
     /**
      * Return the hit latency of this cache.
diff -r cdf3b0523858 -r a9c220194f14 src/mem/cache/tags/iic.cc
--- a/src/mem/cache/tags/iic.cc Sun Jan 17 02:22:30 2010 -0800
+++ b/src/mem/cache/tags/iic.cc Mon Jan 18 14:33:02 2010 -0800
@@ -219,7 +219,7 @@
 
 
 IICTag*
-IIC::accessBlock(Addr addr, int &lat)
+IIC::accessBlock(Addr addr, int &lat, int context_src)
 {
     Addr tag = extractTag(addr);
     unsigned set = hash(addr);
@@ -338,7 +338,7 @@
 }
 
 void
-IIC::insertBlock(Addr addr, BlkType* blk)
+IIC::insertBlock(Addr addr, BlkType* blk, int context_src)
 {
 }
 
diff -r cdf3b0523858 -r a9c220194f14 src/mem/cache/tags/iic.hh
--- a/src/mem/cache/tags/iic.hh Sun Jan 17 02:22:30 2010 -0800
+++ b/src/mem/cache/tags/iic.hh Mon Jan 18 14:33:02 2010 -0800
@@ -422,7 +422,7 @@
      * @param lat The access latency.
      * @return A pointer to the block found, if any.
      */
-    IICTag* accessBlock(Addr addr, int &lat);
+    IICTag* accessBlock(Addr addr, int &lat, int context_src);
 
     /**
      * Find the block, do not update the replacement data.
@@ -440,7 +440,7 @@
      */
     IICTag* findVictim(Addr addr, PacketList &writebacks);
 
-    void insertBlock(Addr addr, BlkType *blk);
+    void insertBlock(Addr addr, BlkType *blk, int context_src);
 
     /**
      * Called at end of simulation to complete average block reference stats.
diff -r cdf3b0523858 -r a9c220194f14 src/mem/cache/tags/lru.cc
--- a/src/mem/cache/tags/lru.cc Sun Jan 17 02:22:30 2010 -0800
+++ b/src/mem/cache/tags/lru.cc Mon Jan 18 14:33:02 2010 -0800
@@ -150,7 +150,7 @@
 }
 
 LRUBlk*
-LRU::accessBlock(Addr addr, int &lat)
+LRU::accessBlock(Addr addr, int &lat, int context_src)
 {
     Addr tag = extractTag(addr);
     unsigned set = extractSet(addr);
@@ -200,7 +200,7 @@
 }
 
 void
-LRU::insertBlock(Addr addr, LRU::BlkType *blk)
+LRU::insertBlock(Addr addr, LRU::BlkType *blk, int context_src)
 {
     if (!blk->isTouched) {
         tagsInUse++;
diff -r cdf3b0523858 -r a9c220194f14 src/mem/cache/tags/lru.hh
--- a/src/mem/cache/tags/lru.hh Sun Jan 17 02:22:30 2010 -0800
+++ b/src/mem/cache/tags/lru.hh Mon Jan 18 14:33:02 2010 -0800
@@ -172,7 +172,7 @@
      * @param lat The access latency.
      * @return Pointer to the cache block if found.
      */
-    LRUBlk* accessBlock(Addr addr, int &lat);
+    LRUBlk* accessBlock(Addr addr, int &lat, int context_src);
 
     /**
      * Finds the given address in the cache, do not update replacement data.
@@ -197,7 +197,7 @@
      * @param addr The address to update.
      * @param blk The block to update.
      */
-     void insertBlock(Addr addr, BlkType *blk);
+     void insertBlock(Addr addr, BlkType *blk, int context_src);
 
     /**
      * Generate the tag from the given address.
diff -r cdf3b0523858 -r a9c220194f14 src/mem/page_table.cc
--- a/src/mem/page_table.cc     Sun Jan 17 02:22:30 2010 -0800
+++ b/src/mem/page_table.cc     Mon Jan 18 14:33:02 2010 -0800
@@ -222,6 +222,16 @@
         entry->unserialize(cp, csprintf("%s.Entry%d", process->name(), i));
         pTable[vaddr] = *entry;
         ++i;
-   }
+    }
+
+    process->M5_pid = pTable[vaddr].asn;
+
+#if THE_ISA == ALPHA_ISA
+    // The IPR_DTB_ASN misc reg must be set in Alpha for the tlb to work 
+    // correctly
+    int id = process->contextIds[0];
+    ThreadContext *tc = process->system->getThreadContext(id);
+    tc->setMiscRegNoEffect(IPR_DTB_ASN, process->M5_pid << 57);
+#endif
 }
 
diff -r cdf3b0523858 -r a9c220194f14 src/sim/faults.cc
--- a/src/sim/faults.cc Sun Jan 17 02:22:30 2010 -0800
+++ b/src/sim/faults.cc Mon Jan 18 14:33:02 2010 -0800
@@ -40,7 +40,7 @@
 #if !FULL_SYSTEM
 void FaultBase::invoke(ThreadContext * tc)
 {
-    fatal("fault (%s) detected @ PC %p", name(), tc->readPC());
+    panic("fault (%s) detected @ PC %p", name(), tc->readPC());
 }
 #else
 void FaultBase::invoke(ThreadContext * tc)
@@ -54,7 +54,7 @@
 
 void UnimpFault::invoke(ThreadContext * tc)
 {
-    fatal("Unimpfault: %s\n", panicStr.c_str());
+    panic("Unimpfault: %s\n", panicStr.c_str());
 }
 
 #if !FULL_SYSTEM
diff -r cdf3b0523858 -r a9c220194f14 src/sim/serialize.cc
--- a/src/sim/serialize.cc      Sun Jan 17 02:22:30 2010 -0800
+++ b/src/sim/serialize.cc      Mon Jan 18 14:33:02 2010 -0800
@@ -422,7 +422,7 @@
     time_t t = time(NULL);
     if (!outstream.is_open())
         fatal("Unable to open file %s for writing\n", cpt_file.c_str());
-    outstream << "// checkpoint generated: " << ctime(&t);
+    outstream << "## checkpoint generated: " << ctime(&t);
 
     globals.serialize(outstream);
     SimObject::serializeAll(outstream);
diff -r cdf3b0523858 -r a9c220194f14 util/checkpoint-aggregator.py
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/util/checkpoint-aggregator.py     Mon Jan 18 14:33:02 2010 -0800
@@ -0,0 +1,139 @@
+#! /usr/bin/env python2.6
+
+from ConfigParser import ConfigParser
+import gzip
+
+import sys, re, optparse, os
+
+class myCP(ConfigParser):
+    def __init__(self):
+        ConfigParser.__init__(self)
+
+    def optionxform(self, optionstr):
+        return optionstr
+
+def aggregate(options, args):
+    merged = myCP()
+    page_ptr = 0
+
+    allfiles = os.listdir(os.getcwd())
+    cpts = []
+    for arg in args:
+        found = False
+        for f in allfiles:
+            if re.compile("cpt." + arg + ".\d+").search(f):
+                found = True
+                cpts.append(f)
+                break
+        if not found:
+            print "missing checkpoint: ", arg
+            sys.exit(1)
+
+    dirname = "-".join([options.prefix, "cpt"])
+    print dirname
+    agg_name = "-".join(args)
+    print agg_name
+    fullpath = os.path.join("..", dirname, "cpt." + agg_name + ".10000")
+    if not os.path.isdir(fullpath):
+        os.system("mkdir -p " + fullpath)
+
+    myfile = open(fullpath + "/system.physmem.physmem", "wb+")
+    merged_mem = gzip.GzipFile(fileobj=myfile, mode="wb")
+
+    max_curtick = 0
+    when = 0
+    for (i, arg) in enumerate(args):
+        config = myCP()
+        config.readfp(open(cpts[i] + "/m5.cpt"))
+
+        for sec in config.sections():
+            if re.compile("cpu").search(sec):
+                newsec = re.sub("cpu", "cpu" + str(i), sec)
+                merged.add_section(newsec)
+
+                items = config.items(sec)
+                for item in items:
+                    if item[0] == "ppn":
+                        if config.getint(sec, "tag") != 0:
+                            merged.set(newsec, item[0], int(item[1]) + 
page_ptr)
+                            continue
+                    elif item[0] == "asn":
+                        tmp = 
re.compile("(.*).Entry(\d+)").search(sec).groups()
+                        if config.has_option(tmp[0], "nlu"):
+                            size = config.getint(tmp[0], "nlu")
+                            if int(tmp[1]) < size:
+                                merged.set(newsec, item[0], i)
+                                continue
+                        else:
+                            merged.set(newsec, item[0], i)
+                            continue
+                    merged.set(newsec, item[0], item[1])
+            elif sec == "system":

--- End Message ---
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to