35d34
< #include "mem/mem_object.hh"
37d35
< #include "mem/protocol/RequestStatus.hh"
39,42c37
< #include "mem/ruby/network/MessageBuffer.hh"
< #include "mem/ruby/system/RubySystem.hh"
< #include "mem/simple_mem.hh"
< #include "mem/tport.hh"
---
> #include "mem/ruby/system/RubyPort.hh"
45,46d39
< class AbstractController;
<
58c51
< class DMASequencer : public MemObject
---
> class DMASequencer : public RubyPort
64d56
< RubySystem *m_ruby_system;
66,99d57
< public:
< class MemSlavePort : public QueuedSlavePort
< {
< private:
< RespPacketQueue queue;
< RubySystem* m_ruby_system;
< bool access_backing_store;
<
< public:
< MemSlavePort(const std::string &_name, DMASequencer *_port,
< PortID id, RubySystem *_ruby_system,
< bool _access_backing_store);
< void hitCallback(PacketPtr pkt);
< void evictionCallback(Addr address);
<
< protected:
< bool recvTimingReq(PacketPtr pkt);
<
< Tick recvAtomic(PacketPtr pkt)
< { panic("DMASequencer::MemSlavePort::recvAtomic() not implemented!\n"); }
<
< void recvFunctional(PacketPtr pkt)
< { panic("DMASequencer::MemSlavePort::recvFunctional() not implemented!\n"); }
<
< AddrRangeList getAddrRanges() const
< { AddrRangeList ranges; return ranges; }
<
< private:
< bool isPhysMemAddress(Addr addr) const;
< };
<
< BaseSlavePort &getSlavePort(const std::string &if_name,
< PortID idx = InvalidPortID) override;
<
107,112d64
< // Called by the controller to give the sequencer a pointer.
< // A pointer to the controller is needed for atomic support.
< void setController(AbstractController* _cntrl) { m_controller = _cntrl; }
< uint32_t getId() { return m_version; }
< DrainState drain() override;
<
121,122d72
< void ruby_hit_callback(PacketPtr pkt);
< void testDrainComplete();
124,145d73
< /**
< * Called by the PIO port when receiving a timing response.
< *
< * @param pkt Response packet
< * @param master_port_id Port id of the PIO port
< *
< * @return Whether successfully sent
< */
< bool recvTimingResp(PacketPtr pkt, PortID master_port_id);
< unsigned int getChildDrainCount();
<
< private:
< uint32_t m_version;
< AbstractController* m_controller;
< MessageBuffer* m_mandatory_q_ptr;
< bool m_usingRubyTester;
<
< MemSlavePort slave_port;
<
< System* system;
<
< bool retry;