+Thu May 22 09:12:16 1997 Gavin Koch <gavin@cygnus.com>
+
+ * sim-engine.c (sim_engine_restart):
+ * sim-resume.c (sim_resume): Change longjmp param/setjmp
+ return value used for simulator restart from 0 to 2.
+
Wed May 21 08:47:30 1997 Andrew Cagney <cagney@b1.cygnus.com>
* cgen-scache.c (scache_option_handler): Add is_command arg.
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include "sim-main.h"
-
#include <stdio.h>
#include <signal.h>
+#include "sim-main.h"
+#include "sim-assert.h"
+
/* Generic halt */
int sigrc)
{
sim_engine *engine = STATE_ENGINE (sd);
+ ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
if (engine->jmpbuf != NULL)
{
jmp_buf *halt_buf = engine->jmpbuf;
sim_cia cia)
{
sim_engine *engine = STATE_ENGINE (sd);
+ ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
if (engine->jmpbuf != NULL)
{
jmp_buf *halt_buf = engine->jmpbuf;
engine->last_cpu = last_cpu;
engine->next_cpu = next_cpu;
SIM_ENGINE_RESTART_HOOK (sd, last_cpu, cia);
- longjmp(*halt_buf, 0);
+ longjmp(*halt_buf, 2);
}
else
sim_io_error (sd, "sim_restart - bad long jump");
const char *fmt,
...)
{
+ ASSERT (sd == NULL || STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
if (sd == NULL)
{
va_list ap;
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include "sim-main.h"
-
#include <signal.h>
+#include "sim-main.h"
+#include "sim-assert.h"
+
/* Halt the simulator after just one instruction */
static void
has_stepped (SIM_DESC sd,
void *data)
{
+ ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
sim_engine_halt (sd, NULL, NULL, NULL_CIA, sim_stopped, SIGTRAP);
}
{
sim_engine *engine = STATE_ENGINE (sd);
jmp_buf buf;
+ int jmpval;
+
+ ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER);
/* we only want to be single stepping the simulator once */
if (engine->stepper != NULL)
engine->stepper = sim_events_schedule (sd, 1, has_stepped, sd);
/* run/resume the simulator */
+ /* jmpval: 0 (initial use) start simulator
+ 1 halt simulator
+ 2 restart simulator
+ */
+
engine->jmpbuf = &buf;
- if (! setjmp (buf))
+ jmpval = setjmp (buf);
+ if (jmpval == 0 || jmpval == 2)
{
int last_cpu_nr = sim_engine_last_cpu_nr (sd);
int next_cpu_nr = sim_engine_next_cpu_nr (sd);