This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] sim: sim-model: build for everyone [committed]


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 5599af6..744f5eb 100644
--- a/sim/bfin/ChangeLog
+++ b/sim/bfin/ChangeLog
@@ -1,5 +1,10 @@
 2015-12-25  Mike Frysinger  <vapier@gentoo.org>
 
+	* Makefile.in (SIM_OBJS): Delete sim-model.o.
+	* tconfig.h (SIM_HAVE_MODEL): Delete.
+
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
 	* machs.c: Rename MACH to SIM_MACH, MACH_IMP_PROPERTIES to
 	SIM_MACH_IMP_PROPERTIES, and MODEL to SIM_MODEL.
 
diff --git a/sim/bfin/Makefile.in b/sim/bfin/Makefile.in
index 817fecb..a2b6b0b 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 254aba9..3ecd174 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 e36895a..09f29bb 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,5 +1,20 @@
 2015-12-25  Mike Frysinger  <vapier@gentoo.org>
 
+	* 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  <vapier@gentoo.org>
+
 	* sim-cpu.h: Rename MACH to SIM_MACH and MODEL to SIM_MODEL.
 	* sim-model.c: Likewise.
 	* sim-model.h: Likewise.  Rename MACH_IMP_PROPERTIES to
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index 647ec80..2566bf4 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 74dc640..7779393 100644
--- a/sim/common/cgen-types.h
+++ b/sim/common/cgen-types.h
@@ -26,10 +26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* 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 cfef6ec..3e15a85 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 599b84c..064d936 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 20838e8..f998bef 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 0d0c28d..054f0bc 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 5baa5ce..a206626 100644
--- a/sim/common/sim-model.h
+++ b/sim/common/sim-model.h
@@ -21,6 +21,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
    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 4f23882..670225b 100644
--- a/sim/common/sim-module.c
+++ b/sim/common/sim-module.c
@@ -40,9 +40,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 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 3370f0c..b756af5 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 ff73db1..66ef461 100644
--- a/sim/cris/ChangeLog
+++ b/sim/cris/ChangeLog
@@ -1,5 +1,10 @@
 2015-12-25  Mike Frysinger  <vapier@gentoo.org>
 
+	* Makefile.in (SIM_OBJS): Delete sim-model.o.
+	* tconfig.h (SIM_HAVE_MODEL): Delete.
+
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
 	* arch.c: Rename MACH to SIM_MACH.
 	* cpuall.h: Likewise.
 	* modelv10.c: Rename MACH to SIM_MACH, MACH_IMP_PROPERTIES to
diff --git a/sim/cris/Makefile.in b/sim/cris/Makefile.in
index f7762dd..384922f 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 05d8623..2ac6c5b 100644
--- a/sim/cris/tconfig.h
+++ b/sim/cris/tconfig.h
@@ -27,6 +27,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* 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 6fca1e1..26caec4 100644
--- a/sim/frv/ChangeLog
+++ b/sim/frv/ChangeLog
@@ -1,5 +1,10 @@
 2015-12-25  Mike Frysinger  <vapier@gentoo.org>
 
+	* Makefile.in (SIM_OBJS): Delete sim-model.o.
+	* tconfig.h (SIM_HAVE_MODEL): Delete.
+
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
 	* arch.c: Rename MACH to SIM_MACH.
 	* cpuall.h: Likewise.
 	* model.c: Rename MACH to SIM_MACH, MACH_IMP_PROPERTIES to
diff --git a/sim/frv/Makefile.in b/sim/frv/Makefile.in
index 62e480a..86095ff 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 1abdc61..e5db154 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 03cc023..4ee5839 100644
--- a/sim/iq2000/ChangeLog
+++ b/sim/iq2000/ChangeLog
@@ -1,5 +1,10 @@
 2015-12-25  Mike Frysinger  <vapier@gentoo.org>
 
+	* Makefile.in (SIM_OBJS): Delete sim-model.o.
+	* tconfig.h: Delete file.
+
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
 	* arch.c: Rename MACH to SIM_MACH.
 	* cpuall.h: Likewise.
 	* model.c: Rename MACH to SIM_MACH, MACH_IMP_PROPERTIES to
diff --git a/sim/iq2000/Makefile.in b/sim/iq2000/Makefile.in
index 3ca3924..24c4a9b 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 cf63d44..0000000
--- 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 044ce0a..b94ef40 100644
--- a/sim/lm32/ChangeLog
+++ b/sim/lm32/ChangeLog
@@ -1,5 +1,9 @@
 2015-12-25  Mike Frysinger  <vapier@gentoo.org>
 
+	* Makefile.in (SIM_OBJS): Delete sim-model.o.
+
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
 	* arch.c: Rename MACH to SIM_MACH.
 	* cpuall.h: Likewise.
 	* model.c: Rename MACH to SIM_MACH, MACH_IMP_PROPERTIES to
diff --git a/sim/lm32/Makefile.in b/sim/lm32/Makefile.in
index 91b6278..7b71549 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 ce71d30..f726c3e 100644
--- a/sim/m32r/ChangeLog
+++ b/sim/m32r/ChangeLog
@@ -1,5 +1,9 @@
 2015-12-25  Mike Frysinger  <vapier@gentoo.org>
 
+	* Makefile.in (SIM_OBJS): Delete sim-model.o.
+
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
 	* arch.c: Rename MACH to SIM_MACH.
 	* cpuall.h: Likewise.
 	* model.c: Rename MACH to SIM_MACH, MACH_IMP_PROPERTIES to
diff --git a/sim/m32r/Makefile.in b/sim/m32r/Makefile.in
index 801db48..ca5c49d 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 1601ff5..9a4d1f5 100644
--- a/sim/sh64/ChangeLog
+++ b/sim/sh64/ChangeLog
@@ -1,5 +1,10 @@
 2015-12-25  Mike Frysinger  <vapier@gentoo.org>
 
+	* Makefile.in (SIM_OBJS): Delete sim-model.o.
+	* tconfig.h: Delete file.
+
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
 	* arch.c: Rename MACH to SIM_MACH.
 	* cpuall.h: Likewise.
 	* sh64.c: Rename MACH to SIM_MACH, MACH_IMP_PROPERTIES to
diff --git a/sim/sh64/Makefile.in b/sim/sh64/Makefile.in
index d1847bd..aa84c8d 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 b4e256f..0000000
--- 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.6.2


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]