params: Deprecate old-style constructors; update most SimObject constructors.
authorMiles Kaufmann <milesck@eecs.umich.edu>
Thu, 30 Aug 2007 19:16:59 +0000 (15:16 -0400)
committerMiles Kaufmann <milesck@eecs.umich.edu>
Thu, 30 Aug 2007 19:16:59 +0000 (15:16 -0400)
SimObjects not yet updated:
- Process and subclasses
- BaseCPU and subclasses

The SimObject(const std::string &name) constructor was removed.  Subclasses
that still rely on that behavior must call the parent initializer as
  : SimObject(makeParams(name))

--HG--
extra : convert_revision : d6faddde76e7c3361ebdbd0a7b372a40941c12ed

70 files changed:
src/arch/alpha/tlb.cc
src/arch/alpha/tlb.hh
src/arch/mips/tlb.cc
src/arch/mips/tlb.hh
src/arch/sparc/tlb.cc
src/arch/sparc/tlb.hh
src/cpu/base.cc
src/cpu/exetrace.cc
src/cpu/exetrace.hh
src/cpu/func_unit.cc
src/cpu/func_unit.hh
src/cpu/inteltrace.cc
src/cpu/inteltrace.hh
src/cpu/intr_control.cc
src/cpu/intr_control.hh
src/cpu/legiontrace.cc
src/cpu/legiontrace.hh
src/cpu/memtest/MemTest.py
src/cpu/memtest/memtest.cc
src/cpu/memtest/memtest.hh
src/cpu/o3/fu_pool.cc
src/cpu/o3/fu_pool.hh
src/dev/alpha/tsunami.cc
src/dev/alpha/tsunami.hh
src/dev/disk_image.cc
src/dev/disk_image.hh
src/dev/etherbus.hh
src/dev/etherdump.cc
src/dev/etherdump.hh
src/dev/etherlink.cc
src/dev/etherlink.hh
src/dev/ide_disk.cc
src/dev/ide_disk.hh
src/dev/isa_fake.hh
src/dev/pciconfigall.cc
src/dev/pciconfigall.hh
src/dev/platform.cc
src/dev/platform.hh
src/dev/simconsole.cc
src/dev/simconsole.hh
src/dev/simple_disk.cc
src/dev/simple_disk.hh
src/dev/sparc/t1000.cc
src/dev/sparc/t1000.hh
src/mem/bridge.cc
src/mem/bus.cc
src/mem/bus.hh
src/mem/cache/base_cache.cc
src/mem/cache/base_cache.hh
src/mem/cache/cache.hh
src/mem/cache/cache_builder.cc
src/mem/cache/cache_impl.hh
src/mem/cache/prefetch/base_prefetcher.cc
src/mem/cache/prefetch/base_prefetcher.hh
src/mem/cache/prefetch/ghb_prefetcher.hh
src/mem/cache/prefetch/stride_prefetcher.hh
src/mem/cache/prefetch/tagged_prefetcher.cc
src/mem/cache/prefetch/tagged_prefetcher.hh
src/mem/cache/tags/repl/gen.cc
src/mem/cache/tags/repl/gen.hh
src/mem/cache/tags/repl/repl.hh
src/mem/mem_object.cc
src/mem/mem_object.hh
src/python/swig/sim_object.i
src/sim/insttracer.hh
src/sim/process.cc
src/sim/sim_object.cc
src/sim/sim_object.hh
src/sim/system.cc
src/sim/tlb.hh

index 628d7ad6b2f9e0124dead0603e47ffc9b6063b02..2e974effe3f6afe2b1c1715cc7c990182b7430ff 100644 (file)
@@ -41,8 +41,6 @@
 #include "base/trace.hh"
 #include "config/alpha_tlaser.hh"
 #include "cpu/thread_context.hh"
-#include "params/AlphaDTB.hh"
-#include "params/AlphaITB.hh"
 
 using namespace std;
 using namespace EV5;
@@ -59,8 +57,8 @@ bool uncacheBit40 = false;
 
 #define MODE2MASK(X)                   (1 << (X))
 
