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:
Andrew Schultz 2003-10-21 17:18:17 -04:00
parent ae232a883a
commit f600cff5c2
5 changed files with 17 additions and 9 deletions

View file

@ -2407,6 +2407,7 @@ decode OPCODE default Unknown::unknown() {
if (!xc->misspeculating())
m5_exit();
}}, No_OpClass);
0x30: initparam({{ Ra = xc->cpu->system->init_param; }});
}
}

View file

@ -43,11 +43,11 @@
using namespace std;
Tru64System::Tru64System(const string _name, MemoryController *_memCtrl,
PhysicalMemory *_physmem, const string &kernel_path,
const string &console_path, const string &palcode,
const string &boot_osflags)
: System(_name, _memCtrl, _physmem)
Tru64System::Tru64System(const string _name, const int _init_param,
MemoryController *_memCtrl, PhysicalMemory *_physmem,
const string &kernel_path, const string &console_path,
const string &palcode, const string &boot_osflags)
: System(_name, _init_param, _memCtrl, _physmem)
{
kernelSymtab = new SymbolTable;
consoleSymtab = new SymbolTable;
@ -208,6 +208,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(Tru64System)
SimObjectParam<MemoryController *> mem_ctl;
SimObjectParam<PhysicalMemory *> physmem;
Param<int> init_param;
Param<string> kernel_code;
Param<string> console_code;
@ -220,6 +221,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(Tru64System)
INIT_PARAM(mem_ctl, "memory controller"),
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(console_code, "file that contains the console code"),
INIT_PARAM(pal_code, "file that contains palcode"),
@ -230,9 +232,9 @@ END_INIT_SIM_OBJECT_PARAMS(Tru64System)
CREATE_SIM_OBJECT(Tru64System)
{
Tru64System *sys = new Tru64System(getInstanceName(), mem_ctl, physmem,
kernel_code, console_code, pal_code,
boot_osflags);
Tru64System *sys = new Tru64System(getInstanceName(), init_param, mem_ctl,
physmem, kernel_code, console_code,
pal_code, boot_osflags);
return sys;
}

View file

@ -79,6 +79,7 @@ class Tru64System : public System
public:
Tru64System(const std::string _name,
const int _init_param,
MemoryController *_memCtrl,
PhysicalMemory *_physmem,
const std::string &kernel_path,

View file

@ -37,9 +37,11 @@ vector<System *> System::systemList;
int System::numSystemsRunning = 0;
System::System(const std::string _name,
const int _init_param,
MemoryController *_memCtrl,
PhysicalMemory *_physmem)
: SimObject(_name),
init_param(_init_param),
memCtrl(_memCtrl),
physmem(_physmem)
{

View file

@ -46,6 +46,7 @@ class ExecContext;
class System : public SimObject
{
public:
const int init_param;
MemoryController *memCtrl;
PhysicalMemory *physmem;
@ -55,7 +56,8 @@ class System : public SimObject
void registerExecContext(ExecContext *xc);
public:
System(const std::string name, MemoryController *, PhysicalMemory *);
System(const std::string _name, const int _init_param,
MemoryController *, PhysicalMemory *);
~System();
virtual void init(ExecContext *xc) = 0;