summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/m5/objects/AlphaConsole.py2
-rw-r--r--python/m5/objects/BaseCPU.py2
-rw-r--r--python/m5/objects/System.py (renamed from python/m5/objects/BaseSystem.py)3
-rw-r--r--python/m5/objects/Tsunami.py2
-rw-r--r--sim/system.cc68
5 files changed, 70 insertions, 7 deletions
diff --git a/python/m5/objects/AlphaConsole.py b/python/m5/objects/AlphaConsole.py
index 9fe31b009..32a137bec 100644
--- a/python/m5/objects/AlphaConsole.py
+++ b/python/m5/objects/AlphaConsole.py
@@ -7,4 +7,4 @@ class AlphaConsole(PioDevice):
disk = Param.SimpleDisk("Simple Disk")
num_cpus = Param.Int(1, "Number of CPUs")
sim_console = Param.SimConsole(Parent.any, "The Simulator Console")
- system = Param.BaseSystem(Parent.any, "system object")
+ system = Param.System(Parent.any, "system object")
diff --git a/python/m5/objects/BaseCPU.py b/python/m5/objects/BaseCPU.py
index 0dc436434..452b97c84 100644
--- a/python/m5/objects/BaseCPU.py
+++ b/python/m5/objects/BaseCPU.py
@@ -9,7 +9,7 @@ class BaseCPU(SimObject):
dtb = Param.AlphaDTB("Data TLB")
itb = Param.AlphaITB("Instruction TLB")
mem = Param.FunctionalMemory("memory")
- system = Param.BaseSystem(Parent.any, "system object")
+ system = Param.System(Parent.any, "system object")
else:
workload = VectorParam.Process("processes to run")
diff --git a/python/m5/objects/BaseSystem.py b/python/m5/objects/System.py
index 457eadb36..c247983c5 100644
--- a/python/m5/objects/BaseSystem.py
+++ b/python/m5/objects/System.py
@@ -1,7 +1,6 @@
from m5 import *
-class BaseSystem(SimObject):
+class System(SimObject):
type = 'BaseSystem'
- abstract = True
boot_cpu_frequency = Param.Frequency(Self.cpu[0].clock.frequency,
"boot processor frequency")
memctrl = Param.MemoryController(Parent.any, "memory controller")
diff --git a/python/m5/objects/Tsunami.py b/python/m5/objects/Tsunami.py
index fa3c18127..c8fd94e2c 100644
--- a/python/m5/objects/Tsunami.py
+++ b/python/m5/objects/Tsunami.py
@@ -5,7 +5,7 @@ from Platform import Platform
class Tsunami(Platform):
type = 'Tsunami'
pciconfig = Param.PciConfigAll("PCI configuration")
- system = Param.BaseSystem(Parent.any, "system")
+ system = Param.System(Parent.any, "system")
class TsunamiCChip(FooPioDevice):
type = 'TsunamiCChip'
diff --git a/sim/system.cc b/sim/system.cc
index c6a65f9d9..8844f13de 100644
--- a/sim/system.cc
+++ b/sim/system.cc
@@ -34,7 +34,7 @@
#include "mem/functional_mem/memory_control.hh"
#include "mem/functional_mem/physical_memory.hh"
#include "targetarch/vtophys.hh"
-#include "sim/param.hh"
+#include "sim/builder.hh"
#include "sim/system.hh"
#include "base/trace.hh"
@@ -269,5 +269,69 @@ printSystems()
System::printSystems();
}
-DEFINE_SIM_OBJECT_CLASS_NAME("System", System)
+BEGIN_DECLARE_SIM_OBJECT_PARAMS(System)
+
+ Param<Tick> boot_cpu_frequency;
+ SimObjectParam<MemoryController *> memctrl;
+ SimObjectParam<PhysicalMemory *> physmem;
+
+ Param<string> kernel;
+ Param<string> console;
+ Param<string> pal;
+
+ Param<string> boot_osflags;
+ Param<string> readfile;
+ Param<unsigned int> init_param;
+
+ Param<uint64_t> system_type;
+ Param<uint64_t> system_rev;
+
+ Param<bool> bin;
+ VectorParam<string> binned_fns;
+ Param<bool> bin_int;
+
+END_DECLARE_SIM_OBJECT_PARAMS(System)
+
+BEGIN_INIT_SIM_OBJECT_PARAMS(System)
+
+ INIT_PARAM(boot_cpu_frequency, "Frequency of the boot CPU"),
+ INIT_PARAM(memctrl, "memory controller"),
+ INIT_PARAM(physmem, "phsyical memory"),
+ INIT_PARAM(kernel, "file that contains the kernel code"),
+ INIT_PARAM(console, "file that contains the console code"),
+ INIT_PARAM(pal, "file that contains palcode"),
+ INIT_PARAM_DFLT(boot_osflags, "flags to pass to the kernel during boot",
+ "a"),
+ INIT_PARAM_DFLT(readfile, "file to read startup script from", ""),
+ INIT_PARAM_DFLT(init_param, "numerical value to pass into simulator", 0),
+ INIT_PARAM_DFLT(system_type, "Type of system we are emulating", 34),
+ INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 1<<10),
+ INIT_PARAM_DFLT(bin, "is this system to be binned", false),
+ INIT_PARAM(binned_fns, "functions to be broken down and binned"),
+ INIT_PARAM_DFLT(bin_int, "is interrupt code binned seperately?", true)
+
+END_INIT_SIM_OBJECT_PARAMS(System)
+
+CREATE_SIM_OBJECT(System)
+{
+ System::Params *p = new System::Params;
+ p->name = getInstanceName();
+ p->boot_cpu_frequency = boot_cpu_frequency;
+ p->memctrl = memctrl;
+ p->physmem = physmem;
+ p->kernel_path = kernel;
+ p->console_path = console;
+ p->palcode = pal;
+ p->boot_osflags = boot_osflags;
+ p->init_param = init_param;
+ p->readfile = readfile;
+ p->system_type = system_type;
+ p->system_rev = system_rev;
+ p->bin = bin;
+ p->binned_fns = binned_fns;
+ p->bin_int = bin_int;
+ return new System(p);
+}
+
+REGISTER_SIM_OBJECT("System", System)