From a84f8df0e2027400910e339824444dc45ba6e4f4 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 9 Jun 2015 23:44:13 +0800 Subject: [PATCH] sim: m68hc11: switch to common sim_resume This code already matched the common sim reusme logic, so we can simply drop it and pull in the common code. --- sim/m68hc11/ChangeLog | 5 +++ sim/m68hc11/Makefile.in | 3 +- sim/m68hc11/interp.c | 76 ----------------------------------------- 3 files changed, 7 insertions(+), 77 deletions(-) diff --git a/sim/m68hc11/ChangeLog b/sim/m68hc11/ChangeLog index ac228b8e6f1..8621ce4aa58 100644 --- a/sim/m68hc11/ChangeLog +++ b/sim/m68hc11/ChangeLog @@ -1,3 +1,8 @@ +2015-06-11 Mike Frysinger + + * Makefile.in (SIM_OBJS): Add sim-resume.o + * interp.c (has_stepped, sim_resume): Delete. + 2015-06-11 Mike Frysinger * interp.c (INLINE): Delete define. diff --git a/sim/m68hc11/Makefile.in b/sim/m68hc11/Makefile.in index 9b931a19958..98b811a2648 100644 --- a/sim/m68hc11/Makefile.in +++ b/sim/m68hc11/Makefile.in @@ -25,7 +25,8 @@ SIM_OBJS = $(M68HC11_OBJS) \ sim-load.o \ sim-hload.o \ sim-stop.o \ - sim-reason.o + sim-reason.o \ + sim-resume.o SIM_PROFILE= -DPROFILE=1 -DWITH_PROFILE=-1 # We must use 32-bit addresses to support memory bank switching. diff --git a/sim/m68hc11/interp.c b/sim/m68hc11/interp.c index e9f3aab6857..14a823170c8 100644 --- a/sim/m68hc11/interp.c +++ b/sim/m68hc11/interp.c @@ -699,79 +699,3 @@ sim_store_register (SIM_DESC sd, int rn, unsigned char *memory, int length) return 2; } - -/* 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, SIM_SIGTRAP); -} - - -/* Generic resume - assumes the existance of sim_engine_run */ - -void -sim_resume (SIM_DESC sd, - int step, - int siggnal) -{ - 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) - { - sim_events_deschedule (sd, engine->stepper); - engine->stepper = NULL; - } - sim_module_resume (sd); - - /* run/resume the simulator */ - engine->jmpbuf = &buf; - jmpval = setjmp (buf); - if (jmpval == sim_engine_start_jmpval - || jmpval == sim_engine_restart_jmpval) - { - int last_cpu_nr = sim_engine_last_cpu_nr (sd); - int next_cpu_nr = sim_engine_next_cpu_nr (sd); - int nr_cpus = sim_engine_nr_cpus (sd); - - sim_events_preprocess (sd, last_cpu_nr >= nr_cpus, next_cpu_nr >= nr_cpus); - if (next_cpu_nr >= nr_cpus) - next_cpu_nr = 0; - - /* Only deliver the siggnal ]sic] the first time through - don't - re-deliver any siggnal during a restart. */ - if (jmpval == sim_engine_restart_jmpval) - siggnal = 0; - - /* Install the stepping event after having processed some - pending events. This is necessary for HC11/HC12 simulator - because the tick counter is incremented by the number of cycles - the instruction took. Some pending ticks to process can still - be recorded internally by the simulator and sim_events_preprocess - will handle them. If the stepping event is inserted before, - these pending ticks will raise the event and the simulator will - stop without having executed any instruction. */ - if (step) - engine->stepper = sim_events_schedule (sd, 0, has_stepped, sd); - -#ifdef SIM_CPU_EXCEPTION_RESUME - { - sim_cpu* cpu = STATE_CPU (sd, next_cpu_nr); - SIM_CPU_EXCEPTION_RESUME(sd, cpu, siggnal); - } -#endif - - sim_engine_run (sd, next_cpu_nr, nr_cpus, siggnal); - } - engine->jmpbuf = NULL; - - sim_module_suspend (sd); -} -- 2.30.2