HG changset
34e3295b0e39 introduced a check in the main simulation
loop that discards exit events that happen at the same tick as another
exit event. This was supposed to fix a problem where a simulation
script got confused by multiple exit events. This obviously breaks the
simulator since it can hide important simulation events, such as a
simulation failure, that happen at the same time as a non-fatal
simulation event.
* terminate the loop. Exported to Python via SWIG.
* @return The SimLoopExitEvent that caused the loop to exit.
*/
-
-// record the clock cycle for last exit event
-Tick lastExitTick = 0;
-
SimLoopExitEvent *
simulate(Tick num_cycles)
{
Event *exit_event = mainEventQueue.serviceOne();
if (exit_event != NULL) {
- /*
- * if there are multiple exit events in the same cycle, drain the
- * following exit events since gem5 only allows one * exit event in
- * a cycle
- */
- if (lastExitTick == curTick())
- continue;
- else
- lastExitTick = curTick();
-
// hit some kind of exit event; return to Python
// event must be subclass of SimLoopExitEvent...
SimLoopExitEvent *se_event;