protected:
+ /**
+ * Declare the two layers of this bus, one for requests and one
+ * for responses.
+ */
+ Layer<SlavePort> reqLayer;
+ Layer<MasterPort> respLayer;
+
/**
* Declaration of the non-coherent bus slave port type, one will
* be instantiated for each of the master ports connecting to the
/**
* Return the union of all adress ranges seen by this bus.
*/
- virtual AddrRangeList getAddrRanges()
+ virtual AddrRangeList getAddrRanges() const
{ return bus.getAddrRanges(); }
/**
* Get the maximum block size as seen by the bus.
*/
virtual unsigned deviceBlockSize() const
- { return bus.findBlockSize(); }
+ { return bus.deviceBlockSize(); }
};
* Get the maximum block size as seen by the bus.
*/
virtual unsigned deviceBlockSize() const
- { return bus.findBlockSize(); }
+ { return bus.deviceBlockSize(); }
};
/** Function called by the port when the bus is recieving a Timing
request packet.*/
- bool recvTimingReq(PacketPtr pkt, PortID slave_port_id);
+ virtual bool recvTimingReq(PacketPtr pkt, PortID slave_port_id);
/** Function called by the port when the bus is recieving a Timing
response packet.*/
- bool recvTimingResp(PacketPtr pkt, PortID master_port_id);
+ virtual bool recvTimingResp(PacketPtr pkt, PortID master_port_id);
+
+ /** Timing function called by port when it is once again able to process
+ * requests. */
+ void recvRetry();
/** Function called by the port when the bus is recieving a Atomic
transaction.*/
NoncoherentBus(const NoncoherentBusParams *p);
+ unsigned int drain(DrainManager *dm);
+
};
#endif //__MEM_NONCOHERENT_BUS_HH__