From 0d58595077841917ad57c9f8d2a61184a504ef40 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 25 Dec 2015 04:27:27 -0500 Subject: [PATCH] sim: sim-model: build for everyone Rather than include this for some targets, set it up so we can build it all the time via the common code. This makes it easier for targets to opt into it when they're ready, increases build coverage, and allows us to centralize much of the logic. We also get to delete tconfig.h from two more targets -- they were setting WITH_DEVICES to 0 which has the same behavior as not defining it at all. While the SIM_HAVE_MODEL knob is gone, we now have WITH_MODEL_P, but it is only used by the common sim-model code. We use it to declare dummy model lists when the arch hasn't created its own. --- sim/bfin/ChangeLog | 5 +++++ sim/bfin/Makefile.in | 1 - sim/bfin/tconfig.h | 3 --- sim/common/ChangeLog | 15 +++++++++++++++ sim/common/Make-common.in | 1 + sim/common/cgen-types.h | 4 ---- sim/common/sim-base.h | 2 -- sim/common/sim-config.h | 4 ---- sim/common/sim-cpu.h | 2 -- sim/common/sim-model.c | 12 ++++++++++++ sim/common/sim-model.h | 14 ++++++++++++++ sim/common/sim-module.c | 2 -- sim/common/sim-profile.h | 6 ------ sim/cris/ChangeLog | 5 +++++ sim/cris/Makefile.in | 1 - sim/cris/tconfig.h | 2 -- sim/frv/ChangeLog | 5 +++++ sim/frv/Makefile.in | 1 - sim/frv/tconfig.h | 3 --- sim/iq2000/ChangeLog | 5 +++++ sim/iq2000/Makefile.in | 1 - sim/iq2000/tconfig.h | 7 ------- sim/lm32/ChangeLog | 4 ++++ sim/lm32/Makefile.in | 1 - sim/m32r/ChangeLog | 4 ++++ sim/m32r/Makefile.in | 1 - sim/sh64/ChangeLog | 5 +++++ sim/sh64/Makefile.in | 1 - sim/sh64/tconfig.h | 7 ------- 29 files changed, 75 insertions(+), 49 deletions(-) delete mode 100644 sim/iq2000/tconfig.h delete mode 100644 sim/sh64/tconfig.h diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog index 5599af66b1..744f5eb200 100644 --- a/sim/bfin/ChangeLog +++ b/sim/bfin/ChangeLog @@ -1,3 +1,8 @@ +2015-12-25 Mike Frysinger + + * Makefile.in (SIM_OBJS): Delete sim-model.o. + * tconfig.h (SIM_HAVE_MODEL): Delete. + 2015-12-25 Mike Frysinger * machs.c: Rename MACH to SIM_MACH, MACH_IMP_PROPERTIES to diff --git a/sim/bfin/Makefile.in b/sim/bfin/Makefile.in index 817fecbb63..a2b6b0b94e 100644 --- a/sim/bfin/Makefile.in +++ b/sim/bfin/Makefile.in @@ -28,7 +28,6 @@ SIM_OBJS = \ interp.o \ machs.o \ sim-hload.o \ - sim-model.o \ sim-resume.o INCLUDE = bfin-sim.h diff --git a/sim/bfin/tconfig.h b/sim/bfin/tconfig.h index 254aba9b98..3ecd1743fe 100644 --- a/sim/bfin/tconfig.h +++ b/sim/bfin/tconfig.h @@ -3,6 +3,3 @@ /* We use this so that we are passed the requesting CPU for HW acesses. Common sim core by default sets hw_system_cpu to NULL for WITH_HW. */ #define WITH_DEVICES 1 - -/* ??? Temporary hack until model support unified. */ -#define SIM_HAVE_MODEL diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index e36895a155..09f29bb9e2 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,18 @@ +2015-12-25 Mike Frysinger + + * Make-common.in (SIM_NEW_COMMON_OBJS): Add sim-model.o. + * cgen-types.h (SIM_HAVE_MODEL): Delete. + * sim-base.h: Always include sim-model.h. + * sim-config.h (WITH_DEFAULT_MODEL): Delete. + * sim-cpu.h (sim_cpu_base): Always declare mach/model members. + * sim-model.c (sim_model_init): Return when !WITH_MODEL_P. + [!WITH_MODEL_P] (sim_machs): Define. + * sim-model.h: Add some developer docs. + [!WITH_DEFAULT_MODEL] (mach_attr, WITH_DEFAULT_MODEL): Define. + (WITH_MODEL_P): Define. + * sim-module.c (modules): Always include sim_model_install. + * sim-profile.h (WITH_PROFILE_MODEL_P): Delete. + 2015-12-25 Mike Frysinger * sim-cpu.h: Rename MACH to SIM_MACH and MODEL to SIM_MODEL. diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in index 647ec80eb7..2566bf4bf5 100644 --- a/sim/common/Make-common.in +++ b/sim/common/Make-common.in @@ -190,6 +190,7 @@ SIM_NEW_COMMON_OBJS = \ sim-info.o \ sim-load.o \ sim-memopt.o \ + sim-model.o \ sim-module.o \ sim-options.o \ sim-profile.o \ diff --git a/sim/common/cgen-types.h b/sim/common/cgen-types.h index 74dc6402af..77793936f9 100644 --- a/sim/common/cgen-types.h +++ b/sim/common/cgen-types.h @@ -26,10 +26,6 @@ along with this program. If not, see . */ /* Miscellaneous cgen configury defined here as this file gets included soon enough. */ -/* Indicate we support --profile-model. */ -#undef SIM_HAVE_MODEL -#define SIM_HAVE_MODEL - /* Indicate we support --{profile,trace}-{range,function}. */ #undef SIM_HAVE_ADDR_RANGE #define SIM_HAVE_ADDR_RANGE diff --git a/sim/common/sim-base.h b/sim/common/sim-base.h index cfef6ecddc..3e15a8505e 100644 --- a/sim/common/sim-base.h +++ b/sim/common/sim-base.h @@ -82,9 +82,7 @@ typedef struct _sim_cpu sim_cpu; #include "sim-core.h" #include "sim-events.h" #include "sim-profile.h" -#ifdef SIM_HAVE_MODEL #include "sim-model.h" -#endif #include "sim-io.h" #include "sim-engine.h" #include "sim-watch.h" diff --git a/sim/common/sim-config.h b/sim/common/sim-config.h index 599b84c09c..064d936894 100644 --- a/sim/common/sim-config.h +++ b/sim/common/sim-config.h @@ -524,10 +524,6 @@ extern int current_floating_point; ? WITH_MODEL \ : current_model) -#ifndef WITH_DEFAULT_MODEL -#define WITH_DEFAULT_MODEL DEFAULT_MODEL -#endif - #define MODEL_ISSUE_IGNORE (-1) #define MODEL_ISSUE_PROCESS 1 diff --git a/sim/common/sim-cpu.h b/sim/common/sim-cpu.h index 20838e876e..f998befa08 100644 --- a/sim/common/sim-cpu.h +++ b/sim/common/sim-cpu.h @@ -100,7 +100,6 @@ typedef struct { PROFILE_DATA profile_data; #define CPU_PROFILE_DATA(cpu) (& (cpu)->base.profile_data) -#ifdef SIM_HAVE_MODEL /* Machine tables for this cpu. See sim-model.h. */ const SIM_MACH *mach; #define CPU_MACH(cpu) ((cpu)->base.mach) @@ -110,7 +109,6 @@ typedef struct { /* Model data (profiling state, etc.). */ void *model_data; #define CPU_MODEL_DATA(cpu) ((cpu)->base.model_data) -#endif /* Routines to fetch/store registers. */ CPUREG_FETCH_FN *reg_fetch; diff --git a/sim/common/sim-model.c b/sim/common/sim-model.c index 0d0c28d335..054f0bcf7f 100644 --- a/sim/common/sim-model.c +++ b/sim/common/sim-model.c @@ -190,6 +190,9 @@ sim_model_init (SIM_DESC sd) { SIM_CPU *cpu; + if (!WITH_MODEL_P) + return SIM_RC_OK; + /* If both cpu model and state architecture are set, ensure they're compatible. If only one is set, set the other. If neither are set, use the default model. STATE_ARCHITECTURE is the bfd_arch_info data @@ -241,3 +244,12 @@ sim_model_init (SIM_DESC sd) return SIM_RC_OK; } + +#if !WITH_MODEL_P +/* Set up basic model support. This is a stub for ports that do not define + models. See sim-model.h for more details. */ +const SIM_MACH *sim_machs[] = +{ + NULL +}; +#endif diff --git a/sim/common/sim-model.h b/sim/common/sim-model.h index 5baa5ce1d9..a206626b1d 100644 --- a/sim/common/sim-model.h +++ b/sim/common/sim-model.h @@ -21,6 +21,11 @@ along with this program. If not, see . */ architecture = one of sparc, mips, sh, etc. in the sparc architecture, mach = one of v6, v7, v8, sparclite, etc. in the v8 mach, model = one of supersparc, etc. + + To use the model framework, your arch needs to do a few things: + (1) Call SIM_AC_OPTION_DEFAULT_MODEL() in configure.ac. + (2) Define enum mach_attr in sim-main.h. + (3) Define sim_machs array (and all the callbacks it uses). */ /* This file is intended to be included by sim-basics.h. */ @@ -42,6 +47,15 @@ typedef struct { #define MAX_UNITS 1 #endif +#ifndef WITH_DEFAULT_MODEL +/* Just a stub for ports that do not define models. */ +enum mach_attr { _MACH_NONE }; +# define WITH_DEFAULT_MODEL NULL +# define WITH_MODEL_P 0 +#else +# define WITH_MODEL_P 1 +#endif + typedef int (MODEL_FN) (sim_cpu *, void *); typedef struct { diff --git a/sim/common/sim-module.c b/sim/common/sim-module.c index 4f23882acd..670225bd77 100644 --- a/sim/common/sim-module.c +++ b/sim/common/sim-module.c @@ -40,9 +40,7 @@ along with this program. If not, see . */ static MODULE_INSTALL_FN * const modules[] = { standard_install, sim_events_install, -#ifdef SIM_HAVE_MODEL sim_model_install, -#endif #if WITH_ENGINE sim_engine_install, #endif diff --git a/sim/common/sim-profile.h b/sim/common/sim-profile.h index 3370f0cbdb..b756af59db 100644 --- a/sim/common/sim-profile.h +++ b/sim/common/sim-profile.h @@ -102,12 +102,6 @@ SIM_RC sim_profile_set_option (SIM_DESC sd_, const char *name_, int idx_, #define WITH_PROFILE_MEMORY_P 0 #endif -/* Only build MODEL code when the target simulator has support for it */ -#ifndef SIM_HAVE_MODEL -#undef WITH_PROFILE_MODEL_P -#define WITH_PROFILE_MODEL_P 0 -#endif - /* Profiling install handler. */ MODULE_INSTALL_FN profile_install; diff --git a/sim/cris/ChangeLog b/sim/cris/ChangeLog index ff73db19a3..66ef461120 100644 --- a/sim/cris/ChangeLog +++ b/sim/cris/ChangeLog @@ -1,3 +1,8 @@ +2015-12-25 Mike Frysinger + + * Makefile.in (SIM_OBJS): Delete sim-model.o. + * tconfig.h (SIM_HAVE_MODEL): Delete. + 2015-12-25 Mike Frysinger * arch.c: Rename MACH to SIM_MACH. diff --git a/sim/cris/Makefile.in b/sim/cris/Makefile.in index f7762dd797..384922f746 100644 --- a/sim/cris/Makefile.in +++ b/sim/cris/Makefile.in @@ -24,7 +24,6 @@ CRISV32F_OBJS = crisv32f.o cpuv32.o decodev32.o modelv32.o mloopv32f.o SIM_OBJS = \ $(SIM_NEW_COMMON_OBJS) \ - sim-model.o \ cgen-utils.o cgen-trace.o cgen-scache.o \ cgen-run.o \ sim-if.o arch.o \ diff --git a/sim/cris/tconfig.h b/sim/cris/tconfig.h index 05d86233ea..2ac6c5bd80 100644 --- a/sim/cris/tconfig.h +++ b/sim/cris/tconfig.h @@ -27,6 +27,4 @@ along with this program. If not, see . */ /* For MSPR support. FIXME: revisit. */ #define WITH_DEVICES 1 -#define SIM_HAVE_MODEL - #endif /* CRIS_TCONFIG_H */ diff --git a/sim/frv/ChangeLog b/sim/frv/ChangeLog index 6fca1e1cd5..26caec46bf 100644 --- a/sim/frv/ChangeLog +++ b/sim/frv/ChangeLog @@ -1,3 +1,8 @@ +2015-12-25 Mike Frysinger + + * Makefile.in (SIM_OBJS): Delete sim-model.o. + * tconfig.h (SIM_HAVE_MODEL): Delete. + 2015-12-25 Mike Frysinger * arch.c: Rename MACH to SIM_MACH. diff --git a/sim/frv/Makefile.in b/sim/frv/Makefile.in index 62e480abb2..86095fff0d 100644 --- a/sim/frv/Makefile.in +++ b/sim/frv/Makefile.in @@ -22,7 +22,6 @@ FRV_OBJS = frv.o cpu.o decode.o sem.o model.o mloop.o cgen-par.o SIM_OBJS = \ $(SIM_NEW_COMMON_OBJS) \ sim-hload.o \ - sim-model.o \ cgen-utils.o cgen-trace.o cgen-scache.o cgen-fpu.o cgen-accfp.o \ cgen-run.o \ sim-if.o arch.o \ diff --git a/sim/frv/tconfig.h b/sim/frv/tconfig.h index 1abdc61157..e5db154719 100644 --- a/sim/frv/tconfig.h +++ b/sim/frv/tconfig.h @@ -2,6 +2,3 @@ /* For MSPR support. FIXME: revisit. */ #define WITH_DEVICES 1 - -/* ??? Temporary hack until model support unified. */ -#define SIM_HAVE_MODEL diff --git a/sim/iq2000/ChangeLog b/sim/iq2000/ChangeLog index 03cc0237ef..4ee58391d6 100644 --- a/sim/iq2000/ChangeLog +++ b/sim/iq2000/ChangeLog @@ -1,3 +1,8 @@ +2015-12-25 Mike Frysinger + + * Makefile.in (SIM_OBJS): Delete sim-model.o. + * tconfig.h: Delete file. + 2015-12-25 Mike Frysinger * arch.c: Rename MACH to SIM_MACH. diff --git a/sim/iq2000/Makefile.in b/sim/iq2000/Makefile.in index 3ca3924294..24c4a9b28b 100644 --- a/sim/iq2000/Makefile.in +++ b/sim/iq2000/Makefile.in @@ -22,7 +22,6 @@ IQ2000_OBJS = iq2000.o cpu.o decode.o sem.o model.o mloop.o SIM_OBJS = \ $(SIM_NEW_COMMON_OBJS) \ sim-hload.o \ - sim-model.o \ cgen-utils.o cgen-trace.o cgen-scache.o \ cgen-run.o \ sim-if.o arch.o \ diff --git a/sim/iq2000/tconfig.h b/sim/iq2000/tconfig.h deleted file mode 100644 index cf63d449ac..0000000000 --- a/sim/iq2000/tconfig.h +++ /dev/null @@ -1,7 +0,0 @@ -/* IQ2000 target configuration file. -*- C -*- */ - -/* For MSPR support. FIXME: revisit. */ -#define WITH_DEVICES 0 - -/* ??? Temporary hack until model support unified. */ -#define SIM_HAVE_MODEL diff --git a/sim/lm32/ChangeLog b/sim/lm32/ChangeLog index 044ce0a18c..b94ef40ec2 100644 --- a/sim/lm32/ChangeLog +++ b/sim/lm32/ChangeLog @@ -1,3 +1,7 @@ +2015-12-25 Mike Frysinger + + * Makefile.in (SIM_OBJS): Delete sim-model.o. + 2015-12-25 Mike Frysinger * arch.c: Rename MACH to SIM_MACH. diff --git a/sim/lm32/Makefile.in b/sim/lm32/Makefile.in index 91b6278b3d..7b7154955d 100644 --- a/sim/lm32/Makefile.in +++ b/sim/lm32/Makefile.in @@ -7,7 +7,6 @@ SIM_OBJS = \ $(SIM_NEW_COMMON_OBJS) \ sim-hload.o \ - sim-model.o \ cgen-utils.o cgen-trace.o cgen-scache.o \ cgen-run.o \ sim-if.o arch.o \ diff --git a/sim/m32r/ChangeLog b/sim/m32r/ChangeLog index ce71d30084..f726c3e715 100644 --- a/sim/m32r/ChangeLog +++ b/sim/m32r/ChangeLog @@ -1,3 +1,7 @@ +2015-12-25 Mike Frysinger + + * Makefile.in (SIM_OBJS): Delete sim-model.o. + 2015-12-25 Mike Frysinger * arch.c: Rename MACH to SIM_MACH. diff --git a/sim/m32r/Makefile.in b/sim/m32r/Makefile.in index 801db48391..ca5c49db96 100644 --- a/sim/m32r/Makefile.in +++ b/sim/m32r/Makefile.in @@ -27,7 +27,6 @@ TRAPS_OBJ = @traps_obj@ SIM_OBJS = \ $(SIM_NEW_COMMON_OBJS) \ sim-hload.o \ - sim-model.o \ cgen-utils.o cgen-trace.o cgen-scache.o \ cgen-run.o \ sim-if.o arch.o \ diff --git a/sim/sh64/ChangeLog b/sim/sh64/ChangeLog index 1601ff5035..9a4d1f5094 100644 --- a/sim/sh64/ChangeLog +++ b/sim/sh64/ChangeLog @@ -1,3 +1,8 @@ +2015-12-25 Mike Frysinger + + * Makefile.in (SIM_OBJS): Delete sim-model.o. + * tconfig.h: Delete file. + 2015-12-25 Mike Frysinger * arch.c: Rename MACH to SIM_MACH. diff --git a/sim/sh64/Makefile.in b/sim/sh64/Makefile.in index d1847bd826..aa84c8d35a 100644 --- a/sim/sh64/Makefile.in +++ b/sim/sh64/Makefile.in @@ -24,7 +24,6 @@ SH64_OBJS = sh64.o cpu.o sh-desc.o \ SIM_OBJS = \ $(SIM_NEW_COMMON_OBJS) \ sim-hload.o \ - sim-model.o \ cgen-utils.o cgen-trace.o cgen-scache.o \ cgen-run.o \ sim-if.o arch.o \ diff --git a/sim/sh64/tconfig.h b/sim/sh64/tconfig.h deleted file mode 100644 index b4e256f7be..0000000000 --- a/sim/sh64/tconfig.h +++ /dev/null @@ -1,7 +0,0 @@ -/* SH64 target configuration file. -*- C -*- */ - -/* For MSPR support. FIXME: revisit. */ -#define WITH_DEVICES 0 - -/* ??? Temporary hack until model support unified. */ -#define SIM_HAVE_MODEL -- 2.34.1