diff options
Diffstat (limited to 'src/mem/cache/mshr.hh')
-rw-r--r-- | src/mem/cache/mshr.hh | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mem/cache/mshr.hh b/src/mem/cache/mshr.hh index 65357b9e6..e5a15b61d 100644 --- a/src/mem/cache/mshr.hh +++ b/src/mem/cache/mshr.hh @@ -83,12 +83,18 @@ class MSHR : public Packet::SenderState, public Printable /** Will we have a dirty copy after this request? */ bool pendingDirty; + /** Will we have a clean copy after this request? (i.e. is writeback) */ + bool pendingClean; + /** Did we snoop an invalidate while waiting for data? */ bool postInvalidate; /** Did we snoop a read while waiting for data? */ bool postDowngrade; + /** Did we get WriteInvalidate'd (and therefore obsoleted)? */ + bool _isObsolete; + public: class Target { @@ -176,6 +182,10 @@ class MSHR : public Packet::SenderState, public Printable assert(inService); return pendingDirty; } + bool isPendingClean() const { + return pendingClean; + } + bool hasPostInvalidate() const { assert(inService); return postInvalidate; } @@ -214,6 +224,8 @@ class MSHR : public Packet::SenderState, public Printable bool isUncacheable() const { return _isUncacheable; } + bool isObsolete() const { return _isObsolete; } + /** * Allocate a miss to this MSHR. * @param cmd The requesting command. @@ -289,6 +301,12 @@ class MSHR : public Packet::SenderState, public Printable bool checkFunctional(PacketPtr pkt); + /** Mark this MSHR as tracking a transaction with obsoleted data. It still + * needs to complete its lifecycle, but should not modify the cache. */ + void markObsolete() { + _isObsolete = true; + } + /** * Prints the contents of this MSHR for debugging. */ |