diff --git a/src/mem/ruby/protocol/chi/CHI-cache-funcs.sm b/src/mem/ruby/protocol/chi/CHI-cache-funcs.sm index db008b0abf..40f33ce2f5 100644 --- a/src/mem/ruby/protocol/chi/CHI-cache-funcs.sm +++ b/src/mem/ruby/protocol/chi/CHI-cache-funcs.sm @@ -215,7 +215,7 @@ void functionalRead(Addr addr, Packet *pkt, WriteMask &mask) { WriteMask test_mask := mask; test_mask.orMask(read_mask); - if ((test_mask.cmpMask(mask) == false) || dirty) { + if ((mask.cmpMask(test_mask) == false) || dirty) { if (from_tbe) { if(testAndReadMask(addr, tbe.dataBlk, read_mask, pkt)) { DPRINTF(RubySlicc, "functionalRead tbe %x %s dirty=%d %s %s\n", addr, tbe.dataBlk, tbe.dataDirty, read_mask, mask); diff --git a/src/mem/ruby/protocol/chi/CHI-msg.sm b/src/mem/ruby/protocol/chi/CHI-msg.sm index d51fb76ca9..22fc508711 100644 --- a/src/mem/ruby/protocol/chi/CHI-msg.sm +++ b/src/mem/ruby/protocol/chi/CHI-msg.sm @@ -217,7 +217,7 @@ structure(CHIDataMsg, desc="", interface="Message") { assert(bitMask.isEmpty() == false); WriteMask test_mask := mask; test_mask.orMask(bitMask); - if ((test_mask.cmpMask(mask) == false) || is_dirty) { + if ((mask.cmpMask(test_mask) == false) || is_dirty) { if (testAndReadMask(addr, dataBlk, bitMask, pkt)) { mask.orMask(bitMask); return true;