switching between O3 and another CPU, O3's tick event might still be scheduled
in the event queue (as squashed).  Therefore, check for a squashed tick event
as well as a non-scheduled event when taking over from another CPU and deal
with it accordingly.
     iew.takeOverFrom();
     commit.takeOverFrom();
 
-    assert(!tickEvent.scheduled());
+    assert(!tickEvent.scheduled() || tickEvent.squashed());
 
     // @todo: Figure out how to properly select the tid to put onto
     // the active threads list.
         ThreadContext *tc = threadContexts[i];
         if (tc->status() == ThreadContext::Active && _status != Running) {
             _status = Running;
-            schedule(tickEvent, nextCycle());
+            reschedule(tickEvent, nextCycle(), true);
         }
     }
     if (!tickEvent.scheduled())