mem: Implemement backdoor interface for Bridge

Change-Id: I5ff62b03c34e41395a957a0799925ddd9c275458
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/67291
Reviewed-by: Nicolas Boichat <drinkcat@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
This commit is contained in:
Yu-hsin Wang
2023-01-11 13:19:10 +08:00
parent 626e445563
commit a7ef5b77d6
2 changed files with 35 additions and 8 deletions

View File

@@ -347,6 +347,14 @@ Bridge::BridgeResponsePort::recvAtomic(PacketPtr pkt)
return delay * bridge.clockPeriod() + memSidePort.sendAtomic(pkt);
}
Tick
Bridge::BridgeResponsePort::recvAtomicBackdoor(
PacketPtr pkt, MemBackdoorPtr &backdoor)
{
return delay * bridge.clockPeriod() + memSidePort.sendAtomicBackdoor(
pkt, backdoor);
}
void
Bridge::BridgeResponsePort::recvFunctional(PacketPtr pkt)
{
@@ -371,6 +379,13 @@ Bridge::BridgeResponsePort::recvFunctional(PacketPtr pkt)
memSidePort.sendFunctional(pkt);
}
void
Bridge::BridgeResponsePort::recvMemBackdoorReq(
const MemBackdoorReq &req, MemBackdoorPtr &backdoor)
{
memSidePort.sendMemBackdoorReq(req, backdoor);
}
bool
Bridge::BridgeRequestPort::trySatisfyFunctional(PacketPtr pkt)
{

View File

@@ -195,23 +195,35 @@ class Bridge : public ClockedObject
/** When receiving a timing request from the peer port,
pass it to the bridge. */
bool recvTimingReq(PacketPtr pkt);
bool recvTimingReq(PacketPtr pkt) override;
/** When receiving a retry request from the peer port,
pass it to the bridge. */
void recvRespRetry();
void recvRespRetry() override;
/** When receiving a Atomic requestfrom the peer port,
/** When receiving an Atomic request from the peer port,
pass it to the bridge. */
Tick recvAtomic(PacketPtr pkt);
Tick recvAtomic(PacketPtr pkt) override;
/** When receiving an Atomic backdoor request from the peer port,
pass it to the bridge. */
Tick recvAtomicBackdoor(
PacketPtr pkt, MemBackdoorPtr &backdoor) override;
/** When receiving a Functional request from the peer port,
pass it to the bridge. */
void recvFunctional(PacketPtr pkt);
void recvFunctional(PacketPtr pkt) override;
/** When receiving a Functional backdoor request from the peer port,
pass it to the bridge. */
void recvMemBackdoorReq(
const MemBackdoorReq &req, MemBackdoorPtr &backdoor) override;
/** When receiving a address range request the peer port,
pass it to the bridge. */
AddrRangeList getAddrRanges() const;
AddrRangeList getAddrRanges() const override;
};
@@ -303,11 +315,11 @@ class Bridge : public ClockedObject
/** When receiving a timing request from the peer port,
pass it to the bridge. */
bool recvTimingResp(PacketPtr pkt);
bool recvTimingResp(PacketPtr pkt) override;
/** When receiving a retry request from the peer port,
pass it to the bridge. */
void recvReqRetry();
void recvReqRetry() override;
};
/** Response port of the bridge. */