Mem: Change the CLREX flag to CLEAR_LL.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 13 Oct 2010 08:57:31 +0000 (01:57 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 13 Oct 2010 08:57:31 +0000 (01:57 -0700)
CLREX is the name of an ARM instruction, not a name for this generic flag.

src/arch/arm/isa/insts/misc.isa
src/arch/arm/isa/templates/misc.isa
src/arch/arm/tlb.cc
src/mem/cache/cache_impl.hh
src/mem/request.hh

index f2a80a111c3d738f99194319f83c2241fd73734b..5742f84ab63efee1dffd74b9b61b0bf7d15da86f 100644 (file)
@@ -671,7 +671,8 @@ let {{
     exec_output += PredOpExecute.subst(setendIop)
 
     clrexCode = '''
-        unsigned memAccessFlags = Request::CLREX|3|Request::LLSC;
+        unsigned memAccessFlags = Request::CLEAR_LL |
+            ArmISA::TLB::AlignWord | Request::LLSC;
         fault = xc->read(0, (uint32_t&)Mem, memAccessFlags);
     '''
     clrexIop = InstObjParams("clrex", "Clrex","PredOp",
index 46af3f5b14b6f71a1bc6520e2be9c5f1dce22cd7..f8dac05f85fe38bd2c96064c49c70f1b5d5561da 100644 (file)
@@ -367,7 +367,8 @@ def template ClrexInitiateAcc {{
         if (%(predicate_test)s)
         {
             if (fault == NoFault) {
-                unsigned memAccessFlags = Request::CLREX|3|Request::LLSC;
+                unsigned memAccessFlags = Request::CLEAR_LL |
+                    ArmISA::TLB::AlignWord | Request::LLSC;
                 fault = xc->read(0, (uint32_t&)Mem, memAccessFlags);
             }
         } else {
index 4e98aaf7b50713c3e1d631cf61c4203775b1eb41..c0ebb52b2143b5f496625bbbab48e278141a81e5 100644 (file)
@@ -376,10 +376,10 @@ TLB::translateFs(RequestPtr req, ThreadContext *tc, Mode mode,
     // If this is a clrex instruction, provide a PA of 0 with no fault
     // This will force the monitor to set the tracked address to 0
     // a bit of a hack but this effectively clrears this processors monitor
-    if (flags & Request::CLREX){
+    if (flags & Request::CLEAR_LL){
        req->setPaddr(0);
        req->setFlags(Request::UNCACHEABLE);
-       req->setFlags(Request::CLREX);
+       req->setFlags(Request::CLEAR_LL);
        return NoFault;
     }
     if ((req->isInstFetch() && (!sctlr.i)) ||
index 86bf79b7b77174ac1e8f53ffd5d4554281fe7b9d..7d19ff7a1b720d651fd8ffad5dc9beeb3320318f 100644 (file)
@@ -306,7 +306,7 @@ Cache<TagStore>::access(PacketPtr pkt, BlkType *&blk,
                         int &lat, PacketList &writebacks)
 {
     if (pkt->req->isUncacheable()) {
-        if (pkt->req->isClrex()) {
+        if (pkt->req->isClearLL()) {
             tags->clearLocks();
         } else {
            blk = tags->findBlock(pkt->getAddr());
@@ -449,7 +449,7 @@ Cache<TagStore>::timingAccess(PacketPtr pkt)
     }
 
     if (pkt->req->isUncacheable()) {
-        if (pkt->req->isClrex()) {
+        if (pkt->req->isClearLL()) {
             tags->clearLocks();
         } else {
             BlkType *blk = tags->findBlock(pkt->getAddr());
index 7149f3199fd2fc5444d08f1cfdd8a08c3fe053c2..45551dd03761fabc90ead727b8f0c574224bac89 100644 (file)
@@ -72,7 +72,7 @@ class Request : public FastAlloc
     /** This request is to a memory mapped register. */
     static const FlagsType MMAPED_IPR                  = 0x00002000;
     /** This request is a clear exclusive. */
-    static const FlagsType CLREX                       = 0x00004000;
+    static const FlagsType CLEAR_LL                    = 0x00004000;
 
     /** The request should ignore unaligned access faults */
     static const FlagsType NO_ALIGN_FAULT              = 0x00020000;
@@ -458,7 +458,7 @@ class Request : public FastAlloc
     bool isSwap() const { return _flags.isSet(MEM_SWAP|MEM_SWAP_COND); }
     bool isCondSwap() const { return _flags.isSet(MEM_SWAP_COND); }
     bool isMmapedIpr() const { return _flags.isSet(MMAPED_IPR); }
-    bool isClrex() const { return _flags.isSet(CLREX); }
+    bool isClearLL() const { return _flags.isSet(CLEAR_LL); }
 
     bool
     isMisaligned() const