changeset d8ab33f5ff9a in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=d8ab33f5ff9a
description:
        Return an UnimpFault for an ITB translation of an uncachable address. 
We don't support fetching from uncached addresses in Alpha and it means that a 
speculative fetch can clobber device registers.

diffstat:

0 files changed

diffs (46 lines):

diff -r a5ff5e57fafd -r d8ab33f5ff9a src/arch/alpha/tlb.cc
--- a/src/arch/alpha/tlb.cc     Mon Aug 11 14:47:49 2008 -0700
+++ b/src/arch/alpha/tlb.cc     Wed Aug 13 16:29:59 2008 -0400
@@ -116,7 +116,7 @@
 
 
 Fault
-TLB::checkCacheability(RequestPtr &req)
+TLB::checkCacheability(RequestPtr &req, bool itb)
 {
 // in Alpha, cacheability is controlled by upper-level bits of the
 // physical address
@@ -148,6 +148,12 @@
             req->setPaddr(req->getPaddr() & PAddrUncachedMask);
 #endif
         }
+        // We shouldn't be able to read from an uncachable address in Alpha as
+        // we don't have a ROM and we don't want to try to fetch from a device 
+        // register as we destroy any data that is clear-on-read. 
+        if (req->isUncacheable() && itb) 
+            return new UnimpFault("CPU trying to fetch from uncached I/O");
+
     }
     return NoFault;
 }
@@ -390,7 +396,7 @@
     if (req->getPaddr() & ~PAddrImplMask)
         return genMachineCheckFault();
 
-    return checkCacheability(req);
+    return checkCacheability(req, true);
 
 }
 
diff -r a5ff5e57fafd -r d8ab33f5ff9a src/arch/alpha/tlb.hh
--- a/src/arch/alpha/tlb.hh     Mon Aug 11 14:47:49 2008 -0700
+++ b/src/arch/alpha/tlb.hh     Wed Aug 13 16:29:59 2008 -0400
@@ -92,7 +92,7 @@
             return (unimplBits == 0) || (unimplBits == EV5::VAddrUnImplMask);
         }
 
-        static Fault checkCacheability(RequestPtr &req);
+        static Fault checkCacheability(RequestPtr &req, bool itb = false);
 
         // Checkpointing
         virtual void serialize(std::ostream &os);
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to