Fix problem with unset max_loads in memtest.
authorSteve Reinhardt <stever@eecs.umich.edu>
Sun, 15 Jul 2007 21:32:55 +0000 (14:32 -0700)
committerSteve Reinhardt <stever@eecs.umich.edu>
Sun, 15 Jul 2007 21:32:55 +0000 (14:32 -0700)
Also make default 0, and make that mean run forever.

--HG--
extra : convert_revision : 3e60a52b1c5e334a9ef3d744cf7ee1d851ba4aa9

configs/example/memtest.py
src/cpu/memtest/MemTest.py
src/cpu/memtest/memtest.cc

index e7f39d8bda621f470ba2b6aad2b0dfd75a370ddc..af100c9a9092b098ced61cf9973d26e2620cea17 100644 (file)
@@ -37,7 +37,7 @@ parser.add_option("-a", "--atomic", action="store_true",
                   help="Use atomic (non-timing) mode")
 parser.add_option("-b", "--blocking", action="store_true",
                   help="Use blocking caches")
-parser.add_option("-l", "--maxloads", metavar="N",
+parser.add_option("-l", "--maxloads", metavar="N", default=0,
                   help="Stop after N loads")
 parser.add_option("-m", "--maxtick", type="int", default=m5.MaxTick,
                   metavar="T",
@@ -116,14 +116,18 @@ if options.blocking:
 else:
      proto_l1.mshrs = 8
 
-# build a list of prototypes, one for each cache level (L1 is at end,
-# followed by the tester pseudo-cpu objects)
-prototypes = [ proto_l1,
-               MemTest(atomic=options.atomic, max_loads=options.maxloads,
+# build a list of prototypes, one for each level of treespec, starting
+# at the end (last entry is tester objects)
+prototypes = [ MemTest(atomic=options.atomic, max_loads=options.maxloads,
                        percent_functional=options.functional,
                        percent_uncacheable=options.uncacheable,
                        progress_interval=options.progress) ]
 
+# next comes L1 cache, if any
+if len(treespec) > 1:
+     prototypes.insert(0, proto_l1)
+
+# now add additional cache levels (if any) by scaling L1 params
 while len(prototypes) < len(treespec):
      # clone previous level and update params
      prev = prototypes[0]
index 381519972f4ba0c2606ff61d8e7d6360504bd321..a328f473439971bc7ded19a13fb44a991cf63a42 100644 (file)
@@ -33,7 +33,7 @@ from m5 import build_env
 
 class MemTest(SimObject):
     type = 'MemTest'
-    max_loads = Param.Counter("number of loads to execute")
+    max_loads = Param.Counter(0, "number of loads to execute")
     atomic = Param.Bool(False, "Execute tester in atomic mode? (or timing)\n")
     memory_size = Param.Int(65536, "memory size")
     percent_dest_unaligned = Param.Percent(50,
index 019b4328c5810ab612446eed24a94dc7fc4cb173..db3ca282abe6a1dd3bfbb29d9e4c7fc8c0c652b4 100644 (file)
@@ -232,7 +232,7 @@ MemTest::completeRequest(PacketPtr pkt)
             nextProgressMessage += progressInterval;
         }
 
-        if (numReads >= maxLoads)
+        if (maxLoads != 0 && numReads >= maxLoads)
             exitSimLoop("maximum number of loads reached");
         break;