arm, mem: Remove unused CLEAR_LL request flag
authorAndreas Hansson <andreas.hansson@arm.com>
Fri, 21 Aug 2015 11:03:25 +0000 (07:03 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Fri, 21 Aug 2015 11:03:25 +0000 (07:03 -0400)
Cleaning up dead code. The CLREX stores zero directly to
MISCREG_LOCKFLAG and so the request flag is no longer needed. The
corresponding functionality in the cache tags is also removed.

src/arch/arm/tlb.cc
src/mem/cache/cache.cc
src/mem/cache/tags/base.hh
src/mem/cache/tags/base_set_assoc.cc
src/mem/cache/tags/base_set_assoc.hh
src/mem/cache/tags/fa_lru.cc
src/mem/cache/tags/fa_lru.hh
src/mem/request.hh

index 11075f02cf48a8211034c3227012324e65681f9c..aee6a251a44c7580630cfe0ade7488a8e236a28d 100644 (file)
@@ -977,16 +977,6 @@ TLB::translateFs(RequestPtr req, ThreadContext *tc, Mode mode,
                  "flags %#x tranType 0x%x\n", vaddr_tainted, mode, isStage2,
                  scr, sctlr, flags, tranType);
 
-    // 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::CLEAR_LL){
-        // @todo: check implications of security extensions
-       req->setPaddr(0);
-       req->setFlags(Request::UNCACHEABLE | Request::STRICT_ORDER);
-       req->setFlags(Request::CLEAR_LL);
-       return NoFault;
-    }
     if ((req->isInstFetch() && (!sctlr.i)) ||
         ((!req->isInstFetch()) && (!sctlr.c))){
        req->setFlags(Request::UNCACHEABLE | Request::STRICT_ORDER);
index 215fc323a80bb0b4fc35c69dc98694e928c6cea4..81c2d35e13e7dc8f6e2f8ccb0a56eb65cb330730 100644 (file)
@@ -288,9 +288,6 @@ Cache::access(PacketPtr pkt, CacheBlk *&blk, Cycles &lat,
                 pkt->req->isInstFetch() ? " (ifetch)" : "",
                 pkt->getAddr());
 
-        if (pkt->req->isClearLL())
-            tags->clearLocks();
-
         // flush and invalidate any existing block
         CacheBlk *old_blk(tags->findBlock(pkt->getAddr(), pkt->isSecure()));
         if (old_blk && old_blk->isValid()) {
index 05f51167e432e3dd58b93006639fe219df560ed1..f1ef947a5330be52048799ee0eb88c28bc5fad7f 100644 (file)
@@ -170,12 +170,6 @@ class BaseTags : public ClockedObject
      */
     virtual void computeStats() {}
 
-    /**
-     *iterated through all blocks and clear all locks
-     *Needed to clear all lock tracking at once
-     */
-    virtual void clearLocks() {}
-
     /**
      * Print all tags used
      */
index 8c48337bc56e0783fa5ea6fcabf74974e4b2905f..6fc186d193a5eb648480c7860c438105daaa8d10 100644 (file)
@@ -135,14 +135,6 @@ BaseSetAssoc::findBlockBySetAndWay(int set, int way) const
     return sets[set].blks[way];
 }
 
-void
-BaseSetAssoc::clearLocks()
-{
-    for (int i = 0; i < numBlocks; i++){
-        blks[i].clearLoadLocks();
-    }
-}
-
 std::string
 BaseSetAssoc::print() const {
     std::string cache_state;
index 78c7489fec718bc55b515b94fbbc165d10bac5aa..9fe23ea9179d63bdd897615a80602808219ff20b 100644 (file)
@@ -380,12 +380,6 @@ public:
         return ((tag << tagShift) | ((Addr)set << setShift));
     }
 
-    /**
-     *iterated through all blocks and clear all locks
-     *Needed to clear all lock tracking at once
-     */
-    virtual void clearLocks();
-
     /**
      * Called at end of simulation to complete average block reference stats.
      */
index a53d256655a3da3510eb0c48d972dbf39283defa..3f717e3a7f24c16e3912f4c8da8b1754edf814e3 100644 (file)
@@ -317,14 +317,6 @@ FALRU::check()
     return true;
 }
 
-void
-FALRU::clearLocks()
-{
-    for (int i = 0; i < numBlocks; i++){
-        blks[i].clearLoadLocks();
-    }
-}
-
 FALRU *
 FALRUParams::create()
 {
index 1c6bd2431b25dc0229bb5496f4017be50854db0c..def4c9b2ccfbc99856e9e91e833bc848472fc495 100644 (file)
@@ -305,12 +305,6 @@ public:
         return (tag);
     }
 
-    /**
-     *iterated through all blocks and clear all locks
-     *Needed to clear all lock tracking at once
-     */
-    virtual void clearLocks();
-
     /**
      * @todo Implement as in lru. Currently not used
      */
index fb684ef2f6b444d7de37b00ca5af7dfe03f92c78..d40f610f2f9436fc304db443809b77bc43a9904e 100644 (file)
@@ -123,8 +123,6 @@ class Request
         STRICT_ORDER                = 0x00000800,
         /** This request is to a memory mapped register. */
         MMAPPED_IPR                 = 0x00002000,
-        /** This request is a clear exclusive. */
-        CLEAR_LL                    = 0x00004000,
         /** This request is made in privileged mode. */
         PRIVILEGED                  = 0x00008000,
 
@@ -655,7 +653,6 @@ class Request
     bool isSwap() const { return _flags.isSet(MEM_SWAP|MEM_SWAP_COND); }
     bool isCondSwap() const { return _flags.isSet(MEM_SWAP_COND); }
     bool isMmappedIpr() const { return _flags.isSet(MMAPPED_IPR); }
-    bool isClearLL() const { return _flags.isSet(CLEAR_LL); }
     bool isSecure() const { return _flags.isSet(SECURE); }
     bool isPTWalk() const { return _flags.isSet(PT_WALK); }
 };