diff options
author | Brad Beckmann <Brad.Beckmann@amd.com> | 2010-08-20 11:46:12 -0700 |
---|---|---|
committer | Brad Beckmann <Brad.Beckmann@amd.com> | 2010-08-20 11:46:12 -0700 |
commit | 8e5c441a54b481085d6311f14af66e41b5766f91 (patch) | |
tree | 8d0e6f8395685fb8a7fb2eda83e572301e687d1a /src/mem/packet.hh | |
parent | 54d76f0ce5d721ad3b4de168db98054844e634cc (diff) | |
download | gem5-8e5c441a54b481085d6311f14af66e41b5766f91.tar.xz |
ruby: fix ruby llsc support to sync sc outcomes
Added support so that ruby can determine the outcome of store conditional
operations and reflect that outcome to M5 physical memory and cpus.
Diffstat (limited to 'src/mem/packet.hh')
-rw-r--r-- | src/mem/packet.hh | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mem/packet.hh b/src/mem/packet.hh index 2c94da8bd..390d9672f 100644 --- a/src/mem/packet.hh +++ b/src/mem/packet.hh @@ -463,6 +463,30 @@ class Packet : public FastAlloc, public Printable Addr getOffset(int blkSize) const { return getAddr() & (Addr)(blkSize - 1); } /** + * It has been determined that the SC packet should successfully update + * memory. Therefore, convert this SC packet to a normal write. + */ + void + convertScToWrite() + { + assert(isLLSC()); + assert(isWrite()); + cmd = MemCmd::WriteReq; + } + + /** + * When ruby is in use, Ruby will monitor the cache line and thus M5 + * phys memory should treat LL ops as normal reads. + */ + void + convertLlToRead() + { + assert(isLLSC()); + assert(isRead()); + cmd = MemCmd::ReadReq; + } + + /** * Constructor. Note that a Request object must be constructed * first, but the Requests's physical address and size fields need * not be valid. The command and destination addresses must be |