diff options
author | Steve Reinhardt <steve.reinhardt@amd.com> | 2010-06-16 15:25:57 -0700 |
---|---|---|
committer | Steve Reinhardt <steve.reinhardt@amd.com> | 2010-06-16 15:25:57 -0700 |
commit | 57f2b7db11c9a16f3104588c137e6246bd124041 (patch) | |
tree | da67f375e76ebbda46b5528d7c2398efebca1307 /src/mem/packet.hh | |
parent | f90319d3b850e6bb773b3bf8548508529970aea2 (diff) | |
download | gem5-57f2b7db11c9a16f3104588c137e6246bd124041.tar.xz |
cache: fix dirty bit setting
Only set the dirty bit when we actually write to a block
(not if we thought we might but didn't, as in a failed
SC or CAS). This requires makeing sure the dirty bit
stays set when we get an exclusive (writable) copy
in a cache-to-cache transfer from another owner, which
n turn requires copying the mem-inhibit flag from
timing-mode requests to their associated responses.
Diffstat (limited to 'src/mem/packet.hh')
-rw-r--r-- | src/mem/packet.hh | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mem/packet.hh b/src/mem/packet.hh index e7a5335a8..17af558b5 100644 --- a/src/mem/packet.hh +++ b/src/mem/packet.hh @@ -559,6 +559,10 @@ class Packet : public FastAlloc, public Printable origCmd = cmd; cmd = cmd.responseCommand(); + // responses are never express, even if the snoop that + // triggered them was + flags.clear(EXPRESS_SNOOP); + dest = src; flags.set(VALID_DST, flags.isSet(VALID_SRC)); flags.clear(VALID_SRC); |