cpuXC = new CPUExecContext(this, /* thread_num */ 0, p->process,
/* asid */ 0);
#endif // !FULL_SYSTEM
+ cpuXC->setStatus(ExecContext::Suspended);
xcProxy = cpuXC->getProxy();
icacheInterface = p->icache_interface;
assert(thread_num == 0);
assert(cpuXC);
- assert(_status == Idle);
+ assert(_status == Idle || _status == SwitchedOut);
notIdleFraction++;
scheduleTickEvent(delay);
_status = Running;
assert(thread_num == 0);
assert(cpuXC);
- assert(_status == Running);
+ assert(_status == Running || _status == SwitchedOut);
notIdleFraction--;
unscheduleTickEvent();
_status = Idle;
Fault fault = cpuXC->read(memReq,data);
if (traceData) {
- traceData->setAddr(addr);
+ traceData->setAddr(memReq->vaddr);
}
return fault;
}