summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/alpha/tlb.cc4
-rw-r--r--src/cpu/simple/base.cc5
2 files changed, 6 insertions, 3 deletions
diff --git a/src/arch/alpha/tlb.cc b/src/arch/alpha/tlb.cc
index 3ab65e664..e9f126f12 100644
--- a/src/arch/alpha/tlb.cc
+++ b/src/arch/alpha/tlb.cc
@@ -292,6 +292,10 @@ ITB::regStats()
Fault
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())) {
// strip off PAL PC marker (lsb is 1)
req->setPaddr((req->getVaddr() & ~3) & PAddrImplMask);
diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc
index 877dc5bd4..c9d4f4c8f 100644
--- a/src/cpu/simple/base.cc
+++ b/src/cpu/simple/base.cc
@@ -335,9 +335,8 @@ BaseSimpleCPU::setupFetchRequest(Request *req)
thread->readNextPC());
#endif
- req->setVirt(0, thread->readPC() & ~3, sizeof(MachInst),
- (FULL_SYSTEM && (thread->readPC() & 1)) ? PHYSICAL : 0,
- thread->readPC());
+ req->setVirt(0, thread->readPC() & ~3, sizeof(MachInst), 0,
+ thread->readPC());
Fault fault = thread->translateInstReq(req);