mem-ruby: Fix functional reads for MESI Three-Level messages (#1045)

Fix #1044. This patch adds checks for message types (PUTX_COPY, DATA,
DATA_EXCLUSIVE) that contain data blocks but were missing from the
original `functionalRead` method in MESI Three-Level messages.

Change-Id: I0cedc314166c9cc037bf20f5b7fef5552dd1253c
This commit is contained in:
Nicholas Mosier
2024-04-25 11:14:37 -07:00
committed by GitHub
parent d75afeabb1
commit 66decb2e93

View File

@@ -81,8 +81,9 @@ structure(CoherenceMsg, desc="...", interface="Message") {
PrefetchBit Prefetch, desc="Is this a prefetch request";
bool functionalRead(Packet *pkt) {
// Only PUTX messages contains the data block
if (Class == CoherenceClass:PUTX) {
// Valid data block is only present in message with following types
if (Class == CoherenceClass:PUTX ||
Class == CoherenceClass:DATA_EXCLUSIVE) {
return testAndRead(addr, DataBlk, pkt);
}