SE/FS: Record the system pointer all the time for the simple CPU.

This pointer was only being stored in code that came from SE mode. The system
pointer is always meaningful and available, so it should always be stored.
This commit is contained in:
Gabe Black 2012-02-10 02:05:31 -08:00
parent cdb32860b4
commit e80ebc308f
3 changed files with 9 additions and 7 deletions

View file

@ -94,8 +94,8 @@ BaseSimpleCPU::BaseSimpleCPU(BaseSimpleCPUParams *p)
if (FullSystem)
thread = new SimpleThread(this, 0, p->system, p->itb, p->dtb);
else
thread = new SimpleThread(this, /* thread_num */ 0, p->workload[0],
p->itb, p->dtb);
thread = new SimpleThread(this, /* thread_num */ 0, p->system,
p->workload[0], p->itb, p->dtb);
thread->setStatus(ThreadContext::Halted);

View file

@ -59,9 +59,11 @@
using namespace std;
// constructor
SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, Process *_process,
TheISA::TLB *_itb, TheISA::TLB *_dtb)
: ThreadState(_cpu, _thread_num, _process), itb(_itb), dtb(_dtb)
SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, System *_sys,
Process *_process, TheISA::TLB *_itb,
TheISA::TLB *_dtb)
: ThreadState(_cpu, _thread_num, _process), system(_sys), itb(_itb),
dtb(_dtb)
{
clearArchRegs();
tc = new ProxyThreadContext<SimpleThread>(this);

View file

@ -137,8 +137,8 @@ class SimpleThread : public ThreadState
TheISA::TLB *_itb, TheISA::TLB *_dtb,
bool use_kernel_stats = true);
// SE
SimpleThread(BaseCPU *_cpu, int _thread_num, Process *_process,
TheISA::TLB *_itb, TheISA::TLB *_dtb);
SimpleThread(BaseCPU *_cpu, int _thread_num, System *_system,
Process *_process, TheISA::TLB *_itb, TheISA::TLB *_dtb);
SimpleThread();