diff --git a/sim_console.c b/sim_console.c index c0bc8d43..4df66594 100644 --- a/sim_console.c +++ b/sim_console.c @@ -541,6 +541,7 @@ for (i=(was_stepping ? sim_rem_step_line : 0); c = c & ~TMXR_VALID; if (c != sim_int_char) continue; /* ^E (the interrupt character) must start console interaction */ + sim_is_running = 0; sim_stop_timer_services (); for (j=0; j < sim_rem_con_tmxr.lines; j++) { lp = &sim_rem_con_tmxr.ldsc[j]; @@ -728,6 +729,7 @@ for (i=(was_stepping ? sim_rem_step_line : 0); tmxr_linemsg (lp, "Simulator Running..."); tmxr_send_buffered_data (lp); } + sim_is_running = 1; sim_start_timer_services (); break; } diff --git a/sim_timer.c b/sim_timer.c index f5b0f9bb..0cdef0c5 100644 --- a/sim_timer.c +++ b/sim_timer.c @@ -1250,16 +1250,11 @@ while (sim_asynch_enabled && sim_asynch_timer && sim_is_running) { } else sim_activate (uptr, inst_delay); - continue; } - else /* Something wants to adjust the queue since the wait condition was signaled */ + else {/* Something wants to adjust the queue since the wait condition was signaled */ if (sim_timer_event_canceled) sim_timer_event_canceled = FALSE; /* reset flag and continue */ - else - if (sim_wallclock_entry == NULL) { /* nothing to insert? */ - sim_debug (DBG_TIM, &sim_timer_dev, "_timer_thread() - condition wakeup without new entry\n"); - break; /* stop processing entries */ - } + } } pthread_mutex_unlock (&sim_timer_lock);