29 #ifndef __MEM_RUBY_SLICC_INTERFACE_RUBY_REQUEST_HH__
30 #define __MEM_RUBY_SLICC_INTERFACE_RUBY_REQUEST_HH__
35 #include "mem/protocol/HSAScope.hh"
36 #include "mem/protocol/HSASegment.hh"
37 #include "mem/protocol/Message.hh"
38 #include "mem/protocol/PrefetchBit.hh"
39 #include "mem/protocol/RubyAccessMode.hh"
40 #include "mem/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)
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)
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)
145 {
return std::shared_ptr<Message>(
new RubyRequest(*
this)); }
155 void print(std::ostream& out)
const;
168 #endif // __MEM_RUBY_SLICC_INTERFACE_RUBY_REQUEST_HH__
std::shared_ptr< Message > MsgPtr
bool functionalWrite(Packet *pkt)
const RubyRequestType & getType() const
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)
const PrefetchBit & getPrefetch() const
RubyAccessMode m_AccessMode
const int & getSize() 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.
Addr getPhysicalAddress() const
const RubyAccessMode & getAccessMode() 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, HSAScope _scope=HSAScope_UNSPECIFIED, HSASegment _segment=HSASegment_GLOBAL)
RubyRequest(Tick curTime)
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)
void print(std::ostream &out) const
Addr getProgramCounter() const
int ContextID
Globally unique thread context ID.