-TLB::TLB(const string &name, int s)
-    : SimObject(name), size(s), nlu(0)
+TLB::TLB(const Params *p)
+    : SimObject(p), size(p->size), nlu(0)
 {
     table = new TlbEntry[size];
     memset(table, 0, sizeof(TlbEntry[size]));
@@ -286,8 +284,8 @@ TLB::unserialize(Checkpoint *cp, const string &section)
 //
 //  Alpha ITB
 //
-ITB::ITB(const std::string &name, int size)
-    : TLB(name, size)
+ITB::ITB(const Params *p)
+    : TLB(p)
 {}
 
 
@@ -400,8 +398,8 @@ ITB::translate(RequestPtr &req, ThreadContext *tc)
 //
 //  Alpha DTB
 //
- DTB::DTB(const std::string &name, int size)
-     : TLB(name, size)
+ DTB::DTB(const Params *p)
+     : TLB(p)
 {}
 
 void
@@ -624,11 +622,11 @@ TLB::index(bool advance)
 AlphaISA::ITB *
 AlphaITBParams::create()
 {
-    return new AlphaISA::ITB(name, size);
+    return new AlphaISA::ITB(this);
 }
 
 AlphaISA::DTB *
 AlphaDTBParams::create()
 {
-    return new AlphaISA::DTB(name, size);
+    return new AlphaISA::DTB(this);
 }
index 8df47dbec3180d71effb7fcc2e8abc51bafe1e2b..69a33f32d86fbe4726083fdaf683acc58e49247a 100644 (file)
@@ -41,6 +41,8 @@
 #include "arch/alpha/vtophys.hh"
 #include "base/statistics.hh"
 #include "mem/request.hh"
+#include "params/AlphaDTB.hh"
+#include "params/AlphaITB.hh"
 #include "sim/faults.hh"
 #include "sim/sim_object.hh"
 
@@ -64,7 +66,8 @@ namespace AlphaISA
         TlbEntry *lookup(Addr vpn, uint8_t asn);
 
       public:
-        TLB(const std::string &name, int size);
+        typedef AlphaTLBParams Params;
+        TLB(const Params *p);
         virtual ~TLB();
 
         int getsize() const { return size; }
@@ -113,7 +116,8 @@ namespace AlphaISA
         mutable Stats::Formula accesses;
 
       public:
-        ITB(const std::string &name, int size);
+        typedef AlphaITBParams Params;
+        ITB(const Params *p);
         virtual void regStats();
 
         Fault translate(RequestPtr &req, ThreadContext *tc);
@@ -136,7 +140,8 @@ namespace AlphaISA
         Stats::Formula accesses;
 
       public:
-        DTB(const std::string &name, int size);
+        typedef AlphaDTBParams Params;
+        DTB(const Params *p);
         virtual void regStats();
 
         Fault translate(RequestPtr &req, ThreadContext *tc, bool write);
index 41a26aba1163c6e2025a77063e57f368f53b41d9..b644ae18de716f3bd506be254b8c5abefdce57a5 100644 (file)
@@ -31,8 +31,6 @@
 #include <cstring>
 
 #include "arch/mips/tlb.hh"
-#include "params/MipsDTB.hh"
-#include "params/MipsITB.hh"
 
 namespace MipsISA {
     Fault
@@ -69,11 +67,11 @@ namespace MipsISA {
 MipsISA::ITB *
 MipsITBParams::create()
 {
-    return new MipsISA::ITB(name);
+    return new MipsISA::ITB(this);
 }
 
 MipsISA::DTB *
 MipsDTBParams::create()
 {
-    return new MipsISA::DTB(name);
+    return new MipsISA::DTB(this);
 }
index 682aa76542ad25ce6fa8aada19051cd14287717b..78b4af94d0201e3f55669f4853dd8f3dcc5997f2 100644 (file)
@@ -31,6 +31,8 @@
 #ifndef __ARCH_MIPS_TLB_HH__
 #define __ARCH_MIPS_TLB_HH__
 
+#include "params/MipsDTB.hh"
+#include "params/MipsITB.hh"
 #include "sim/tlb.hh"
 
 namespace MipsISA
@@ -48,7 +50,8 @@ namespace MipsISA
     class TLB : public GenericTLB
     {
       public:
-        TLB(const std::string &name) : GenericTLB(name)
+        typedef MipsTLBParams Params;
+        TLB(const Params *p) : GenericTLB(p)
         {}
 
         Fault translate(RequestPtr req, ThreadContext *tc, bool=false);
@@ -57,14 +60,16 @@ namespace MipsISA
     class ITB : public TLB
     {
       public:
-        ITB(const std::string &name) : TLB(name)
+        typedef MipsITBParams Params;
+        ITB(const Params *p) : TLB(p)
         {}
     };
 
     class DTB : public TLB
     {
       public:
-        DTB(const std::string &name) : TLB(name)
+        typedef MipsDTBParams Params;
+        DTB(const Params *p) : TLB(p)
         {}
     };
 };
index edc9d37a92004a98a92f04c8b008fa82ce4ca88b..093e0356b6076ff9e00c22a0ed269e59e565d8bc 100644 (file)
 #include "cpu/base.hh"
 #include "mem/packet_access.hh"
 #include "mem/request.hh"
-#include "params/SparcDTB.hh"
-#include "params/SparcITB.hh"
 #include "sim/system.hh"
 
 /* @todo remove some of the magic constants.  -- ali
  * */
 namespace SparcISA {
 
-TLB::TLB(const std::string &name, int s)
-    : SimObject(name), size(s), usedEntries(0), lastReplaced(0),
+TLB::TLB(const Params *p)
+    : SimObject(p), size(p->size), usedEntries(0), lastReplaced(0),
       cacheValid(false)
 {
     // To make this work you'll have to change the hypervisor and OS
@@ -1437,11 +1435,11 @@ DTB::unserialize(Checkpoint *cp, const std::string &section)
 SparcISA::ITB *
 SparcITBParams::create()
 {
-    return new SparcISA::ITB(name, size);
+    return new SparcISA::ITB(this);
 }
 
 SparcISA::DTB *
 SparcDTBParams::create()
 {
-    return new SparcISA::DTB(name, size);
+    return new SparcISA::DTB(this);
 }
index d35a6e09644d86e2338479a3c9c78fa4bcad5b2b..b38ee15dc87c27c01ad4dd3e7f8c74256d3d4b55 100644 (file)
@@ -36,6 +36,8 @@
 #include "base/misc.hh"
 #include "config/full_system.hh"
 #include "mem/request.hh"
+#include "params/SparcDTB.hh"
+#include "params/SparcITB.hh"
 #include "sim/faults.hh"
 #include "sim/sim_object.hh"
 
@@ -147,7 +149,8 @@ class TLB : public SimObject
     void writeTagAccess(Addr va, int context);
 
   public:
-    TLB(const std::string &name, int size);
+    typedef SparcTLBParams Params;
+    TLB(const Params *p);
 
     void dumpAll();
 
@@ -163,7 +166,8 @@ class TLB : public SimObject
 class ITB : public TLB
 {
   public:
-    ITB(const std::string &name, int size) : TLB(name, size)
+    typedef SparcITBParams Params;
+    ITB(const Params *p) : TLB(p)
     {
         cacheEntry = NULL;
     }
@@ -182,7 +186,8 @@ class DTB : public TLB
   protected:
     uint64_t sfar;
   public:
-    DTB(const std::string &name, int size) : TLB(name, size)
+    typedef SparcDTBParams Params;
+    DTB(const Params *p) : TLB(p)
     {
         sfar = 0;
         cacheEntry[0] = NULL;
index a54ed93490006bae61a2341a511a6ffc4f59c874..7b31eb7667a0361414ac12b22b089f0931cdb0ff 100644 (file)
@@ -95,12 +95,12 @@ CPUProgressEvent::description()
 
 #if FULL_SYSTEM
 BaseCPU::BaseCPU(Params *p)
-    : MemObject(p->name), clock(p->clock), instCnt(0),
+    : MemObject(makeParams(p->name)), clock(p->clock), instCnt(0),
       params(p), number_of_threads(p->numberOfThreads), system(p->system),
       phase(p->phase)
 #else
 BaseCPU::BaseCPU(Params *p)
-    : MemObject(p->name), clock(p->clock), params(p),
+    : MemObject(makeParams(p->name)), clock(p->clock), params(p),
       number_of_threads(p->numberOfThreads), system(p->system),
       phase(p->phase)
 #endif
index 38c22da9471a5396d921622f0b10de5bca79b6d1..0118dbde1b22b9a0562b354ff591b3668e358b80 100644 (file)
@@ -39,7 +39,6 @@
 #include "cpu/static_inst.hh"
 #include "cpu/thread_context.hh"
 #include "enums/OpClass.hh"
-#include "params/ExeTracer.hh"
 
 using namespace std;
 using namespace TheISA;
@@ -116,5 +115,5 @@ Trace::ExeTracerRecord::dump()
 Trace::ExeTracer *
 ExeTracerParams::create()
 {
-    return new Trace::ExeTracer(name);
+    return new Trace::ExeTracer(this);
 };
index 76907d955a6f712e5e707666f29cd11047a53f8d..84660432b01bf7d413375dee41cc2d874c8481b5 100644 (file)
@@ -36,6 +36,7 @@
 #include "cpu/static_inst.hh"
 #include "sim/host.hh"
 #include "sim/insttracer.hh"
+#include "params/ExeTracer.hh"
 
 class ThreadContext;
 
@@ -57,8 +58,8 @@ class ExeTracerRecord : public InstRecord
 class ExeTracer : public InstTracer
 {
   public:
-
-    ExeTracer(const std::string & name) : InstTracer(name)
+    typedef ExeTracerParams Params;
+    ExeTracer(const Params *params) : InstTracer(params)
     {}
 
     InstRecord *
index d7aeb5b374f993504f90a197af219370882e861d..bb7427da59551124b8c20ae5c5d94d930a2a9b7b 100644 (file)
@@ -32,8 +32,6 @@
 
 #include "base/misc.hh"
 #include "cpu/func_unit.hh"
-#include "params/OpDesc.hh"
-#include "params/FUDesc.hh"
 
 using namespace std;
 
@@ -120,7 +118,7 @@ FuncUnit::issueLatency(OpClass capability)
 OpDesc *
 OpDescParams::create()
 {
-    return new OpDesc(name, opClass, opLat, issueLat);
+    return new OpDesc(this);
 }
 
 //
@@ -129,5 +127,5 @@ OpDescParams::create()
 FUDesc *
 FUDescParams::create()
 {
-    return new FUDesc(name, opList, count);
+    return new FUDesc(this);
 }
index 7801430969ed8547260b78fe0246ef17c4d602df..e8238ba7353074042aedff110fc487e2bbec57d0 100644 (file)
@@ -36,6 +36,8 @@
 #include <vector>
 
 #include "cpu/op_class.hh"
+#include "params/OpDesc.hh"
+#include "params/FUDesc.hh"
 #include "sim/sim_object.hh"
 
 ////////////////////////////////////////////////////////////////////////////
@@ -51,8 +53,9 @@ struct OpDesc : public SimObject
     unsigned    opLat;
     unsigned    issueLat;
 
-    OpDesc(std::string name, OpClass c, unsigned o, unsigned i)
-        : SimObject(name), opClass(c), opLat(o), issueLat(i) {};
+    OpDesc(const OpDescParams *p)
+        : SimObject(p), opClass(p->opClass), opLat(p->opLat),
+          issueLat(p->issueLat) {};
 };
 
 struct FUDesc : public SimObject
@@ -60,12 +63,12 @@ struct FUDesc : public SimObject
     std::vector<OpDesc *> opDescList;
     unsigned         number;
 
-    FUDesc(std::string name, std::vector<OpDesc *> l, unsigned n)
-        : SimObject(name), opDescList(l), number(n) {};
+    FUDesc(const FUDescParams *p)
+        : SimObject(p), opDescList(p->opList), number(p->count) {};
 };
 
-typedef std::vector<OpDesc *>::iterator OPDDiterator;
-typedef std::vector<FUDesc *>::iterator FUDDiterator;
+typedef std::vector<OpDesc *>::const_iterator OPDDiterator;
+typedef std::vector<FUDesc *>::const_iterator FUDDiterator;
 
 
 
index afa51b517a70c6ad7b44c88256919b5d978ee83c..145075dc1669a61a6f9a33b3ab686d81e4e844df 100644 (file)
@@ -36,7 +36,6 @@
 #include "cpu/exetrace.hh"
 #include "cpu/inteltrace.hh"
 #include "cpu/static_inst.hh"
-#include "params/IntelTrace.hh"
 
 using namespace std;
 using namespace TheISA;
@@ -66,5 +65,5 @@ Trace::IntelTraceRecord::dump()
 Trace::IntelTrace *
 IntelTraceParams::create()
 {
-    return new Trace::IntelTrace(name);
+    return new Trace::IntelTrace(this);
 };
index 21afe0fc0752807dc17f46a10d62765bf5195d3f..5d5bcda8ec4618603d1acadd440a536e4edf65c2 100644 (file)
@@ -34,6 +34,7 @@
 
 #include "base/trace.hh"
 #include "cpu/static_inst.hh"
+#include "params/IntelTrace.hh"
 #include "sim/host.hh"
 #include "sim/insttracer.hh"
 
@@ -58,7 +59,7 @@ class IntelTrace : public InstTracer
 {
   public:
 
-    IntelTrace(const std::string & name) : InstTracer(name)
+    IntelTrace(const IntelTraceParams *p) : InstTracer(p)
     {}
 
     IntelTraceRecord *
index e9f27e9eda4d91d6063f35a494a233457c77077e..018ae1886a5848eab73fb0e0c7ca8224aa161b6d 100644 (file)
 #include "cpu/base.hh"
 #include "cpu/thread_context.hh"
 #include "cpu/intr_control.hh"
-#include "params/IntrControl.hh"
 #include "sim/sim_object.hh"
 
 using namespace std;
 
-IntrControl::IntrControl(const string &name, System *s)
-    : SimObject(name), sys(s)
+IntrControl::IntrControl(const Params *p)
+    : SimObject(p), sys(p->sys)
 {}
 
 void
@@ -79,5 +78,5 @@ IntrControl::clear(int cpu_id, int int_num, int index)
 IntrControl *
 IntrControlParams::create()
 {
-    return new IntrControl(name, sys);
+    return new IntrControl(this);
 }
index c6f75abf0cd1f49eca7f2375d9205cac76f9fa61..746859fab3e6ee56cfaa5bc3747c852e44e1d410 100644 (file)
@@ -35,6 +35,7 @@
 #include <vector>
 #include "base/misc.hh"
 #include "cpu/base.hh"
+#include "params/IntrControl.hh"
 #include "sim/sim_object.hh"
 #include "sim/system.hh"
 
@@ -43,7 +44,8 @@ class IntrControl : public SimObject
 {
   public:
     System *sys;
-    IntrControl(const std::string &name, System *s);
+    typedef IntrControlParams Params;
+    IntrControl(const Params *p);
 
     void clear(int int_num, int index = 0);
     void post(int int_num, int index = 0);
index 58181cb88bf8f9ecf33ef5a29b3bf477b0a26b33..d303430256455817c7a3291a160485065382e98b 100644 (file)
@@ -53,7 +53,6 @@
 #include "cpu/legiontrace.hh"
 #include "cpu/static_inst.hh"
 #include "cpu/thread_context.hh"
-#include "params/LegionTrace.hh"
 #include "sim/system.hh"
 
 #if FULL_SYSTEM
@@ -596,5 +595,5 @@ Trace::LegionTraceRecord::dump()
 Trace::LegionTrace *
 LegionTraceParams::create()
 {
-    return new Trace::LegionTrace(name);
+    return new Trace::LegionTrace(this);
 };
index 55c05e7ae85b9872d328438442537d88926dfaac..97193ff1abaa4e5a48373d9361b46878a673fa75 100644 (file)
@@ -34,6 +34,7 @@
 
 #include "base/trace.hh"
 #include "cpu/static_inst.hh"
+#include "params/LegionTrace.hh"
 #include "sim/host.hh"
 #include "sim/insttracer.hh"
 
@@ -56,8 +57,8 @@ class LegionTraceRecord : public InstRecord
 class LegionTrace : public InstTracer
 {
   public:
-
-    LegionTrace(const std::string & name) : InstTracer(name)
+    typedef LegionTraceParams Params;
+    LegionTrace(const Params *p) : InstTracer(p)
     {}
 
     LegionTraceRecord *
index a328f473439971bc7ded19a13fb44a991cf63a42..629fd4877fbd275d0ecdabd48d49a2bf564cade3 100644 (file)
 #
 # Authors: Nathan Binkert
 
-from m5.SimObject import SimObject
+from MemObject import MemObject
 from m5.params import *
 from m5.proxy import *
 from m5 import build_env
 
-class MemTest(SimObject):
+class MemTest(MemObject):
     type = 'MemTest'
     max_loads = Param.Counter(0, "number of loads to execute")
     atomic = Param.Bool(False, "Execute tester in atomic mode? (or timing)\n")
index 83417c514cd1078215457be8355d6821dac5d2a2..583fd5f8d7abaa532714e9bd040ca7e6b22cd1a8 100644 (file)
@@ -46,7 +46,6 @@
 #include "mem/packet.hh"
 //#include "mem/physical.hh"
 #include "mem/request.hh"
-#include "params/MemTest.hh"
 #include "sim/sim_events.hh"
 #include "sim/stats.hh"
 
@@ -119,37 +118,24 @@ MemTest::sendPkt(PacketPtr pkt) {
 
 }
 
-MemTest::MemTest(const string &name,
-//              MemInterface *_cache_interface,
-//              PhysicalMemory *main_mem,
-//              PhysicalMemory *check_mem,
-                 unsigned _memorySize,
-                 unsigned _percentReads,
-                 unsigned _percentFunctional,
-                 unsigned _percentUncacheable,
-                 unsigned _progressInterval,
-                 unsigned _percentSourceUnaligned,
-                 unsigned _percentDestUnaligned,
-                 Addr _traceAddr,
-                 Counter _max_loads,
-                 bool _atomic)
-    : MemObject(name),
+MemTest::MemTest(const Params *p)
+    : MemObject(p),
       tickEvent(this),
       cachePort("test", this),
       funcPort("functional", this),
       retryPkt(NULL),
 //      mainMem(main_mem),
 //      checkMem(check_mem),
-      size(_memorySize),
-      percentReads(_percentReads),
-      percentFunctional(_percentFunctional),
-      percentUncacheable(_percentUncacheable),
-      progressInterval(_progressInterval),
-      nextProgressMessage(_progressInterval),
-      percentSourceUnaligned(_percentSourceUnaligned),
-      percentDestUnaligned(percentDestUnaligned),
-      maxLoads(_max_loads),
-      atomic(_atomic)
+      size(p->memory_size),
+      percentReads(p->percent_reads),
+      percentFunctional(p->percent_functional),
+      percentUncacheable(p->percent_uncacheable),
+      progressInterval(p->progress_interval),
+      nextProgressMessage(p->progress_interval),
+      percentSourceUnaligned(p->percent_source_unaligned),
+      percentDestUnaligned(p->percent_dest_unaligned),
+      maxLoads(p->max_loads),
+      atomic(p->atomic)
 {
     vector<string> cmd;
     cmd.push_back("/bin/ls");
@@ -161,7 +147,7 @@ MemTest::MemTest(const string &name,
     funcPort.snoopRangeSent = true;
 
     // Needs to be masked off once we know the block size.
-    traceBlockAddr = _traceAddr;
+    traceBlockAddr = p->trace_addr;
     baseAddr1 = 0x100000;
     baseAddr2 = 0x400000;
     uncacheAddr = 0x800000;
@@ -411,12 +397,5 @@ MemTest::doRetry()
 MemTest *
 MemTestParams::create()
 {
-    return new MemTest(name,
-#if 0
-                       cache->getInterface(), main_mem, check_mem,
-#endif
-                       memory_size, percent_reads, percent_functional,
-                       percent_uncacheable, progress_interval,
-                       percent_source_unaligned, percent_dest_unaligned,
-                       trace_addr, max_loads, atomic);
+    return new MemTest(this);
 }
index f4713709a5bd9af2e5699495730e0b7f200a7a3c..fa168c70bce1cfeb8eee903f869d54dc1b877dc7 100644 (file)
@@ -35,6 +35,7 @@
 #include <set>
 
 #include "base/statistics.hh"
+#include "params/MemTest.hh"
 #include "sim/eventq.hh"
 #include "sim/sim_exit.hh"
 #include "sim/sim_object.hh"
@@ -46,18 +47,8 @@ class Packet;
 class MemTest : public MemObject
 {
   public:
-
-    MemTest(const std::string &name,
-            unsigned _memorySize,
-            unsigned _percentReads,
-            unsigned _percentFunctional,
-            unsigned _percentUncacheable,
-            unsigned _progressInterval,
-            unsigned _percentSourceUnaligned,
-            unsigned _percentDestUnaligned,
-            Addr _traceAddr,
-            Counter _max_loads,
-            bool _atomic);
+    typedef MemTestParams Params;
+    MemTest(const Params *p);
 
     virtual void init();
 
index 09d271b1060a255cfe0df0a4ed5adf85802f1173..b7c972b091791e0e80bf56efd104a2813930fafc 100644 (file)
@@ -32,7 +32,6 @@
 
 #include "cpu/o3/fu_pool.hh"
 #include "cpu/func_unit.hh"
-#include "params/FUPool.hh"
 
 using namespace std;
 
@@ -69,8 +68,8 @@ FUPool::~FUPool()
 
 
 // Constructor
-FUPool::FUPool(string name, vector<FUDesc *> paramList)
-    : SimObject(name)
+FUPool::FUPool(const Params *p)
+    : SimObject(p)
 {
     numFU = 0;
 
@@ -84,6 +83,7 @@ FUPool::FUPool(string name, vector<FUDesc *> paramList)
     //
     //  Iterate through the list of FUDescData structures
     //
+    const vector<FUDesc *> &paramList =  p->FUList;
     for (FUDDiterator i = paramList.begin(); i != paramList.end(); ++i) {
 
         //
@@ -278,5 +278,5 @@ FUPool::takeOverFrom()
 FUPool *
 FUPoolParams::create()
 {
-    return new FUPool(name, FUList);
+    return new FUPool(this);
 }
index 52d83f056f60948928350408e954c0499b871ae8..48037324c83625af19d5007a860dac9b97653251 100644 (file)
@@ -38,6 +38,7 @@
 
 #include "base/sched_list.hh"
 #include "cpu/op_class.hh"
+#include "params/FUPool.hh"
 #include "sim/sim_object.hh"
 
 class FUDesc;
@@ -116,9 +117,9 @@ class FUPool : public SimObject
     typedef std::vector<FuncUnit *>::iterator fuListIterator;
 
   public:
-
+    typedef FUPoolParams Params;
     /** Constructs a FU pool. */
-    FUPool(std::string name, std::vector<FUDesc *> l);
+    FUPool(const Params *p);
     ~FUPool();
 
     /** Annotates units that provide memory operations. Included only because
index bac2a86826644cd8662ae8991a5e3f2f1cf1c3c9..5bc0de5da6fe6a1e1658f4bf6a4800b4b5c36263 100644 (file)
 #include "dev/alpha/tsunami_pchip.hh"
 #include "dev/alpha/tsunami_io.hh"
 #include "dev/alpha/tsunami.hh"
-#include "params/Tsunami.hh"
 #include "sim/system.hh"
 
 using namespace std;
 //Should this be AlphaISA?
 using namespace TheISA;
 
-Tsunami::Tsunami(const string &name, System *s, IntrControl *ic)
-    : Platform(name, ic), system(s)
+Tsunami::Tsunami(const Params *p)
+    : Platform(p), system(p->system)
 {
     // set the back pointer from the system to myself
     system->platform = this;
@@ -117,5 +116,5 @@ Tsunami::unserialize(Checkpoint *cp, const std::string &section)
 Tsunami *
 TsunamiParams::create()
 {
-    return new Tsunami(name, system, intrctrl);
+    return new Tsunami(this);
 }
index 6fbfac85132ceb71d2e83f77e94d158668b537ce..44c5d41a43515200ddb99f22d1d528beb488947d 100644 (file)
@@ -38,6 +38,7 @@
 #define __DEV_TSUNAMI_HH__
 
 #include "dev/platform.hh"
+#include "params/Tsunami.hh"
 
 class IdeController;
 class TsunamiCChip;
@@ -80,13 +81,8 @@ class Tsunami : public Platform
     int ipi_pending[Tsunami::Max_CPUs];
 
   public:
-    /**
-     * Constructor for the Tsunami Class.
-     * @param name name of the object
-     * @param s system the object belongs to
-     * @param intctrl pointer to the interrupt controller
-     */
-    Tsunami(const std::string &name, System *s, IntrControl *intctrl);
+    typedef TsunamiParams Params;
+    Tsunami(const Params *p);
 
     /**
      * Return the interrupting frequency to AlphaAccess
index 1cccf3a0f8ccba5e821dcdc0d3bf379ab413228a..b8386bc3d293b45328c892401b7017c786d22ab9 100644 (file)
@@ -45,8 +45,6 @@
 #include "base/misc.hh"
 #include "base/trace.hh"
 #include "dev/disk_image.hh"
-#include "params/CowDiskImage.hh"
-#include "params/RawDiskImage.hh"
 #include "sim/sim_exit.hh"
 #include "sim/byteswap.hh"
 
@@ -56,10 +54,9 @@ using namespace std;
 //
 // Raw Disk image
 //
-RawDiskImage::RawDiskImage(const string &name, const string &filename,
-                           bool rd_only)
-    : DiskImage(name), disk_size(0)
-{ open(filename, rd_only); }
+RawDiskImage::RawDiskImage(const Params* p)
+    : DiskImage(p), disk_size(0)
+{ open(p->image_file, p->read_only); }
 
 RawDiskImage::~RawDiskImage()
 { close(); }
@@ -147,7 +144,7 @@ RawDiskImage::write(const uint8_t *data, off_t offset)
 RawDiskImage *
 RawDiskImageParams::create()
 {
-    return new RawDiskImage(name, image_file, read_only);
+    return new RawDiskImage(this);
 }
 
 ////////////////////////////////////////////////////////////////////////
@@ -157,10 +154,6 @@ RawDiskImageParams::create()
 const int CowDiskImage::VersionMajor = 1;
 const int CowDiskImage::VersionMinor = 0;
 
-CowDiskImage::CowDiskImage(const string &name, DiskImage *kid, int hash_size)
-    : DiskImage(name), child(kid), table(NULL)
-{ init(hash_size); }
-
 class CowDiskCallback : public Callback
 {
   private:
@@ -171,17 +164,20 @@ class CowDiskCallback : public Callback
     void process() { image->save(); delete this; }
 };
 
-CowDiskImage::CowDiskImage(const string &name, DiskImage *kid, int hash_size,
-                           const string &file, bool read_only)
-    : DiskImage(name), filename(file), child(kid), table(NULL)
+CowDiskImage::CowDiskImage(const Params *p)
+    : DiskImage(p), filename(p->image_file), child(p->child), table(NULL)
 {
-    if (!open(filename)) {
-        assert(!read_only && "why have a non-existent read only file?");
-        init(hash_size);
-    }
+    if (filename.empty()) {
+        init(p->table_size);
+    } else {
+        if (!open(filename)) {
+            assert(!p->read_only && "why have a non-existent read only file?");
+            init(p->table_size);
+        }
 
-    if (!read_only)
-        registerExitCallback(new CowDiskCallback(this));
+        if (!p->read_only)
+            registerExitCallback(new CowDiskCallback(this));
+    }
 }
 
 CowDiskImage::~CowDiskImage()
@@ -426,9 +422,5 @@ CowDiskImage::unserialize(Checkpoint *cp, const string &section)
 CowDiskImage *
 CowDiskImageParams::create()
 {
-    if (((string)image_file).empty())
-        return new CowDiskImage(name, child, table_size);
-    else
-        return new CowDiskImage(name, child, table_size,
-                                image_file, read_only);
+    return new CowDiskImage(this);
 }
index 45d5af649888c73483e05da03edcedc85cf1b571..3918209fce3c65e40911563486b8a352426649dc 100644 (file)
@@ -39,6 +39,9 @@
 
 #include "base/hashmap.hh"
 #include "sim/sim_object.hh"
+#include "params/DiskImage.hh"
+#include "params/CowDiskImage.hh"
+#include "params/RawDiskImage.hh"
 
 #define SectorSize (512)
 
@@ -51,7 +54,8 @@ class DiskImage : public SimObject
     bool initialized;
 
   public:
-    DiskImage(const std::string &name) : SimObject(name), initialized(false) {}
+    typedef DiskImageParams Params;
+    DiskImage(const Params *p) : SimObject(p), initialized(false) {}
     virtual ~DiskImage() {}
 
     virtual off_t size() const = 0;
@@ -72,8 +76,8 @@ class RawDiskImage : public DiskImage
     mutable off_t disk_size;
 
   public:
-    RawDiskImage(const std::string &name, const std::string &filename,
-                 bool rd_only);
+    typedef RawDiskImageParams Params;
+    RawDiskImage(const Params *p);
     ~RawDiskImage();
 
     void close();
@@ -113,9 +117,8 @@ class CowDiskImage : public DiskImage
     SectorTable *table;
 
   public:
-    CowDiskImage(const std::string &name, DiskImage *kid, int hash_size);
-    CowDiskImage(const std::string &name, DiskImage *kid, int hash_size,
-                 const std::string &filename, bool read_only);
+    typedef CowDiskImageParams Params;
+    CowDiskImage(const Params *p);
     ~CowDiskImage();
 
     void init(int hash_size);
index a3a7f06065fe66df08ee60d797a6b8dcc53c0aec..4deb7fccc91b0a87c0c54a6ee3cbe0b561f5ca2a 100644 (file)
@@ -40,6 +40,7 @@
 #include "dev/etherobject.hh"
 #include "params/EtherBus.hh"
 #include "sim/sim_object.hh"
+#include "params/EtherBus.hh"
 
 class EtherDump;
 class EtherInt;
index 7dcf1ca97a856c0e241d982a3624fef9ed9723f0..4710935212d6464875035e3900cec2d1ed7c0d5e 100644 (file)
 #include "base/misc.hh"
 #include "base/output.hh"
 #include "dev/etherdump.hh"
-#include "params/EtherDump.hh"
 #include "sim/core.hh"
 
 using std::string;
 
-EtherDump::EtherDump(const string &name, const string &file, int max)
-    : SimObject(name), stream(file.c_str()), maxlen(max)
+EtherDump::EtherDump(const Params *p)
+    : SimObject(p), stream(simout.resolve(p->file).c_str()),
+      maxlen(p->maxlen)
 {
 }
 
@@ -119,5 +119,5 @@ EtherDump::dumpPacket(EthPacketPtr &packet)
 EtherDump *
 EtherDumpParams::create()
 {
-    return new EtherDump(name, simout.resolve(file), maxlen);
+    return new EtherDump(this);
 }
index f3080f34147aeda2ee5013db199b1534049823d1..1027ce4d01b9b01b9179120723ad087ce647870c 100644 (file)
@@ -38,6 +38,7 @@
 #include <fstream>
 #include "dev/etherpkt.hh"
 #include "sim/sim_object.hh"
+#include "params/EtherDump.hh"
 
 /*
  * Simple object for creating a simple pcap style packet trace
@@ -53,7 +54,8 @@ class EtherDump : public SimObject
     Tick curtime;
 
   public:
-    EtherDump(const std::string &name, const std::string &file, int max);
+    typedef EtherDumpParams Params;
+    EtherDump(const Params *p);
 
     inline void dump(EthPacketPtr &pkt) { dumpPacket(pkt); }
 };
index baa4fb741fdb9205d0d49ebcf46e2d0dfe9639ae..4130a7b3f37902bafd377e1cd5e218346481b22d 100644 (file)
@@ -54,10 +54,10 @@ using namespace std;
 EtherLink::EtherLink(const Params *p)
     : EtherObject(p)
 {
-    link[0] = new Link(name() + ".link0", this, 0, params()->speed,
-            params()->delay, params()->delay_var, params()->dump);
-    link[1] = new Link(name() + ".link1", this, 1, params()->speed,
-            params()->delay, params()->delay_var, params()->dump);
+    link[0] = new Link(name() + ".link0", this, 0, p->speed,
+                       p->delay, p->delay_var, p->dump);
+    link[1] = new Link(name() + ".link1", this, 1, p->speed,
+                       p->delay, p->delay_var, p->dump);
 
     interface[0] = new Interface(name() + ".int0", link[0], link[1]);
     interface[1] = new Interface(name() + ".int1", link[1], link[0]);
index 52092dbf4cb8a477f53779dda04fcf18cae68f47..8f38fcab8160ebc2dd7f61dd4cdf3c8207a0767c 100644 (file)
@@ -42,6 +42,7 @@
 #include "sim/eventq.hh"
 #include "sim/host.hh"
 #include "sim/sim_object.hh"
+#include "params/EtherLink.hh"
 
 class EtherDump;
 class Checkpoint;
index cfd743a132fa5bd4c9a1e5a2724a631f1a2ad169..8f9999bebae3b6617539e74ec3d43f54e94c540b 100644 (file)
 #include "dev/disk_image.hh"
 #include "dev/ide_ctrl.hh"
 #include "dev/ide_disk.hh"
-#include "params/IdeDisk.hh"
 #include "sim/core.hh"
 #include "sim/sim_object.hh"
 
 using namespace std;
 using namespace TheISA;
 
-IdeDisk::IdeDisk(const string &name, DiskImage *img,
-                 int id, Tick delay)
-    : SimObject(name), ctrl(NULL), image(img), diskDelay(delay),
+IdeDisk::IdeDisk(const Params *p)
+    : SimObject(p), ctrl(NULL), image(p->image), diskDelay(p->delay),
       dmaTransferEvent(this), dmaReadCG(NULL), dmaReadWaitEvent(this),
       dmaWriteCG(NULL), dmaWriteWaitEvent(this), dmaPrdReadEvent(this),
       dmaReadEvent(this), dmaWriteEvent(this)
 {
     // Reset the device state
-    reset(id);
+    reset(p->driveID);
 
     // fill out the drive ID structure
     memset(&driveID, 0, sizeof(struct ataparams));
@@ -1117,5 +1115,5 @@ IdeDisk::unserialize(Checkpoint *cp, const string &section)
 IdeDisk *
 IdeDiskParams::create()
 {
-    return new IdeDisk(name, image, driveID, delay);
+    return new IdeDisk(this);
 }
index 2ed860013085e991ea40a2c4d9d8678d552b6ba6..62c89add452a2412d2683d9d7d0139a2f6648920 100644 (file)
@@ -42,6 +42,8 @@
 #include "dev/ide_wdcreg.h"
 #include "dev/io_device.hh"
 #include "sim/eventq.hh"
+#include "params/IdeDisk.hh"
+
 
 class ChunkGenerator;
 
@@ -248,14 +250,8 @@ class IdeDisk : public SimObject
     Stats::Formula totBytes;
 
   public:
-    /**
-     * Create and initialize this Disk.
-     * @param name The name of this disk.
-     * @param img The disk image of this disk.
-     * @param id The disk ID (master=0/slave=1)
-     * @param disk_delay The disk delay in milliseconds
-     */
-    IdeDisk(const std::string &name, DiskImage *img, int id, Tick disk_delay);
+    typedef IdeDiskParams Params;
+    IdeDisk(const Params *p);
 
     /**
      * Delete the data buffer.
index 5f54b1af3c47b86bc971d691e5f0e04280b8e0a9..4233d9d4c6743ecec688783070f2b1354cc05be0 100644 (file)
@@ -39,7 +39,7 @@
 
 #include "base/range.hh"
 #include "dev/io_device.hh"
-#include "dev/alpha/tsunami.hh"
+// #include "dev/alpha/tsunami.hh"
 #include "params/IsaFake.hh"
 #include "mem/packet.hh"
 
index 884fab7ac98fcabf7bc9c9169b448627da19d995..faf0337057e5deed20b98d0163c90a30206cde07 100644 (file)
@@ -44,7 +44,7 @@
 
 using namespace std;
 
-PciConfigAll::PciConfigAll(Params *p)
+PciConfigAll::PciConfigAll(const Params *p)
     : PioDevice(p)
 {
     pioAddr = p->platform->calcConfigAddr(params()->bus,0,0);
@@ -74,7 +74,7 @@ PciConfigAll::read(PacketPtr pkt)
         panic("invalid access size(?) for PCI configspace!\n");
     }
     pkt->makeAtomicResponse();
-    return params()->pio_delay;
+    return params()->pio_latency;
 }
 
 Tick
@@ -98,14 +98,7 @@ PciConfigAll::addressRanges(AddrRangeList &range_list)
 PciConfigAll *
 PciConfigAllParams::create()
 {
-    PciConfigAll::Params *p = new PciConfigAll::Params;
-    p->pio_delay = pio_latency;
-    p->platform = platform;
-    p->system = system;
-    p->bus = bus;
-    p->size = size;
-
-    return new PciConfigAll(p);
+    return new PciConfigAll(this);
 }
 
 #endif // DOXYGEN_SHOULD_SKIP_THIS
index 720a2f005ca5477fa1ad8c3b83978ab8aff96fd1..fbd0223406285de3c2728386e3cecc058b54f484 100644 (file)
@@ -40,6 +40,7 @@
 #include "dev/pcireg.h"
 #include "base/range.hh"
 #include "dev/io_device.hh"
+#include "params/PciConfigAll.hh"
 
 
 /**
 class PciConfigAll : public PioDevice
 {
   public:
-    struct Params :  public PioDevice::Params
-    {
-        Tick pio_delay;
-        Addr size;
-        int bus;
-    };
+    typedef PciConfigAllParams Params;
     const Params *params() const { return (const Params *)_params; }
 
     /**
      * Constructor for PCIConfigAll
      * @param p parameters structure
      */
-    PciConfigAll(Params *p);
+    PciConfigAll(const Params *p);
 
     /**
      * Read something in PCI config space. If the device does not exist
index c8922432b89830baac3b98d0bfcfb000b9bfa07b..2b51a6245b84978ad849c414c8d9043d655212f6 100644 (file)
@@ -36,8 +36,8 @@
 using namespace std;
 using namespace TheISA;
 
-Platform::Platform(const string &name, IntrControl *intctrl)
-    : SimObject(name), intrctrl(intctrl)
+Platform::Platform(const Params *p)
+    : SimObject(p), intrctrl(p->intrctrl)
 {
 }
 
index aceec09708dc12adacf7b4cf17a72ef3804fe7a9..699b168cee484e717b210a6c2a7ef704db877faf 100644 (file)
@@ -42,6 +42,7 @@
 
 #include "sim/sim_object.hh"
 #include "arch/isa_traits.hh"
+#include "params/Platform.hh"
 
 class PciConfigAll;
 class IntrControl;
@@ -59,7 +60,8 @@ class Platform : public SimObject
     System *system;
 
   public:
-    Platform(const std::string &name, IntrControl *intctrl);
+    typedef PlatformParams Params;
+    Platform(const Params *p);
     virtual ~Platform();
     virtual void postConsoleInt() = 0;
     virtual void clearConsoleInt() = 0;
index 7ce462bd0f24bb709dfc212054e337fbba3c9dd1..e8dc1b2102b33cf3db0cbd447557d11c3895ed69 100644 (file)
@@ -52,7 +52,6 @@
 #include "dev/platform.hh"
 #include "dev/simconsole.hh"
 #include "dev/uart.hh"
-#include "params/SimConsole.hh"
 
 using namespace std;
 
@@ -91,18 +90,24 @@ SimConsole::DataEvent::process(int revent)
 /*
  * SimConsole code
  */
-SimConsole::SimConsole(const string &name, ostream *os, int num, int port)
-    : SimObject(name), listenEvent(NULL), dataEvent(NULL), number(num),
-      data_fd(-1), txbuf(16384), rxbuf(16384), outfile(os)
+SimConsole::SimConsole(const Params *p)
+    : SimObject(p), listenEvent(NULL), dataEvent(NULL), number(p->number),
+      data_fd(-1), txbuf(16384), rxbuf(16384), outfile(NULL)
 #if TRACING_ON == 1
       , linebuf(16384)
 #endif
 {
-    if (outfile)
+    if (!p->output.empty()) {
+        if (p->append_name)
+            outfile = simout.find(p->output + "." + p->name);
+        else
+            outfile = simout.find(p->output);
+
         outfile->setf(ios::unitbuf);
+    }
 
-    if (port)
-        listen(port);
+    if (p->port)
+        listen(p->port);
 }
 
 SimConsole::~SimConsole()
@@ -328,14 +333,5 @@ SimConsole::out(char c)
 SimConsole *
 SimConsoleParams::create()
 {
-    string filename = output;
-    ostream *stream = NULL;
-
-    if (!filename.empty()) {
-        if (append_name)
-            filename += "." + name;
-        stream = simout.find(filename);
-    }
-
-    return new SimConsole(name, stream, number, port);
+    return new SimConsole(this);
 }
index 18a193493c7169ef860e827255109290ed606239..c8d4539605d1f5d12497197a085a3816786f25d7 100644 (file)
@@ -43,6 +43,7 @@
 #include "base/pollevent.hh"
 #include "base/socket.hh"
 #include "sim/sim_object.hh"
+#include "params/SimConsole.hh"
 
 class ConsoleListener;
 class Uart;
@@ -84,7 +85,8 @@ class SimConsole : public SimObject
     int data_fd;
 
   public:
-    SimConsole(const std::string &name, std::ostream *os, int num, int port);
+    typedef SimConsoleParams Params;
+    SimConsole(const Params *p);
     ~SimConsole();
 
   protected:
index 4b6d372862b55d8ea27009dc2b4f07a1bb116385..b8096d2138c1fd9fc23b43eedd7bef3a89acae04 100644 (file)
 #include "dev/disk_image.hh"
 #include "dev/simple_disk.hh"
 #include "mem/port.hh"
-#include "params/SimpleDisk.hh"
 #include "sim/system.hh"
 
 using namespace std;
 
-SimpleDisk::SimpleDisk(const string &name, System *sys, DiskImage *img)
-    : SimObject(name), system(sys), image(img)
+SimpleDisk::SimpleDisk(const Params *p)
+    : SimObject(p), system(p->system), image(p->disk)
 {}
 
 SimpleDisk::~SimpleDisk()
@@ -94,5 +93,5 @@ SimpleDisk::write(Addr addr, baddr_t block, int count)
 SimpleDisk *
 SimpleDiskParams::create()
 {
-    return new SimpleDisk(name, system, disk);
+    return new SimpleDisk(this);
 }
index 9f588cb95b5710c4ac5abb46d76046051207ffe8..2f3802975e0035821003d036e5866491f2135c9c 100644 (file)
@@ -37,6 +37,7 @@
 
 #include "sim/sim_object.hh"
 #include "arch/isa_traits.hh"
+#include "params/SimpleDisk.hh"
 
 class DiskImage;
 class System;
@@ -54,7 +55,8 @@ class SimpleDisk : public SimObject
     DiskImage *image;
 
   public:
-    SimpleDisk(const std::string &name, System *sys, DiskImage *img);
+    typedef SimpleDiskParams Params;
+    SimpleDisk(const Params *p);
     ~SimpleDisk();
 
     void read(Addr addr, baddr_t block, int count) const;
index 692e0cfe155b2bf95b1b38dc365d9d347f9b46ce..49e44af55e8f8c1dd260be1bc89b59395e02e701 100644 (file)
 #include "cpu/intr_control.hh"
 #include "dev/simconsole.hh"
 #include "dev/sparc/t1000.hh"
-#include "params/T1000.hh"
 #include "sim/system.hh"
 
 using namespace std;
 //Should this be AlphaISA?
 using namespace TheISA;
 
-T1000::T1000(const string &name, System *s, IntrControl *ic)
-    : Platform(name, ic), system(s)
+T1000::T1000(const Params *p)
+    : Platform(p), system(p->system)
 {
     // set the back pointer from the system to myself
     system->platform = this;
@@ -104,5 +103,5 @@ T1000::calcConfigAddr(int bus, int dev, int func)
 T1000 *
 T1000Params::create()
 {
-    return new T1000(name, system, intrctrl);
+    return new T1000(this);
 }
index 8e28d90e54c97da892211db3d72ba357e8506bff..76de0a5504be8c1110969c9d0ada030dc55c6ab4 100644 (file)
@@ -38,6 +38,7 @@
 #define __DEV_T1000_HH__
 
 #include "dev/platform.hh"
+#include "params/T1000.hh"
 
 class IdeController;
 class System;
@@ -49,13 +50,14 @@ class T1000 : public Platform
     System *system;
 
   public:
+    typedef T1000Params Params;
     /**
      * Constructor for the Tsunami Class.
      * @param name name of the object
      * @param s system the object belongs to
      * @param intctrl pointer to the interrupt controller
      */
-    T1000(const std::string &name, System *s, IntrControl *intctrl);
+    T1000(const Params *p);
 
     /**
      * Return the interrupting frequency to AlphaAccess
index 3434f59fb0f740de556493c3db600876b3252804..3fa9e5bb9682f3cac5d9550d6da33ed29fcfaa44 100644 (file)
@@ -55,7 +55,7 @@ Bridge::BridgePort::BridgePort(const std::string &_name,
 }
 
 Bridge::Bridge(Params *p)
-    : MemObject(p->name),
+    : MemObject(p),
       portA(p->name + "-portA", this, &portB, p->delay, p->nack_delay,
               p->req_size_a, p->resp_size_a, p->filter_ranges_a),
       portB(p->name + "-portB", this, &portA, p->delay, p->nack_delay,
index 3f7b1deaf1795968afcf39b74e31742f6b80b694..cc3504e8339c715fe1fc2e2a6eb12d22471766b8 100644 (file)
@@ -39,7 +39,6 @@
 #include "base/misc.hh"
 #include "base/trace.hh"
 #include "mem/bus.hh"
-#include "params/Bus.hh"
 
 Port *
 Bus::getPort(const std::string &if_name, int idx)
@@ -632,5 +631,5 @@ Bus::startup()
 Bus *
 BusParams::create()
 {
-    return new Bus(name, bus_id, clock, width, responder_set, block_size);
+    return new Bus(this);
 }
index 0c594c4633eab4cef18ecd70635a3ebf6ae2545a..9ba43c79d8aa7661eb47444875fa647659432068 100644 (file)
@@ -50,6 +50,7 @@
 #include "mem/port.hh"
 #include "mem/request.hh"
 #include "sim/eventq.hh"
+#include "params/Bus.hh"
 
 class Bus : public MemObject
 {
@@ -361,12 +362,11 @@ class Bus : public MemObject
 
     unsigned int drain(Event *de);
 
-    Bus(const std::string &n, int bus_id, int _clock, int _width,
-        bool responder_set, int dflt_blk_size)
-        : MemObject(n), busId(bus_id), clock(_clock), width(_width),
+    Bus(const BusParams *p)
+        : MemObject(p), busId(p->bus_id), clock(p->clock), width(p->width),
           tickNextIdle(0), drainEvent(NULL), busIdle(this), inRetry(false),
           maxId(0), defaultPort(NULL), funcPort(NULL), funcPortId(-4),
-          responderSet(responder_set), defaultBlockSize(dflt_blk_size),
+          responderSet(p->responder_set), defaultBlockSize(p->block_size),
           cachedBlockSize(0), cachedBlockSizeValid(false)
     {
         //Both the width and clock period must be positive
index 0c8b02cb371ee0e9392722515da33963a1546003..c5632e89fc1ef989b74770b08ea305f2a1077b28 100644 (file)
@@ -48,22 +48,21 @@ BaseCache::CachePort::CachePort(const std::string &_name, BaseCache *_cache,
 }
 
 
-BaseCache::BaseCache(const std::string &name, Params &params)
-    : MemObject(name),
-      mshrQueue(params.numMSHRs, 4, MSHRQueue_MSHRs),
-      writeBuffer(params.numWriteBuffers, params.numMSHRs+1000,
+BaseCache::BaseCache(const Params *p)
+    : MemObject(p),
+      mshrQueue(p->mshrs, 4, MSHRQueue_MSHRs),
+      writeBuffer(p->write_buffers, p->mshrs+1000,
                   MSHRQueue_WriteBuffer),
-      blkSize(params.blkSize),
-      hitLatency(params.hitLatency),
-      numTarget(params.numTargets),
+      blkSize(p->block_size),
+      hitLatency(p->latency),
+      numTarget(p->tgts_per_mshr),
       blocked(0),
       noTargetMSHR(NULL),
-      missCount(params.maxMisses),
+      missCount(p->max_miss_count),
       drainEvent(NULL)
 {
 }
 
-
 void
 BaseCache::CachePort::recvStatusChange(Port::Status status)
 {
index 6a4eec43ea5f59b53b54e784877838c7c9f16fdb..5049f68f1ecc73960a9ae59762df569b627554ac 100644 (file)
@@ -52,6 +52,7 @@
 #include "mem/packet.hh"
 #include "mem/tport.hh"
 #include "mem/request.hh"
+#include "params/BaseCache.hh"
 #include "sim/eventq.hh"
 #include "sim/sim_exit.hh"
 
@@ -354,54 +355,9 @@ class BaseCache : public MemObject
     virtual void regStats();
 
   public:
-
-    class Params
-    {
-      public:
-        /** The hit latency for this cache. */
-        int hitLatency;
-        /** The block size of this cache. */
-        int blkSize;
-        int numMSHRs;
-        int numTargets;
-        int numWriteBuffers;
-        /**
-         * The maximum number of misses this cache should handle before
-         * ending the simulation.
-         */
-        Counter maxMisses;
-
-        std::vector<Range<Addr> > cpuSideFilterRanges;
-        std::vector<Range<Addr> > memSideFilterRanges;
-        /**
-         * Construct an instance of this parameter class.
-         */
-        Params(int _hitLatency, int _blkSize,
-               int _numMSHRs, int _numTargets, int _numWriteBuffers,
-               Counter _maxMisses,
-               std::vector<Range<Addr> > cpu_side_filter_ranges,
-               std::vector<Range<Addr> > mem_side_filter_ranges)
-            : hitLatency(_hitLatency), blkSize(_blkSize),
-              numMSHRs(_numMSHRs), numTargets(_numTargets),
-              numWriteBuffers(_numWriteBuffers), maxMisses(_maxMisses),
-              cpuSideFilterRanges(cpu_side_filter_ranges),
-              memSideFilterRanges(mem_side_filter_ranges)
-        {
-        }
-    };
-
-    /**
-     * Create and initialize a basic cache object.
-     * @param name The name of this cache.
-     * @param hier_params Pointer to the HierParams object for this hierarchy
-     * of this cache.
-     * @param params The parameter object for this BaseCache.
-     */
-    BaseCache(const std::string &name, Params &params);
-
-    ~BaseCache()
-    {
-    }
+    typedef BaseCacheParams Params;
+    BaseCache(const Params *p);
+    ~BaseCache() {}
 
     virtual void init();
 
index 821fa970208199d6d357493b0ed93b760d80ff69..037afd6ac1824b7a0b5876d3efb5b463167d7f25 100644 (file)
@@ -202,34 +202,8 @@ class Cache : public BaseCache
     PacketPtr writebackBlk(BlkType *blk);
 
   public:
-
-    class Params
-    {
-      public:
-        TagStore *tags;
-        BaseCache::Params baseParams;
-        BasePrefetcher*prefetcher;
-        bool prefetchAccess;
-        const bool doFastWrites;
-        const bool prefetchMiss;
-
-        Params(TagStore *_tags,
-               BaseCache::Params params,
-               BasePrefetcher *_prefetcher,
-               bool prefetch_access, int hit_latency,
-               bool do_fast_writes,
-               bool prefetch_miss)
-            : tags(_tags),
-              baseParams(params),
-              prefetcher(_prefetcher), prefetchAccess(prefetch_access),
-              doFastWrites(do_fast_writes),
-              prefetchMiss(prefetch_miss)
-        {
-        }
-    };
-
     /** Instantiates a basic cache object. */
-    Cache(const std::string &_name, Params &params);
+    Cache(const Params *p, TagStore *tags, BasePrefetcher *prefetcher);
 
     virtual Port *getPort(const std::string &if_name, int idx = -1);
     virtual void deletePortRefs(Port *p);
index 0f8b52af299026c74be9eb64fb7a23c840b70e38..d67a9c9a4854c5494dbcbb879b70d38d20ad8f41 100644 (file)
@@ -95,12 +95,8 @@ using namespace TheISA;
         else {                                                          \
             BUILD_NULL_PREFETCHER(TAGS);                                \
         }                                                               \
-        Cache<TAGS>::Params params(tags, base_params,       \
-                                   pf, prefetch_access, latency,        \
-                                   true,                                \
-                                   prefetch_miss);                      \
-        Cache<TAGS> *retval =                                        \
-            new Cache<TAGS>(name, params);                              \
+        Cache<TAGS> *retval =                                           \
+            new Cache<TAGS>(this, tags, pf);                            \
         return retval;                                                  \
     } while (0)
 
@@ -178,54 +174,28 @@ using namespace TheISA;
 
 #if defined(USE_TAGGED)
 #define BUILD_TAGGED_PREFETCHER(t)                              \
-    pf = new TaggedPrefetcher(prefetcher_size,                  \
-                              !prefetch_past_page,              \
-                              prefetch_serial_squash,           \
-                              prefetch_cache_check_push,        \
-                              prefetch_data_accesses_only,      \
-                              prefetch_latency,                 \
-                              prefetch_degree)
+    pf = new TaggedPrefetcher(this)
 #else
 #define BUILD_TAGGED_PREFETCHER(t) BUILD_CACHE_PANIC("Tagged Prefetcher")
 #endif
 
 #if defined(USE_STRIDED)
 #define BUILD_STRIDED_PREFETCHER(t)                             \
-    pf = new StridePrefetcher(prefetcher_size,                  \
-                              !prefetch_past_page,              \
-                              prefetch_serial_squash,           \
-                              prefetch_cache_check_push,        \
-                              prefetch_data_accesses_only,      \
-                              prefetch_latency,                 \
-                              prefetch_degree,                  \
-                              prefetch_use_cpu_id)
+    pf = new StridePrefetcher(this)
 #else
 #define BUILD_STRIDED_PREFETCHER(t) BUILD_CACHE_PANIC("Stride Prefetcher")
 #endif
 
 #if defined(USE_GHB)
 #define BUILD_GHB_PREFETCHER(t)                         \
-    pf = new GHBPrefetcher(prefetcher_size,             \
-                           !prefetch_past_page,         \
-                           prefetch_serial_squash,      \
-                           prefetch_cache_check_push,   \
-                           prefetch_data_accesses_only, \
-                           prefetch_latency,            \
-                           prefetch_degree,             \
-                           prefetch_use_cpu_id)
+    pf = new GHBPrefetcher(this)
 #else
 #define BUILD_GHB_PREFETCHER(t) BUILD_CACHE_PANIC("GHB Prefetcher")
 #endif
 
 #if defined(USE_TAGGED)
 #define BUILD_NULL_PREFETCHER(t)                                \
-    pf = new TaggedPrefetcher(prefetcher_size,                  \
-                              !prefetch_past_page,              \
-                              prefetch_serial_squash,           \
-                              prefetch_cache_check_push,        \
-                              prefetch_data_accesses_only,      \
-                              prefetch_latency,                 \
-                              prefetch_degree)
+    pf = new TaggedPrefetcher(this)
 #else
 #define BUILD_NULL_PREFETCHER(t) BUILD_CACHE_PANIC("NULL Prefetcher (uses Tagged)")
 #endif
@@ -238,12 +208,6 @@ BaseCacheParams::create()
         subblock_size = block_size;
     }
 
-    // Build BaseCache param object
-    BaseCache::Params base_params(latency, block_size,
-                                  mshrs, tgts_per_mshr, write_buffers,
-                                  max_miss_count, cpu_side_filter_ranges,
-                                  mem_side_filter_ranges);
-
     //Warnings about prefetcher policy
     if (prefetch_policy == Enums::none) {
         if (prefetch_miss || prefetch_access)
index f9a007c936023dd5f9628ff01849dc371964f394..34084c8dc1379d9320f4d0d16b48db42c6b6f1ca 100644 (file)
 
 
 template<class TagStore>
-Cache<TagStore>::Cache(const std::string &_name,
-                       Cache<TagStore>::Params &params)
-    : BaseCache(_name, params.baseParams),
-      prefetchAccess(params.prefetchAccess),
-      tags(params.tags),
-      prefetcher(params.prefetcher),
-      doFastWrites(params.doFastWrites),
-      prefetchMiss(params.prefetchMiss)
+Cache<TagStore>::Cache(const Params *p, TagStore *tags, BasePrefetcher *pf)
+    : BaseCache(p),
+      prefetchAccess(p->prefetch_access),
+      tags(tags),
+      prefetcher(pf),
+      doFastWrites(true),
+      prefetchMiss(p->prefetch_miss)
 {
     tempBlock = new BlkType();
     tempBlock->data = new uint8_t[blkSize];
 
-    cpuSidePort = new CpuSidePort(_name + "-cpu_side_port", this,
-            params.baseParams.cpuSideFilterRanges);
-    memSidePort = new MemSidePort(_name + "-mem_side_port", this,
-            params.baseParams.memSideFilterRanges);
+    cpuSidePort = new CpuSidePort(p->name + "-cpu_side_port", this,
+            p->cpu_side_filter_ranges);
+    memSidePort = new MemSidePort(p->name + "-mem_side_port", this,
+            p->mem_side_filter_ranges);
     cpuSidePort->setOtherPort(memSidePort);
     memSidePort->setOtherPort(cpuSidePort);
 
index 37836366599055e57ec5e3b373a614cc7a1df0bb..1af900849d26396cbecd30e4f6797014b9aace5e 100644 (file)
 #include "mem/request.hh"
 #include <list>
 
-BasePrefetcher::BasePrefetcher(int size, bool pageStop, bool serialSquash,
-                               bool cacheCheckPush, bool onlyData)
-    :size(size), pageStop(pageStop), serialSquash(serialSquash),
-     cacheCheckPush(cacheCheckPush), only_data(onlyData)
+BasePrefetcher::BasePrefetcher(const BaseCacheParams *p)
+    : size(p->prefetcher_size), pageStop(!p->prefetch_past_page),
+      serialSquash(p->prefetch_serial_squash),
+      cacheCheckPush(p->prefetch_cache_check_push),
+      only_data(p->prefetch_data_accesses_only)
 {
 }
 
index 2780f5e5aaf7c83dc995224105b55cca5d7d1abd..1515d8a93c2af75baa558117684b3710ffcc973c 100644 (file)
@@ -40,6 +40,7 @@
 
 #include "base/statistics.hh"
 #include "mem/packet.hh"
+#include "params/BaseCache.hh"
 
 class BaseCache;
 
@@ -89,8 +90,7 @@ class BasePrefetcher
     void regStats(const std::string &name);
 
   public:
-    BasePrefetcher(int numMSHRS, bool pageStop, bool serialSquash,
-                   bool cacheCheckPush, bool onlyData);
+    BasePrefetcher(const BaseCacheParams *p);
 
     virtual ~BasePrefetcher() {}
 
index f31b56dcf5901249661743fc3f1ff0f0afb5ed3e..c44e9c45692f14b2cb4a0f213316b4ce92b25790 100644 (file)
@@ -51,12 +51,9 @@ class GHBPrefetcher : public BasePrefetcher
 
   public:
 
-    GHBPrefetcher(int size, bool pageStop, bool serialSquash,
-                  bool cacheCheckPush, bool onlyData,
-                  Tick latency, int degree, bool useCPUId)
-        : BasePrefetcher(size, pageStop, serialSquash,
-                         cacheCheckPush, onlyData),
-          latency(latency), degree(degree), useCPUId(useCPUId)
+    GHBPrefetcher(const BaseCacheParams *p)
+        : BasePrefetcher(p), latency(p->prefetch_latency),
+          degree(p->prefetch_degree), useCPUId(p->prefetch_use_cpu_id)
     {
     }
 
index 831e60fb4a7b614e3bb669ca56df90a036cfae4d..4d5ac2f0dfa16e16d858374aae26a2dc79e61079 100644 (file)
@@ -68,12 +68,9 @@ class StridePrefetcher : public BasePrefetcher
 
   public:
 
-    StridePrefetcher(int size, bool pageStop, bool serialSquash,
-                     bool cacheCheckPush, bool onlyData,
-                     Tick latency, int degree, bool useCPUId)
-        : BasePrefetcher(size, pageStop, serialSquash,
-                         cacheCheckPush, onlyData),
-          latency(latency), degree(degree), useCPUId(useCPUId)
+    StridePrefetcher(const BaseCacheParams *p)
+        : BasePrefetcher(p), latency(p->prefetch_latency),
+          degree(p->prefetch_degree), useCPUId(p->prefetch_use_cpu_id)
     {
     }
 
index bc1fa46b9029d7ccebc713ce3429dfdaf5f8edb9..b25cb50548a756273ab8d460531c9e57554b5282 100644 (file)
 #include "arch/isa_traits.hh"
 #include "mem/cache/prefetch/tagged_prefetcher.hh"
 
-TaggedPrefetcher::
-TaggedPrefetcher(int size, bool pageStop, bool serialSquash,
-                 bool cacheCheckPush, bool onlyData,
-                 Tick latency, int degree)
-    : BasePrefetcher(size, pageStop, serialSquash,
-                     cacheCheckPush, onlyData),
-      latency(latency), degree(degree)
+TaggedPrefetcher::TaggedPrefetcher(const BaseCacheParams *p)
+    : BasePrefetcher(p),
+      latency(p->prefetch_latency), degree(p->prefetch_degree)
 {
 }
 
index b9d228aba0b1d4782747412b22479f6794a2f09e..f3094445ff5255449b9cdfb5730f336ef9308f3f 100644 (file)
@@ -47,9 +47,7 @@ class TaggedPrefetcher : public BasePrefetcher
 
   public:
 
-    TaggedPrefetcher(int size, bool pageStop, bool serialSquash,
-                     bool cacheCheckPush, bool onlyData,
-                     Tick latency, int degree);
+    TaggedPrefetcher(const BaseCacheParams *p);
 
     ~TaggedPrefetcher() {}
 
index 7d15663005f3ae9d0c86ae728e7df97f93b9fe4c..bc4e6b86aafbf8400d1ea8821176619096a7e194 100644 (file)
 
 using namespace std;
 
-GenRepl::GenRepl(const string &_name,
-                 int _num_pools,
-                 int _fresh_res,
-                 int _pool_res) // fix this, should be set by cache
-    : Repl(_name)
+GenRepl::GenRepl(const Params *p) // fix this, should be set by cache
+    : Repl(p), num_pools(p->num_pools), fresh_res(p->fresh_res),
+      pool_res(p->pool_res), num_entries(0), num_pool_entries(0), misses(0),
+      pools(pools = new GenPool[num_pools+1])
 {
-    num_pools = _num_pools;
-    fresh_res = _fresh_res;
-    pool_res = _pool_res;
-    num_entries = 0;
-    num_pool_entries = 0;
-    misses = 0;
-    pools = new GenPool[num_pools+1];
 }
 
 GenRepl::~GenRepl()
@@ -250,5 +242,5 @@ GenRepl::findTagPtr(unsigned long index)
 GenRepl *
 GenReplParams::create()
 {
-    return new GenRepl(name, num_pools, fresh_res, pool_res);
+    return new GenRepl(this);
 }
index c1ceb3f4ebcfbfefd705223fc4b8714f5bee5148..09a8d5995ea4cc133f60907a0058bf7e67e06e49 100644 (file)
@@ -40,6 +40,7 @@
 
 #include "base/statistics.hh"
 #include "mem/cache/tags/repl/repl.hh"
+#include "params/GenRepl.hh"
 
 /**
  * Generational Replacement entry.
@@ -139,8 +140,6 @@ class GenPool
 class GenRepl : public Repl
 {
   public:
-    /** The array of pools. */
-    GenPool *pools;
     /** The number of pools. */
     int num_pools;
     /** The amount of time to stay in the fresh pool. */
@@ -153,6 +152,8 @@ class GenRepl : public Repl
     int num_pool_entries;
     /** The number of misses. Used as the internal time. */
     Tick misses;
+    /** The array of pools. */
+    GenPool *pools;
 
     // Statistics
 
@@ -170,15 +171,8 @@ class GenRepl : public Repl
      * @}
      */
 
-    /**
-     * Constructs and initializes this replacement policy.
-     * @param name The name of the policy.
-     * @param num_pools The number of pools to use.
-     * @param fresh_res The amount of time to wait in the fresh pool.
-     * @param pool_res The amount of time to wait in the normal pools.
-     */
-    GenRepl(const std::string &name, int num_pools,
-            int fresh_res, int pool_res);
+    typedef GenReplParams Params;
+    GenRepl(const Params *p);
 
     /**
      * Destructor.
index 7c289a5c1de562e62c4e30bec519c0bca6b7434f..cdb5ae4b8ddfaf6076e5e32ca7364ead976d829f 100644 (file)
@@ -58,12 +58,8 @@ class Repl : public SimObject
     /** Pointer to the IIC using this policy. */
     IIC *iic;
 
-    /**
-     * Construct and initialize this polixy.
-     * @param name The instance name of this policy.
-     */
-    Repl (const std::string &name)
-        : SimObject(name)
+    Repl (const Params *params)
+        : SimObject(params)
     {
         iic = NULL;
     }
index b40709eb2e93d341e63765d4fddc55b46c6740e7..ce2a1107e6a7f52a9425aedf187cbc3bccbbd461 100644 (file)
@@ -35,9 +35,12 @@ MemObject::MemObject(const Params *params)
 {
 }
 
-MemObject::MemObject(const std::string &name)
-    : SimObject(name)
+MemObjectParams *
+MemObject::makeParams(const std::string &name)
 {
+    MemObjectParams *params = new MemObjectParams;
+    params->name = name;
+    return params;
 }
 
 void
index 79e555cdabfc9afe2b10baf63be12e1b1e0c9a6c..33b56dfd4094c9637b262fe96c1c8bf3a9abfb44 100644 (file)
@@ -49,7 +49,6 @@ class MemObject : public SimObject
   public:
     typedef MemObjectParams Params;
     MemObject(const Params *params);
-    MemObject(const std::string &name);
 
     const Params *
     params() const
@@ -57,6 +56,10 @@ class MemObject : public SimObject
         return dynamic_cast<const Params *>(_params);
     }
 
+  protected:
+    // static: support for old-style constructors (call manually)
+    static Params *makeParams(const std::string &name);
+
   public:
     /** Additional function to return the Port of a memory object. */
     virtual Port *getPort(const std::string &if_name, int idx = -1) = 0;
index 7f71550c6c4df0375f6a695009a17110689a50ac..2280fc0e3a81b920266ab02cf789bfc25a03bab8 100644 (file)
@@ -53,7 +53,7 @@ class SimObject {
     void resume();
     void switchOut();
     void takeOverFrom(BaseCPU *cpu);
-    SimObject(const std::string &_name);
+    SimObject(const SimObjectParams *p);
 };
 
 int connectPorts(SimObject *o1, const std::string &name1, int i1,
index 82b86ca84c561532406ceace2bcb5101d5955fec..9a20c7c565e808b6cb6afdc798cc19dc39c245c7 100644 (file)
@@ -129,7 +129,7 @@ class InstRecord
 class InstTracer : public SimObject
 {
   public:
-    InstTracer(const std::string & name) : SimObject(name)
+    InstTracer(const Params *p) : SimObject(p)
     {}
 
     virtual ~InstTracer()
index 1e6395d550efba3be6d6a086a96020996423ba66..4fa5c7aada0d71159d6cb5f1d8ce79cde08375aa 100644 (file)
@@ -88,7 +88,7 @@ Process::Process(const string &nm,
                  int stdin_fd,         // initial I/O descriptors
                  int stdout_fd,
                  int stderr_fd)
-    : SimObject(nm), system(_system)
+    : SimObject(makeParams(nm)), system(_system)
 {
     M5_pid = system->allocatePID();
     // initialize first 3 fds (stdin, stdout, stderr)
index 67604e24c369c78b120a0ecab9c8bbf325cf5f56..907f015dc4927d4179f572f5345cc20520ce6f0f 100644 (file)
@@ -70,25 +70,13 @@ SimObject::SimObject(const Params *p)
 }
 
 SimObjectParams *
-makeParams(const string &name)
+SimObject::makeParams(const std::string &name)
 {
     SimObjectParams *params = new SimObjectParams;
     params->name = name;
-
     return params;
 }
 
-SimObject::SimObject(const string &_name)
-    : _params(makeParams(_name))
-{
-#ifdef DEBUG
-    doDebugBreak = false;
-#endif
-
-    simObjectList.push_back(this);
-    state = Running;
-}
-
 void
 SimObject::init()
 {
index 2e99a85bfde28b9ffa06ed02b0cefef7660a019f..b70f1d5d3f282528e73f4cf78b289ceb55910690 100644 (file)
@@ -84,9 +84,14 @@ class SimObject : public Serializable, protected StartupCallback
     typedef SimObjectParams Params;
     const Params *params() const { return _params; }
     SimObject(const Params *_params);
-    SimObject(const std::string &_name);
     virtual ~SimObject() {}
 
+  protected:
+    // static: support for old-style constructors (call manually)
+    static Params *makeParams(const std::string &name);
+
+  public:
+
     virtual const std::string name() const { return params()->name; }
 
     // initialization pass of all objects.
index 512d4bdb58bd3507509e4afbb7537dd6eccabf71..41c1b94e391be768f6ff4b99cc57fc474b139aae 100644 (file)
@@ -57,7 +57,7 @@ vector<System *> System::systemList;
 int System::numSystemsRunning = 0;
 
 System::System(Params *p)
-    : SimObject(p->name), physmem(p->physmem), numcpus(0),
+    : SimObject(p), physmem(p->physmem), numcpus(0),
 #if FULL_SYSTEM
       init_param(p->init_param),
       functionalPort(p->name + "-fport"),
index 4239b4cf30bf6857cd1bb822aa652e9a39122ce0..b5e341185436510b225d1cde9dd60fc02d507ea7 100644 (file)
@@ -42,7 +42,7 @@ class Packet;
 class GenericTLB : public SimObject
 {
   protected:
-    GenericTLB(const std::string &name) : SimObject(name)
+    GenericTLB(const Params *p) : SimObject(p)
     {}
 
   public: