summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-04-11 14:02:03 +0000
committerGabe Black <gblack@eecs.umich.edu>2007-04-11 14:02:03 +0000
commit54abc8b3372287d9b286f5a0dc04d25a916bf889 (patch)
tree6659d2b086b1c6b4fe046ba94d25f8869c3d50eb /src
parentfcc35a67e0cfa2e627ebba3fca0252bfb18f03c6 (diff)
downloadgem5-54abc8b3372287d9b286f5a0dc04d25a916bf889.tar.xz
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
Diffstat (limited to 'src')
-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);