_contextId(0), _threadId(_tid), lastActivate(0), lastSuspend(0),
profile(NULL), profileNode(NULL), profilePC(0), quiesceEvent(NULL),
kernelStats(NULL), process(_process), physProxy(NULL), virtProxy(NULL),
- proxy(NULL), funcExeInst(0), storeCondFailures(0)
+ funcExeInst(0), storeCondFailures(0)
{
}
delete physProxy;
if (virtProxy != NULL)
delete virtProxy;
- if (proxy != NULL)
- delete proxy;
}
void
assert(virtProxy == NULL);
virtProxy = new FSTranslatingPortProxy(tc);
} else {
- assert(proxy == NULL);
- proxy = new SETranslatingPortProxy(baseCpu->getDataPort(),
+ assert(virtProxy == NULL);
+ virtProxy = new SETranslatingPortProxy(baseCpu->getDataPort(),
process,
SETranslatingPortProxy::NextPage);
}
ThreadState::getMemProxy()
{
assert(!FullSystem);
- assert(proxy != NULL);
- return *proxy;
+ assert(virtProxy != NULL);
+ return *virtProxy;
}
void
* the se translating port proxy needs to be reinitialized since it
* holds a pointer to the process class.
*/
- if (proxy) {
- delete proxy;
- proxy = NULL;
+ if (virtProxy) {
+ delete virtProxy;
+ virtProxy = NULL;
initMemProxies(NULL);
}
}
/** A translating port proxy, outgoing only, for functional
* accesse to virtual addresses. */
- FSTranslatingPortProxy *virtProxy;
- SETranslatingPortProxy *proxy;
+ PortProxy *virtProxy;
public:
/*