29 #ifndef __MEM_RUBY_SLICC_INTERFACE_RUBYREQUEST_HH__ 30 #define __MEM_RUBY_SLICC_INTERFACE_RUBYREQUEST_HH__ 38 #include "mem/ruby/protocol/HSAScope.hh" 39 #include "mem/ruby/protocol/HSASegment.hh" 40 #include "mem/ruby/protocol/Message.hh" 41 #include "mem/ruby/protocol/PrefetchBit.hh" 42 #include "mem/ruby/protocol/RubyAccessMode.hh" 43 #include "mem/ruby/protocol/RubyRequestType.hh" 66 uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode,
67 PacketPtr _pkt, PrefetchBit _pb = PrefetchBit_No,
69 HSAScope _scope = HSAScope_UNSPECIFIED,
70 HSASegment _segment = HSASegment_GLOBAL)
72 m_PhysicalAddress(_paddr),
74 m_ProgramCounter(_pc),
75 m_AccessMode(_access_mode),
80 m_contextId(_core_id),
88 uint64_t _pc, RubyRequestType _type,
89 RubyAccessMode _access_mode,
PacketPtr _pkt, PrefetchBit _pb,
90 unsigned _proc_id,
unsigned _core_id,
93 HSAScope _scope = HSAScope_UNSPECIFIED,
94 HSASegment _segment = HSASegment_GLOBAL)
96 m_PhysicalAddress(_paddr),
98 m_ProgramCounter(_pc),
99 m_AccessMode(_access_mode),
104 m_contextId(_core_id),
105 m_writeMask(_wm_size,_wm_mask),
115 uint64_t _pc, RubyRequestType _type,
116 RubyAccessMode _access_mode,
PacketPtr _pkt, PrefetchBit _pb,
117 unsigned _proc_id,
unsigned _core_id,
121 HSAScope _scope = HSAScope_UNSPECIFIED,
122 HSASegment _segment = HSASegment_GLOBAL)
124 m_PhysicalAddress(_paddr),
126 m_ProgramCounter(_pc),
127 m_AccessMode(_access_mode),
132 m_contextId(_core_id),
133 m_writeMask(_wm_size,_wm_mask,_atomicOps),
145 {
return std::shared_ptr<Message>(
new RubyRequest(*
this)); }
155 void print(std::ostream& out)
const;
168 #endif //__MEM_RUBY_SLICC_INTERFACE_RUBYREQUEST_HH__
std::shared_ptr< Message > MsgPtr
bool functionalWrite(Packet *pkt)
RubyRequest(Tick curTime, uint64_t _paddr, uint8_t *_data, int _len, uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode, PacketPtr _pkt, PrefetchBit _pb=PrefetchBit_No, ContextID _proc_id=100, ContextID _core_id=99, HSAScope _scope=HSAScope_UNSPECIFIED, HSASegment _segment=HSASegment_GLOBAL)
void print(std::ostream &out) const
RubyAccessMode m_AccessMode
const RubyRequestType & getType() const
Addr getLineAddress() const
std::ostream & operator<<(std::ostream &out, const RubyRequest &obj)
uint64_t Tick
Tick count type.
bool functionalRead(Packet *pkt)
The two functions below are used for reading / writing the message functionally.
const PrefetchBit & getPrefetch() const
const int & getSize() const
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
Addr makeLineAddress(Addr addr)
RubyRequest(Tick curTime, uint64_t _paddr, uint8_t *_data, int _len, uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode, PacketPtr _pkt, PrefetchBit _pb, unsigned _proc_id, unsigned _core_id, int _wm_size, std::vector< bool > &_wm_mask, DataBlock &_Data, std::vector< std::pair< int, AtomicOpFunctor *> > _atomicOps, HSAScope _scope=HSAScope_UNSPECIFIED, HSASegment _segment=HSASegment_GLOBAL)
RubyRequest(Tick curTime, uint64_t _paddr, uint8_t *_data, int _len, uint64_t _pc, RubyRequestType _type, RubyAccessMode _access_mode, PacketPtr _pkt, PrefetchBit _pb, unsigned _proc_id, unsigned _core_id, int _wm_size, std::vector< bool > &_wm_mask, DataBlock &_Data, HSAScope _scope=HSAScope_UNSPECIFIED, HSASegment _segment=HSASegment_GLOBAL)
RubyRequest(Tick curTime)
Addr getPhysicalAddress() const
Addr getProgramCounter() const
const RubyAccessMode & getAccessMode() const
int ContextID
Globally unique thread context ID.