return latency;
}
+Tick
+MemCtrl::recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor)
+{
+ Tick latency = recvAtomic(pkt);
+ if (dram) {
+ dram->getBackdoor(backdoor);
+ } else if (nvm) {
+ nvm->getBackdoor(backdoor);
+ }
+ return latency;
+}
+
bool
MemCtrl::readQueueFull(unsigned int neededEntries) const
{
return ctrl.recvAtomic(pkt);
}
+Tick
+MemCtrl::MemoryPort::recvAtomicBackdoor(
+ PacketPtr pkt, MemBackdoorPtr &backdoor)
+{
+ return ctrl.recvAtomicBackdoor(pkt, backdoor);
+}
+
bool
MemCtrl::MemoryPort::recvTimingReq(PacketPtr pkt)
{
protected:
- Tick recvAtomic(PacketPtr pkt);
+ Tick recvAtomic(PacketPtr pkt) override;
+ Tick recvAtomicBackdoor(
+ PacketPtr pkt, MemBackdoorPtr &backdoor) override;
- void recvFunctional(PacketPtr pkt);
+ void recvFunctional(PacketPtr pkt) override;
- bool recvTimingReq(PacketPtr);
+ bool recvTimingReq(PacketPtr) override;
- virtual AddrRangeList getAddrRanges() const;
+ AddrRangeList getAddrRanges() const override;
};
protected:
Tick recvAtomic(PacketPtr pkt);
+ Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor);
void recvFunctional(PacketPtr pkt);
bool recvTimingReq(PacketPtr pkt);