protected:
- virtual bool recvTiming(PacketPtr pkt);
+ virtual bool recvTimingSnoopResp(PacketPtr pkt);
+
+ virtual bool recvTimingReq(PacketPtr pkt);
virtual Tick recvAtomic(PacketPtr pkt);
virtual unsigned deviceBlockSize() const
{ return cache->getBlockSize(); }
- virtual AddrRangeList getAddrRanges();
+ virtual AddrRangeList getAddrRanges() const;
public:
* current MSHR status. This queue has a pointer to our specific
* cache implementation and is used by the MemSidePort.
*/
- class MemSidePacketQueue : public PacketQueue
+ class MemSidePacketQueue : public MasterPacketQueue
{
protected:
public:
- MemSidePacketQueue(Cache<TagStore> &cache, Port &port,
+ MemSidePacketQueue(Cache<TagStore> &cache, MasterPort &port,
const std::string &label) :
- PacketQueue(cache, port, label), cache(cache) { }
+ MasterPacketQueue(cache, port, label), cache(cache) { }
/**
* Override the normal sendDeferredPacket and do not only
protected:
- virtual bool recvTiming(PacketPtr pkt);
+ virtual void recvTimingSnoopReq(PacketPtr pkt);
- virtual Tick recvAtomic(PacketPtr pkt);
+ virtual bool recvTimingResp(PacketPtr pkt);
- virtual void recvFunctional(PacketPtr pkt);
+ virtual Tick recvAtomicSnoop(PacketPtr pkt);
+
+ virtual void recvFunctionalSnoop(PacketPtr pkt);
virtual unsigned deviceBlockSize() const
{ return cache->getBlockSize(); }
*/
const bool prefetchOnAccess;
+ /**
+ * @todo this is a temporary workaround until the 4-phase code is committed.
+ * upstream caches need this packet until true is returned, so hold it for
+ * deletion until a subsequent call
+ */
+ std::vector<PacketPtr> pendingDelete;
+
/**
* Does all the processing necessary to perform the provided request.
* @param pkt The memory request to perform.
/** Instantiates a basic cache object. */
Cache(const Params *p, TagStore *tags);
- virtual Port *getPort(const std::string &if_name, int idx = -1);
-
void regStats();
/**
*/
void markInService(MSHR *mshr, PacketPtr pkt = 0);
- /**
- * Perform the given writeback request.
- * @param pkt The writeback request.
- */
- void doWriteback(PacketPtr pkt);
-
/**
* Return whether there are any outstanding misses.
*/
* Find next request ready time from among possible sources.
*/
Tick nextMSHRReadyTime();
+
+ /** serialize the state of the caches
+ * We currently don't support checkpointing cache state, so this panics.
+ */
+ virtual void serialize(std::ostream &os);
+ void unserialize(Checkpoint *cp, const std::string §ion);
};
#endif // __CACHE_HH__