Created new M5 instruction to allow an integer parameter (init_param) to be specified in the INI and then read inside the simulator.
arch/alpha/isa_desc: Added new M5FUNC instruction to put allow reading of init_param inside simulator kern/tru64/tru64_system.cc: kern/tru64/tru64_system.hh: sim/system.cc: sim/system.hh: Added support for init_param --HG-- extra : convert_revision : 8253f0b4239b194d4f04665c9deec1fcdf665c8a
This commit is contained in:
parent
ae232a883a
commit
f600cff5c2
5 changed files with 17 additions and 9 deletions
|
@ -2407,6 +2407,7 @@ decode OPCODE default Unknown::unknown() {
|
||||||
if (!xc->misspeculating())
|
if (!xc->misspeculating())
|
||||||
m5_exit();
|
m5_exit();
|
||||||
}}, No_OpClass);
|
}}, No_OpClass);
|
||||||
|
0x30: initparam({{ Ra = xc->cpu->system->init_param; }});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,11 +43,11 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
Tru64System::Tru64System(const string _name, MemoryController *_memCtrl,
|
Tru64System::Tru64System(const string _name, const int _init_param,
|
||||||
PhysicalMemory *_physmem, const string &kernel_path,
|
MemoryController *_memCtrl, PhysicalMemory *_physmem,
|
||||||
const string &console_path, const string &palcode,
|
const string &kernel_path, const string &console_path,
|
||||||
const string &boot_osflags)
|
const string &palcode, const string &boot_osflags)
|
||||||
: System(_name, _memCtrl, _physmem)
|
: System(_name, _init_param, _memCtrl, _physmem)
|
||||||
{
|
{
|
||||||
kernelSymtab = new SymbolTable;
|
kernelSymtab = new SymbolTable;
|
||||||
consoleSymtab = new SymbolTable;
|
consoleSymtab = new SymbolTable;
|
||||||
|
@ -208,6 +208,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(Tru64System)
|
||||||
|
|
||||||
SimObjectParam<MemoryController *> mem_ctl;
|
SimObjectParam<MemoryController *> mem_ctl;
|
||||||
SimObjectParam<PhysicalMemory *> physmem;
|
SimObjectParam<PhysicalMemory *> physmem;
|
||||||
|
Param<int> init_param;
|
||||||
|
|
||||||
Param<string> kernel_code;
|
Param<string> kernel_code;
|
||||||
Param<string> console_code;
|
Param<string> console_code;
|
||||||
|
@ -220,6 +221,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(Tru64System)
|
||||||
|
|
||||||
INIT_PARAM(mem_ctl, "memory controller"),
|
INIT_PARAM(mem_ctl, "memory controller"),
|
||||||
INIT_PARAM(physmem, "phsyical memory"),
|
INIT_PARAM(physmem, "phsyical memory"),
|
||||||
|
INIT_PARAM_DFLT(init_param, "numerical value to pass into simulator", 0),
|
||||||
INIT_PARAM(kernel_code, "file that contains the kernel code"),
|
INIT_PARAM(kernel_code, "file that contains the kernel code"),
|
||||||
INIT_PARAM(console_code, "file that contains the console code"),
|
INIT_PARAM(console_code, "file that contains the console code"),
|
||||||
INIT_PARAM(pal_code, "file that contains palcode"),
|
INIT_PARAM(pal_code, "file that contains palcode"),
|
||||||
|
@ -230,9 +232,9 @@ END_INIT_SIM_OBJECT_PARAMS(Tru64System)
|
||||||
|
|
||||||
CREATE_SIM_OBJECT(Tru64System)
|
CREATE_SIM_OBJECT(Tru64System)
|
||||||
{
|
{
|
||||||
Tru64System *sys = new Tru64System(getInstanceName(), mem_ctl, physmem,
|
Tru64System *sys = new Tru64System(getInstanceName(), init_param, mem_ctl,
|
||||||
kernel_code, console_code, pal_code,
|
physmem, kernel_code, console_code,
|
||||||
boot_osflags);
|
pal_code, boot_osflags);
|
||||||
|
|
||||||
return sys;
|
return sys;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,6 +79,7 @@ class Tru64System : public System
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Tru64System(const std::string _name,
|
Tru64System(const std::string _name,
|
||||||
|
const int _init_param,
|
||||||
MemoryController *_memCtrl,
|
MemoryController *_memCtrl,
|
||||||
PhysicalMemory *_physmem,
|
PhysicalMemory *_physmem,
|
||||||
const std::string &kernel_path,
|
const std::string &kernel_path,
|
||||||
|
|
|
@ -37,9 +37,11 @@ vector<System *> System::systemList;
|
||||||
int System::numSystemsRunning = 0;
|
int System::numSystemsRunning = 0;
|
||||||
|
|
||||||
System::System(const std::string _name,
|
System::System(const std::string _name,
|
||||||
|
const int _init_param,
|
||||||
MemoryController *_memCtrl,
|
MemoryController *_memCtrl,
|
||||||
PhysicalMemory *_physmem)
|
PhysicalMemory *_physmem)
|
||||||
: SimObject(_name),
|
: SimObject(_name),
|
||||||
|
init_param(_init_param),
|
||||||
memCtrl(_memCtrl),
|
memCtrl(_memCtrl),
|
||||||
physmem(_physmem)
|
physmem(_physmem)
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,6 +46,7 @@ class ExecContext;
|
||||||
class System : public SimObject
|
class System : public SimObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
const int init_param;
|
||||||
MemoryController *memCtrl;
|
MemoryController *memCtrl;
|
||||||
PhysicalMemory *physmem;
|
PhysicalMemory *physmem;
|
||||||
|
|
||||||
|
@ -55,7 +56,8 @@ class System : public SimObject
|
||||||
void registerExecContext(ExecContext *xc);
|
void registerExecContext(ExecContext *xc);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
System(const std::string name, MemoryController *, PhysicalMemory *);
|
System(const std::string _name, const int _init_param,
|
||||||
|
MemoryController *, PhysicalMemory *);
|
||||||
~System();
|
~System();
|
||||||
|
|
||||||
virtual void init(ExecContext *xc) = 0;
|
virtual void init(ExecContext *xc) = 0;
|
||||||
|
|
Loading…
Reference in a new issue