diff options
Diffstat (limited to 'sim/common')
-rw-r--r-- | sim/common/ChangeLog | 9 | ||||
-rw-r--r-- | sim/common/cgen-defs.h | 14 | ||||
-rw-r--r-- | sim/common/cgen-run.c | 23 | ||||
-rw-r--r-- | sim/common/cgen-utils.c | 35 | ||||
-rw-r--r-- | sim/common/sim-base.h | 10 |
5 files changed, 31 insertions, 60 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 576b02f..dbe9236 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,12 @@ +2021-06-09 Mike Frysinger <vapier@gentoo.org> + + * cgen-defs.h (STATE_RUN_FAST_P, CGEN_STATE, cgen_init): Delete. + * cgen-run.c (cgen_get_fast_p): New function. + (sim_resume): Move fast_p up and call cgen_get_fast_p. + * cgen-utils.c (cgen_init): Delete. + * sim-base.h: Delete cgen-sim.h include. + (struct sim_state): Delete cgen_state and STATE_CGEN_STATE. + 2021-06-08 Mike Frysinger <vapier@gentoo.org> * Make-common.in (IGEN_RUN): New variable. diff --git a/sim/common/cgen-defs.h b/sim/common/cgen-defs.h index dab2f9f..520c29c 100644 --- a/sim/common/cgen-defs.h +++ b/sim/common/cgen-defs.h @@ -138,22 +138,8 @@ typedef enum { #define ENDSWITCH(N) #endif -/* Simulator state. */ - -/* CGEN_STATE contains additional state information not present in - sim_state_base. */ - -typedef struct cgen_state { - /* Non-zero if no tracing or profiling is selected. */ - int run_fast_p; -#define STATE_RUN_FAST_P(sd) (STATE_CGEN_STATE (sd).run_fast_p) -} CGEN_STATE; - /* Various utilities. */ -/* Called after sim_post_argv_init to do any cgen initialization. */ -extern void cgen_init (SIM_DESC); - /* Return the name of an insn. */ extern CPU_INSN_NAME_FN cgen_insn_name; diff --git a/sim/common/cgen-run.c b/sim/common/cgen-run.c index 443b62a..9420942 100644 --- a/sim/common/cgen-run.c +++ b/sim/common/cgen-run.c @@ -51,6 +51,24 @@ static void prime_cpu (SIM_CPU *, int); static void engine_run_1 (SIM_DESC, int, int); static void engine_run_n (SIM_DESC, int, int, int, int); +/* If no profiling or tracing has been enabled, run in fast mode. */ +static int +cgen_get_fast_p (SIM_DESC sd) +{ + int i, c; + int run_fast_p = 1; + + for (c = 0; c < MAX_NR_PROCESSORS; ++c) + { + SIM_CPU *cpu = STATE_CPU (sd, c); + + if (PROFILE_ANY_P (cpu) || TRACE_ANY_P (cpu)) + return 0; + } + + return 1; +} + /* sim_resume for cgen */ void @@ -59,9 +77,13 @@ sim_resume (SIM_DESC sd, int step, int siggnal) sim_engine *engine = STATE_ENGINE (sd); jmp_buf buf; int jmpval; + static int fast_p = -1; ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER); + if (fast_p == -1) + fast_p = cgen_get_fast_p (sd); + /* we only want to be single stepping the simulator once */ if (engine->stepper != NULL) { @@ -102,7 +124,6 @@ sim_resume (SIM_DESC sd, int step, int siggnal) && STATE_OPEN_KIND (sd) == SIM_OPEN_STANDALONE) ? 0 : 8); /*FIXME: magic number*/ - int fast_p = STATE_RUN_FAST_P (sd); sim_events_preprocess (sd, last_cpu_nr >= nr_cpus, next_cpu_nr >= nr_cpus); if (next_cpu_nr >= nr_cpus) diff --git a/sim/common/cgen-utils.c b/sim/common/cgen-utils.c index 890ed02..1310790 100644 --- a/sim/common/cgen-utils.c +++ b/sim/common/cgen-utils.c @@ -89,41 +89,6 @@ const CGEN_INSN cgen_virtual_insn_table[] = { & virtual_insn_entries[5] } }; -/* Initialize cgen things. - This is called after sim_post_argv_init. */ - -void -cgen_init (SIM_DESC sd) -{ - int i, c; - - /* If no profiling or tracing has been enabled, run in fast mode. */ - { - int run_fast_p = 1; - - for (c = 0; c < MAX_NR_PROCESSORS; ++c) - { - SIM_CPU *cpu = STATE_CPU (sd, c); - - for (i = 0; i < MAX_PROFILE_VALUES; ++i) - if (CPU_PROFILE_FLAGS (cpu) [i]) - { - run_fast_p = 0; - break; - } - for (i = 0; i < MAX_TRACE_VALUES; ++i) - if (CPU_TRACE_FLAGS (cpu) [i]) - { - run_fast_p = 0; - break; - } - if (! run_fast_p) - break; - } - STATE_RUN_FAST_P (sd) = run_fast_p; - } -} - /* Return the name of insn number I. */ const char * diff --git a/sim/common/sim-base.h b/sim/common/sim-base.h index 7dbf294..054b2ba 100644 --- a/sim/common/sim-base.h +++ b/sim/common/sim-base.h @@ -88,10 +88,6 @@ typedef struct _sim_cpu sim_cpu; #include "sim-cpu.h" #include "sim-assert.h" -#ifdef CGEN_ARCH -# include "cgen-sim.h" -#endif - struct sim_state { /* All the cpus for this instance. */ sim_cpu *cpu[MAX_NR_PROCESSORS]; @@ -217,12 +213,6 @@ struct sim_state { void *arch_data; #define STATE_ARCH_DATA(sd) ((sd)->arch_data) -#ifdef CGEN_ARCH - /* Various cgen runtime state. */ - CGEN_STATE cgen_state; -#endif -#define STATE_CGEN_STATE(sd) ((sd)->cgen_state) - /* Marker for those wanting to do sanity checks. This should remain the last member of this struct to help catch miscompilation errors. */ |