}
void
-BaseGen::send(Addr addr, unsigned size, const MemCmd& cmd)
+BaseGen::send(Addr addr, unsigned size, const MemCmd& cmd,
+ Request::FlagsType flags)
{
// Create new request
- Request::Flags flags;
Request *req = new Request(addr, size, flags, masterID);
// Embed it in a packet
element.addr = pkt_msg.addr();
element.blocksize = pkt_msg.size();
element.tick = pkt_msg.tick();
+ if (pkt_msg.has_flags())
+ element.flags = pkt_msg.flags();
return true;
}
// state graph from executing the state if it should not
assert(currElement.isValid());
- DPRINTF(TrafficGen, "TraceGen::execute: %c %d %d %d\n",
+ DPRINTF(TrafficGen, "TraceGen::execute: %c %d %d %d 0x%x\n",
currElement.cmd.isRead() ? 'r' : 'w',
currElement.addr,
currElement.blocksize,
- currElement.tick);
+ currElement.tick,
+ currElement.flags);
send(currElement.addr + addrOffset, currElement.blocksize,
- currElement.cmd);
+ currElement.cmd, currElement.flags);
}
void
* @param addr Physical address to use
* @param size Size of the request
* @param cmd Memory command to send
+ * @param flags Optional request flags
*/
- void send(Addr addr, unsigned size, const MemCmd& cmd);
+ void send(Addr addr, unsigned size, const MemCmd& cmd,
+ Request::FlagsType flags = 0);
public:
/** The time at which the request should be sent */
Tick tick;
+ /** Potential request flags to use */
+ Request::FlagsType flags;
+
/**
* Check validity of this element.
*