Added ability to specify system type/revision in config file. This
way a Tru64 system can be either Tlaser (by default) or Tsunami. Added debugSymbolTable to Tru64 for symbol printing in InstExec Trace cpu/exetrace.cc: Fixed bug if debugSymbolTable doesn't exist, we shouldn't try to look something up in it. kern/tru64/tru64_system.hh: Added ability to specify system type/revision in config file. This way a Tru64 system can be either Tlaser (by default) or Tsunami. --HG-- extra : convert_revision : c69a7411f0aa118ca5a766e43b7ceb7a5bb04cdf
This commit is contained in:
parent
ebd4aa6548
commit
59cb44385a
3 changed files with 18 additions and 7 deletions
|
@ -67,7 +67,7 @@ Trace::InstRecord::dump(ostream &outs)
|
||||||
|
|
||||||
|
|
||||||
std::string str;
|
std::string str;
|
||||||
if (debugSymbolTable->findNearestSymbol(PC, str))
|
if ((debugSymbolTable) && (debugSymbolTable->findNearestSymbol(PC, str)))
|
||||||
outs << "@" << setw(17) << str << " : ";
|
outs << "@" << setw(17) << str << " : ";
|
||||||
else
|
else
|
||||||
outs << "0x" << hex << PC << " : ";
|
outs << "0x" << hex << PC << " : ";
|
||||||
|
|
|
@ -42,18 +42,22 @@
|
||||||
#include "targetarch/isa_traits.hh"
|
#include "targetarch/isa_traits.hh"
|
||||||
#include "targetarch/vtophys.hh"
|
#include "targetarch/vtophys.hh"
|
||||||
|
|
||||||
|
extern SymbolTable *debugSymbolTable;
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
Tru64System::Tru64System(const string _name, const uint64_t _init_param,
|
Tru64System::Tru64System(const string _name, const uint64_t _init_param,
|
||||||
MemoryController *_memCtrl, PhysicalMemory *_physmem,
|
MemoryController *_memCtrl, PhysicalMemory *_physmem,
|
||||||
const string &kernel_path, const string &console_path,
|
const string &kernel_path, const string &console_path,
|
||||||
const string &palcode, const string &boot_osflags,
|
const string &palcode, const string &boot_osflags,
|
||||||
const bool _bin, const vector<string> &_binned_fns)
|
const bool _bin, const vector<string> &_binned_fns,
|
||||||
|
const uint64_t system_type, const uint64_t system_rev)
|
||||||
: System(_name, _init_param, _memCtrl, _physmem, _bin,_binned_fns),
|
: System(_name, _init_param, _memCtrl, _physmem, _bin,_binned_fns),
|
||||||
bin(_bin), binned_fns(_binned_fns)
|
bin(_bin), binned_fns(_binned_fns)
|
||||||
{
|
{
|
||||||
kernelSymtab = new SymbolTable;
|
kernelSymtab = new SymbolTable;
|
||||||
consoleSymtab = new SymbolTable;
|
consoleSymtab = new SymbolTable;
|
||||||
|
debugSymbolTable = kernelSymtab;
|
||||||
|
|
||||||
ObjectFile *kernel = createObjectFile(kernel_path);
|
ObjectFile *kernel = createObjectFile(kernel_path);
|
||||||
if (kernel == NULL)
|
if (kernel == NULL)
|
||||||
|
@ -130,8 +134,8 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
|
||||||
char *hwprb = (char *)physmem->dma_addr(paddr, sizeof(uint64_t));
|
char *hwprb = (char *)physmem->dma_addr(paddr, sizeof(uint64_t));
|
||||||
|
|
||||||
if (hwprb) {
|
if (hwprb) {
|
||||||
*(uint64_t*)(hwprb+0x50) = 12; // Tlaser
|
*(uint64_t*)(hwprb+0x50) = system_type;
|
||||||
*(uint64_t*)(hwprb+0x58) = (2<<1);
|
*(uint64_t*)(hwprb+0x58) = system_rev;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
panic("could not translate hwprb addr to set system type/variation\n");
|
panic("could not translate hwprb addr to set system type/variation\n");
|
||||||
|
@ -260,6 +264,8 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(Tru64System)
|
||||||
Param<string> pal_code;
|
Param<string> pal_code;
|
||||||
Param<string> boot_osflags;
|
Param<string> boot_osflags;
|
||||||
VectorParam<string> binned_fns;
|
VectorParam<string> binned_fns;
|
||||||
|
Param<uint64_t> system_type;
|
||||||
|
Param<uint64_t> system_rev;
|
||||||
|
|
||||||
END_DECLARE_SIM_OBJECT_PARAMS(Tru64System)
|
END_DECLARE_SIM_OBJECT_PARAMS(Tru64System)
|
||||||
|
|
||||||
|
@ -274,7 +280,10 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(Tru64System)
|
||||||
INIT_PARAM(pal_code, "file that contains palcode"),
|
INIT_PARAM(pal_code, "file that contains palcode"),
|
||||||
INIT_PARAM_DFLT(boot_osflags, "flags to pass to the kernel during boot",
|
INIT_PARAM_DFLT(boot_osflags, "flags to pass to the kernel during boot",
|
||||||
"a"),
|
"a"),
|
||||||
INIT_PARAM(binned_fns, "functions to be broken down and binned")
|
INIT_PARAM(binned_fns, "functions to be broken down and binned"),
|
||||||
|
INIT_PARAM_DFLT(system_type, "Type of system we are emulating", 12),
|
||||||
|
INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 2<<1)
|
||||||
|
|
||||||
|
|
||||||
END_INIT_SIM_OBJECT_PARAMS(Tru64System)
|
END_INIT_SIM_OBJECT_PARAMS(Tru64System)
|
||||||
|
|
||||||
|
@ -283,7 +292,7 @@ CREATE_SIM_OBJECT(Tru64System)
|
||||||
Tru64System *sys = new Tru64System(getInstanceName(), init_param, mem_ctl,
|
Tru64System *sys = new Tru64System(getInstanceName(), init_param, mem_ctl,
|
||||||
physmem, kernel_code, console_code,
|
physmem, kernel_code, console_code,
|
||||||
pal_code, boot_osflags, bin,
|
pal_code, boot_osflags, bin,
|
||||||
binned_fns);
|
binned_fns, system_type, system_rev);
|
||||||
|
|
||||||
return sys;
|
return sys;
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,9 @@ class Tru64System : public System
|
||||||
const std::string &palcode,
|
const std::string &palcode,
|
||||||
const std::string &boot_osflags,
|
const std::string &boot_osflags,
|
||||||
const bool _bin,
|
const bool _bin,
|
||||||
const std::vector<string> &binned_fns);
|
const std::vector<string> &binned_fns,
|
||||||
|
const uint64_t system_type,
|
||||||
|
const uint64_t system_rev);
|
||||||
~Tru64System();
|
~Tru64System();
|
||||||
|
|
||||||
int registerExecContext(ExecContext *xc);
|
int registerExecContext(ExecContext *xc);
|
||||||
|
|
Loading…
Reference in a new issue