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");
|
||||
ProtoOStream *os = new ProtoOStream(&out);
|
||||
|
||||
simtime_t prevtime = 0, currtime;
|
||||
simtime_diff_t deltatime;
|
||||
|
||||
while (bp->getTriggerInstructionPointer() != L4SYS_FUNC_EXIT) {
|
||||
fail::BaseListener *res = simulator.resume();
|
||||
address_t curr_addr = 0;
|
||||
@ -277,8 +280,6 @@ void L4SysExperiment::collectInstructionTrace(fail::BPSingleListener* bp)
|
||||
++count;
|
||||
}
|
||||
|
||||
simtime_t prevtime = 0, currtime;
|
||||
simtime_diff_t deltatime;
|
||||
currtime = simulator.getTimerTicks();
|
||||
deltatime = currtime - prevtime;
|
||||
|
||||
@ -306,7 +307,7 @@ void L4SysExperiment::collectInstructionTrace(fail::BPSingleListener* bp)
|
||||
++mem_valid;
|
||||
|
||||
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_memaddr(ML.getTriggerAddress());
|
||||
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
|
||||
// XXX: need to log CR3 if we want multiple binaries here
|
||||
Trace_Event e;
|
||||
if (deltatime != 0) { e.set_time_delta(deltatime); };
|
||||
if (deltatime != 0) { e.set_time_delta(1); };
|
||||
e.set_ip(curr_addr);
|
||||
os->writeMessage(&e);
|
||||
} else {
|
||||
@ -632,6 +633,8 @@ bool L4SysExperiment::run()
|
||||
result->set_bit_offset(bit);
|
||||
doMemoryInjection(param->msg.fsppilot().data_address(), bit);
|
||||
} 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));
|
||||
doRegisterInjection(param->msg.fsppilot().data_address(), bit);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user