sim: Revert [34e3295b0e39] (sim: Fix early termination in mult...)
authorAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 11 Jun 2013 07:24:10 +0000 (09:24 +0200)
committerAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 11 Jun 2013 07:24:10 +0000 (09:24 +0200)
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.

src/sim/simulate.cc

index fb785a91ff59c8c3338d7dca3059508dc1717006..6962fab9f6f7a89d0f8d37f9932f56560e8e0881 100644 (file)
  * 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)
 {
@@ -71,16 +67,6 @@ 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;