L4Sys: some bug fixes
* Fowler's Law of Refactoring: Have test cases available. * BjoernD's Corollary to Fowler's Law: Use these tests! Change-Id: I3d3e48ffe08209891c6204655323cd26a0eaaebd
This commit is contained in:
@ -261,6 +261,9 @@ void L4SysExperiment::collectInstructionTrace(fail::BPSingleListener* bp)
|
|||||||
ogzstream out("trace.pb");
|
ogzstream out("trace.pb");
|
||||||
ProtoOStream *os = new ProtoOStream(&out);
|
ProtoOStream *os = new ProtoOStream(&out);
|
||||||
|
|
||||||
|
simtime_t prevtime = 0, currtime;
|
||||||
|
simtime_diff_t deltatime;
|
||||||
|
|
||||||
while (bp->getTriggerInstructionPointer() != L4SYS_FUNC_EXIT) {
|
while (bp->getTriggerInstructionPointer() != L4SYS_FUNC_EXIT) {
|
||||||
fail::BaseListener *res = simulator.resume();
|
fail::BaseListener *res = simulator.resume();
|
||||||
address_t curr_addr = 0;
|
address_t curr_addr = 0;
|
||||||
@ -277,8 +280,6 @@ void L4SysExperiment::collectInstructionTrace(fail::BPSingleListener* bp)
|
|||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
|
|
||||||
simtime_t prevtime = 0, currtime;
|
|
||||||
simtime_diff_t deltatime;
|
|
||||||
currtime = simulator.getTimerTicks();
|
currtime = simulator.getTimerTicks();
|
||||||
deltatime = currtime - prevtime;
|
deltatime = currtime - prevtime;
|
||||||
|
|
||||||
@ -306,7 +307,7 @@ void L4SysExperiment::collectInstructionTrace(fail::BPSingleListener* bp)
|
|||||||
++mem_valid;
|
++mem_valid;
|
||||||
|
|
||||||
Trace_Event te;
|
Trace_Event te;
|
||||||
if (deltatime != 0) { te.set_time_delta(deltatime); };
|
if (deltatime != 0) { te.set_time_delta(1); };
|
||||||
te.set_ip(curr_addr);
|
te.set_ip(curr_addr);
|
||||||
te.set_memaddr(ML.getTriggerAddress());
|
te.set_memaddr(ML.getTriggerAddress());
|
||||||
te.set_accesstype( (ML.getTriggerAccessType() & MemAccessEvent::MEM_READ) ? te.READ : te.WRITE );
|
te.set_accesstype( (ML.getTriggerAccessType() & MemAccessEvent::MEM_READ) ? te.READ : te.WRITE );
|
||||||
@ -337,7 +338,7 @@ void L4SysExperiment::collectInstructionTrace(fail::BPSingleListener* bp)
|
|||||||
// the generic *-trace tools
|
// the generic *-trace tools
|
||||||
// XXX: need to log CR3 if we want multiple binaries here
|
// XXX: need to log CR3 if we want multiple binaries here
|
||||||
Trace_Event e;
|
Trace_Event e;
|
||||||
if (deltatime != 0) { e.set_time_delta(deltatime); };
|
if (deltatime != 0) { e.set_time_delta(1); };
|
||||||
e.set_ip(curr_addr);
|
e.set_ip(curr_addr);
|
||||||
os->writeMessage(&e);
|
os->writeMessage(&e);
|
||||||
} else {
|
} else {
|
||||||
@ -632,6 +633,8 @@ bool L4SysExperiment::run()
|
|||||||
result->set_bit_offset(bit);
|
result->set_bit_offset(bit);
|
||||||
doMemoryInjection(param->msg.fsppilot().data_address(), bit);
|
doMemoryInjection(param->msg.fsppilot().data_address(), bit);
|
||||||
} else if (exp_type == param->msg.GPRFLIP) {
|
} else if (exp_type == param->msg.GPRFLIP) {
|
||||||
|
int reg = (param->msg.fsppilot().data_address() >> 4) + 1;
|
||||||
|
result->set_register_offset(static_cast<L4SysProtoMsg_RegisterType>(reg));
|
||||||
result->set_bit_offset(bit + 8 * (param->msg.fsppilot().data_address() & 0xF));
|
result->set_bit_offset(bit + 8 * (param->msg.fsppilot().data_address() & 0xF));
|
||||||
doRegisterInjection(param->msg.fsppilot().data_address(), bit);
|
doRegisterInjection(param->msg.fsppilot().data_address(), bit);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user