56 out <<
"[RubyRequest: ";
57 out << std::hex <<
"LineAddress = 0x" <<
m_LineAddress << std::dec <<
" ";
59 out << std::dec <<
" " <<
"Type = " <<
m_Type <<
" ";
62 out <<
"Size = " <<
m_Size <<
" ";
102 warn(
"Skiping functional write to/from a masked write packet"
113 const uint8_t * pktData = pkt->
getConstPtr<uint8_t>();
115 Addr cBase = std::max(wBase, mBase);
116 Addr cTail = std::min(wTail, mTail);
118 for (
Addr i = cBase;
i < cTail; ++
i) {
119 data[
i - mBase] = pktData[
i - wBase];
125 return cBase < cTail;
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
T * getPtr()
get a pointer to the data ptr.
const T * getConstPtr() const
bool isMaskedWrite() const
void setWriteMask(uint32_t offset, uint32_t len, std::vector< std::pair< int, AtomicOpFunctor * > > atomicOps)
bool functionalWrite(Packet *pkt)
void print(std::ostream &out) const
bool functionalRead(Packet *pkt)
The two functions below are used for reading / writing the message functionally.
RubyAccessMode m_AccessMode
void setMask(int offset, int len, bool val=true)
void setAtomicOps(const AtomicOpVector &atomicOps)
bool testAndWrite(Addr addr, DataBlock &blk, Packet *pkt)
This function accepts an address, a data block and a packet.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.