Make the itlb set the PHYSICAL flag on a request when it translates it. This gets it out of the cpu.
--HG-- extra : convert_revision : 20611263b799b5e835116adbf39d2ecc78701eef
This commit is contained in:
parent
fcc35a67e0
commit
54abc8b337
2 changed files with 6 additions and 3 deletions
|
@ -292,6 +292,10 @@ ITB::regStats()
|
||||||
Fault
|
Fault
|
||||||
ITB::translate(RequestPtr &req, ThreadContext *tc) const
|
ITB::translate(RequestPtr &req, ThreadContext *tc) const
|
||||||
{
|
{
|
||||||
|
//If this is a pal pc, then set PHYSICAL
|
||||||
|
if(FULL_SYSTEM && PcPAL(req->getPC()))
|
||||||
|
req->setFlags(req->getFlags() | PHYSICAL);
|
||||||
|
|
||||||
if (PcPAL(req->getPC())) {
|
if (PcPAL(req->getPC())) {
|
||||||
// strip off PAL PC marker (lsb is 1)
|
// strip off PAL PC marker (lsb is 1)
|
||||||
req->setPaddr((req->getVaddr() & ~3) & PAddrImplMask);
|
req->setPaddr((req->getVaddr() & ~3) & PAddrImplMask);
|
||||||
|
|
|
@ -335,9 +335,8 @@ BaseSimpleCPU::setupFetchRequest(Request *req)
|
||||||
thread->readNextPC());
|
thread->readNextPC());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
req->setVirt(0, thread->readPC() & ~3, sizeof(MachInst),
|
req->setVirt(0, thread->readPC() & ~3, sizeof(MachInst), 0,
|
||||||
(FULL_SYSTEM && (thread->readPC() & 1)) ? PHYSICAL : 0,
|
thread->readPC());
|
||||||
thread->readPC());
|
|
||||||
|
|
||||||
Fault fault = thread->translateInstReq(req);
|
Fault fault = thread->translateInstReq(req);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue