ARM: For non-cachable accesses set the UNCACHABLE flag
authorGene Wu <Gene.Wu@arm.com>
Mon, 23 Aug 2010 16:18:41 +0000 (11:18 -0500)
committerGene Wu <Gene.Wu@arm.com>
Mon, 23 Aug 2010 16:18:41 +0000 (11:18 -0500)
src/arch/arm/tlb.cc

index b7e95176754e12ba645b621d9fd4b26edeab2354..afa45901a64ae07a934452e752e19a82a24b1e86 100644 (file)
@@ -360,6 +360,7 @@ TLB::translateFs(RequestPtr req, ThreadContext *tc, Mode mode,
     // a bit of a hack but this effectively clrears this processors monitor
     if (flags & Clrex){
        req->setPaddr(0);
+       req->setFlags(Request::UNCACHEABLE);
        return NoFault;
     }
     if (!is_fetch) {
@@ -430,7 +431,8 @@ TLB::translateFs(RequestPtr req, ThreadContext *tc, Mode mode,
             outerAttrs: %d\n",
             te->shareable, te->innerAttrs, te->outerAttrs);
     setAttr(te->attributes);
-
+    if (te->nonCacheable)
+        req->setFlags(Request::UNCACHEABLE);
     uint32_t dacr = tc->readMiscReg(MISCREG_DACR);
     switch ( (dacr >> (te->domain * 2)) & 0x3) {
       case 0: