MemInhibit,
Shared,
// Special control flags
+ /// Special timing-mode atomic snoop for multi-level coherence.
ExpressSnoop,
- LowerMSHRPending, // not yet in service
+ /// Does supplier have exclusive copy?
+ /// Useful for multi-level coherence.
+ SupplyExclusive,
NUM_PACKET_FLAGS
};
// Snoop flags
void assertMemInhibit() { flags[MemInhibit] = true; }
- void assertShared() { flags[Shared] = true; }
bool memInhibitAsserted() { return flags[MemInhibit]; }
+ void assertShared() { flags[Shared] = true; }
bool sharedAsserted() { return flags[Shared]; }
// Special control flags
void setExpressSnoop() { flags[ExpressSnoop] = true; }
bool isExpressSnoop() { return flags[ExpressSnoop]; }
- void setLowerMSHRPending() { flags[LowerMSHRPending] = true; }
- bool lowerMSHRPending() { return flags[LowerMSHRPending]; }
+ void setSupplyExclusive() { flags[SupplyExclusive] = true; }
+ bool isSupplyExclusive() { return flags[SupplyExclusive]; }
// Network error conditions... encapsulate them as methods since
// their encoding keeps changing (from result field to command
/** If there isn't data in the packet, allocate some. */
void allocate();
- /** Do the packet modify the same addresses. */
- bool intersect(PacketPtr p);
-
/**
* Check a functional request against a memory value represented
* by a base/size pair and an associated data array. If the