Checker: Fix checker CPU ports

This patch updates how the checker CPU handles the ports such that the
regressions will once again run without causing a panic.

A minor amount of tidying up was also done as part of this patch.
This commit is contained in:
Andreas Hansson 2012-08-28 14:30:24 -04:00
parent d090f4d930
commit 105ad88d35
2 changed files with 21 additions and 19 deletions

View file

@ -65,7 +65,8 @@ CheckerCPU::init()
}
CheckerCPU::CheckerCPU(Params *p)
: BaseCPU(p, true), thread(NULL), tc(NULL)
: BaseCPU(p, true), systemPtr(NULL), icachePort(NULL), dcachePort(NULL),
tc(NULL), thread(NULL)
{
memReq = NULL;
curStaticInst = NULL;
@ -83,9 +84,7 @@ CheckerCPU::CheckerCPU(Params *p)
warnOnlyOnLoadError = p->warnOnlyOnLoadError;
itb = p->itb;
dtb = p->dtb;
systemPtr = NULL;
workload = p->workload;
thread = NULL;
updateOnError = true;
}

View file

@ -98,42 +98,40 @@ class CheckerCPU : public BaseCPU
public:
virtual void init();
public:
typedef CheckerCPUParams Params;
const Params *params() const
{ return reinterpret_cast<const Params *>(_params); }
CheckerCPU(Params *p);
virtual ~CheckerCPU();
std::vector<Process*> workload;
void setSystem(System *system);
System *systemPtr;
void setIcachePort(CpuPort *icache_port);
CpuPort *icachePort;
void setDcachePort(CpuPort *dcache_port);
CpuPort *dcachePort;
CpuPort &getDataPort()
{
panic("Not supported on checker!");
// the checker does not have ports on its own so return the
// data port of the actual CPU core
assert(dcachePort);
return *dcachePort;
}
CpuPort &getInstPort()
{
panic("Not supported on checker!");
// the checker does not have ports on its own so return the
// data port of the actual CPU core
assert(icachePort);
return *icachePort;
}
public:
// Primary thread being run.
SimpleThread *thread;
protected:
std::vector<Process*> workload;
System *systemPtr;
CpuPort *icachePort;
CpuPort *dcachePort;
ThreadContext *tc;
@ -167,6 +165,11 @@ class CheckerCPU : public BaseCPU
std::queue<int> miscRegIdxs;
public:
// Primary thread being run.
SimpleThread *thread;
TheISA::TLB* getITBPtr() { return itb; }
TheISA::TLB* getDTBPtr() { return dtb; }