summaryrefslogtreecommitdiff
path: root/src/cpu/testers/traffic_gen/generators.cc
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2013-04-22 13:20:33 -0400
committerAndreas Hansson <andreas.hansson@arm.com>2013-04-22 13:20:33 -0400
commit99b3a12a75d6f1826a3a127a6171724069caf0f2 (patch)
tree7ee9e967187baa6a23ef6f1b0961747e80d2708a /src/cpu/testers/traffic_gen/generators.cc
parentfe97f0e2b1474490d9201f42f35dd78eac04fa74 (diff)
downloadgem5-99b3a12a75d6f1826a3a127a6171724069caf0f2.tar.xz
cpu: Use request flags in trace playback
This patch changes the TraceGen such that it uses the optional request flags from the protobuf trace if they are present.
Diffstat (limited to 'src/cpu/testers/traffic_gen/generators.cc')
-rw-r--r--src/cpu/testers/traffic_gen/generators.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/cpu/testers/traffic_gen/generators.cc b/src/cpu/testers/traffic_gen/generators.cc
index 5cf40b2e6..7fec2a34a 100644
--- a/src/cpu/testers/traffic_gen/generators.cc
+++ b/src/cpu/testers/traffic_gen/generators.cc
@@ -50,10 +50,10 @@ BaseGen::BaseGen(QueuedMasterPort& _port, MasterID master_id, Tick _duration)
}
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
@@ -215,6 +215,8 @@ TraceGen::InputStream::read(TraceElement& element)
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;
}
@@ -280,14 +282,15 @@ TraceGen::execute()
// 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