sim: namespace sim_machs
authorMike Frysinger <vapier@gentoo.org>
Tue, 29 Jun 2021 01:42:56 +0000 (21:42 -0400)
committerMike Frysinger <vapier@gentoo.org>
Wed, 30 Jun 2021 05:52:51 +0000 (01:52 -0400)
We want to do a single build with all arches in one binary which means
we need to namespace sim_machs on a per-arch basis.  Move it from a
global variable to the sim description structure so it can be setup at
runtime.

Changing the SIM_MODEL->num from an enum to an int is unfortunate, but
we specifically don't want to maintain a centralized list anymore, and
this was never used directly in common code, just passed to per-arch
callbacks.

35 files changed:
sim/bfin/ChangeLog
sim/bfin/interp.c
sim/bfin/machs.c
sim/bfin/machs.h
sim/bpf/ChangeLog
sim/bpf/arch.c
sim/bpf/sim-if.c
sim/common/ChangeLog
sim/common/cgen-defs.h
sim/common/cgen-utils.c
sim/common/sim-base.h
sim/common/sim-cpu.c
sim/common/sim-model.c
sim/common/sim-model.h
sim/cris/ChangeLog
sim/cris/arch.c
sim/cris/sim-if.c
sim/frv/ChangeLog
sim/frv/arch.c
sim/frv/sim-if.c
sim/iq2000/ChangeLog
sim/iq2000/arch.c
sim/iq2000/sim-if.c
sim/lm32/ChangeLog
sim/lm32/arch.c
sim/lm32/sim-if.c
sim/m32r/ChangeLog
sim/m32r/arch.c
sim/m32r/sim-if.c
sim/or1k/ChangeLog
sim/or1k/arch.c
sim/or1k/sim-if.c
sim/riscv/ChangeLog
sim/riscv/interp.c
sim/riscv/machs.c

index a26a35a136c1c29f599568641572e041a17e9e6f..6b0000ac7cf116574bb3d742d1f1756de6edc646 100644 (file)
@@ -1,3 +1,10 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * interp.c (sim_open): Set STATE_MACHS.
+       * machs.c (sim_machs): Rename to ...
+       (bfin_sim_machs): ... this.
+       * machs.h (bfin_sim_machs): New decl.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * machs.c (sim_machs): Mark const.
index ddd0e7a372e8c0cb6fcba843b0de47a70cd0dc9a..dcc7a132d765bcb6304ec939a3d03e2123d08e4a 100644 (file)
@@ -703,6 +703,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback,
                                       sizeof (struct bfin_board_data));
 
   /* Set default options before parsing user options.  */
+  STATE_MACHS (sd) = bfin_sim_machs;
   current_alignment = STRICT_ALIGNMENT;
   current_target_byte_order = BFD_ENDIAN_LITTLE;
 
index ff49bb7c3bb037fffc92ff283d8373e9dfc6b664..a6f7033a1aefe9df1d7dd4d1ba10d8a7ee5b1175 100644 (file)
@@ -1962,7 +1962,7 @@ static const SIM_MACH bfin_mach =
   bfin_prepare_run
 };
 
-const SIM_MACH * const sim_machs[] =
+const SIM_MACH * const bfin_sim_machs[] =
 {
   & bfin_mach,
   NULL
index 105f50c160b939a07502a4f502a5b09a06eea795..55c260a15b55bf2d782475eda5422cf396a6d965 100644 (file)
@@ -32,6 +32,7 @@ struct bfin_board_data {
 void bfin_model_cpu_init (SIM_DESC, SIM_CPU *);
 bu32 bfin_model_get_chipid (SIM_DESC);
 bu32 bfin_model_get_dspid (SIM_DESC);
+extern const SIM_MACH * const bfin_sim_machs[];
 
 #define BFIN_COREMMR_CEC_BASE          0xFFE02100
 #define BFIN_COREMMR_CEC_SIZE          (4 * 5)
index 2d847bb0278c2bd511c40d27e480895fb5028000..959c63f97a969dce26770df64d6f23e952268188 100644 (file)
@@ -1,3 +1,10 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * arch.c (sim_machs): Rename to ...
+       (bpf_sim_machs): ... this.
+       * sim-if.c (bpf_sim_machs): New decl.
+       (sim_open): Set STATE_MACH.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * arch.c (sim_machs): Mark const.
index 8ceaa34cef831fc44df435ae8d57636cf94e4f00..c9f98c5962db62013c85ac701262bbb186cb70a8 100644 (file)
@@ -25,7 +25,7 @@ This file is part of the GNU simulators.
 #include "sim-main.h"
 #include "bfd.h"
 
-const SIM_MACH * const sim_machs[] =
+const SIM_MACH * const bpf_sim_machs[] =
 {
 #ifdef HAVE_CPU_BPFBF
   & bpf_mach,
index 436cc86f415d357526ee72b78a5ed750324bc4c7..150f5cd67861083d914cbccbbe9876171842e0a4 100644 (file)
@@ -111,6 +111,8 @@ bpf_free_state (SIM_DESC sd)
   sim_state_free (sd);
 }
 
+extern const SIM_MACH * const bpf_sim_machs[];
+
 /* Create an instance of the simulator.  */
 
 SIM_DESC
@@ -125,6 +127,9 @@ sim_open (SIM_OPEN_KIND kind,
 
   SIM_DESC sd = sim_state_alloc (kind, callback);
 
+  /* Set default options before parsing user options.  */
+  STATE_MACHS (sd) = bpf_sim_machs;
+
   if (sim_cpu_alloc_all (sd, 1) != SIM_RC_OK)
     goto error;
 
index 5d86dcbe7d02603dfbf8740356806b0a1ec36956..63e7f3be345d9302f10b4976c36422dce231a107 100644 (file)
@@ -1,3 +1,27 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * cgen-defs.h (cgen_cpu_max_extra_bytes): Add SIM_DESC arg.
+       * cgen-utils.c (cgen_cpu_max_extra_bytes): Likewise.  Change sim_machs
+       to STATE_MACHS.
+       * sim-base.h (struct sim_state): Add machs.
+       (STATE_MACHS): New define.
+       * sim-cpu.c (sim_cpu_alloc): Pass sd to cgen_cpu_max_extra_bytes.
+       * sim-model.c (model_option_handler): Pass sd to sim_model_lookup.
+       Change sim_machs to STATE_MACHS.
+       (sim_model_lookup): Add SIM_DESC arg.  Change sim_machs to
+       STATE_MACHS.
+       (sim_mach_lookup): Likewiwse.
+       (sim_mach_lookup_bfd_name): Likewise.
+       (sim_model_init): Pass sd to sim_model_lookup and
+       sim_mach_lookup_bfd_name.
+       (sim_machs): Delete.
+       * sim-model.h (enum mach_attr): Delete.
+       (SIM_MODEL): Change num to int.
+       (sim_machs): Delete.
+       (sim_model_lookup): Add SIM_DESC arg.
+       (sim_mach_lookup): Likewise.
+       (sim_mach_lookup_bfd_name): Likewise.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * Make-common.in (Makefile): Replace $(arch) and pass more files to
index 520c29cb3b9f3242796d696af4b124a86455e694..b6ed2ee3a20534d6732cbf1b90863fbd2f9f6b9a 100644 (file)
@@ -146,7 +146,7 @@ extern CPU_INSN_NAME_FN cgen_insn_name;
 /* Return the maximum number of extra bytes required for a sim_cpu struct.  */
 /* ??? Ok, yes, this is less pretty than it should be.  Give me a better
    language [or suggest a better way].  */
-extern int cgen_cpu_max_extra_bytes (void);
+extern int cgen_cpu_max_extra_bytes (SIM_DESC);
 
 /* Target supplied routine to process an invalid instruction.  */
 extern SEM_PC sim_engine_invalid_insn (SIM_CPU *, IADDR, SEM_PC);
index 8c0856c795b83fbf0c126a0693be7f0bf66f818a..d9c3ea9aa80432812efba6edebaee95c3c85bd87 100644 (file)
@@ -101,14 +101,16 @@ cgen_insn_name (SIM_CPU *cpu, int i)
 /* Return the maximum number of extra bytes required for a SIM_CPU struct.  */
 
 int
-cgen_cpu_max_extra_bytes (void)
+cgen_cpu_max_extra_bytes (SIM_DESC sd)
 {
-  int i;
+  const SIM_MACH * const *machp;
   int extra = 0;
 
-  for (i = 0; sim_machs[i] != 0; ++i)
+  SIM_ASSERT (STATE_MACHS (sd) != NULL);
+
+  for (machp = STATE_MACHS (sd); *machp != NULL; ++machp)
     {
-      int size = IMP_PROPS_SIM_CPU_SIZE (MACH_IMP_PROPS (sim_machs[i]));
+      int size = IMP_PROPS_SIM_CPU_SIZE (MACH_IMP_PROPS (*machp));
       if (size > extra)
        extra = size;
     }
index 054b2ba0c6ebd886957922a03f30b10b555fb5fa..8eae988eb50be9a982b694f708f98d0288d05be5 100644 (file)
@@ -143,6 +143,10 @@ struct sim_state {
   const char *target;
 #define STATE_TARGET(sd) ((sd)->target)
 
+  /* List of machs available.  */
+  const SIM_MACH * const *machs;
+#define STATE_MACHS(sd) ((sd)->machs)
+
   /* In standalone simulator, this is the program's arguments passed
      on the command line.  */
   char **prog_argv;
index 587a3e8c9e1c9c2b753ab2cde03dcee8796b0674..bde3e617ce319d369730e93d338b6de7a9dc3e5e 100644 (file)
@@ -48,7 +48,7 @@ sim_cpu_alloc (SIM_DESC sd)
   int extra_bytes = 0;
 
 #ifdef CGEN_ARCH
-  extra_bytes += cgen_cpu_max_extra_bytes ();
+  extra_bytes += cgen_cpu_max_extra_bytes (sd);
 #endif
 
   return zalloc (sizeof (sim_cpu) + extra_bytes);
index bfdb3c24bc8bb35766f5217d177d0c502e29faec..4c5e463f1a07de3faa4b6405c2112362218d4ffc 100644 (file)
@@ -62,7 +62,7 @@ model_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt,
     {
     case OPTION_MODEL :
       {
-       const SIM_MODEL *model = sim_model_lookup (arg);
+       const SIM_MODEL *model = sim_model_lookup (sd, arg);
        if (! model)
          {
            sim_io_eprintf (sd, "unknown model `%s'\n", arg);
@@ -76,7 +76,14 @@ model_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt,
       {
        const SIM_MACH * const *machp;
        const SIM_MODEL *model;
-       for (machp = & sim_machs[0]; *machp != NULL; ++machp)
+
+       if (STATE_MACHS (sd) == NULL)
+         {
+           sim_io_printf (sd, "This target does not support any models\n");
+           return SIM_RC_FAIL;
+         }
+
+       for (machp = STATE_MACHS(sd); *machp != NULL; ++machp)
          {
            sim_io_printf (sd, "Models for architecture `%s':\n",
                           MACH_NAME (*machp));
@@ -138,12 +145,15 @@ sim_model_set (SIM_DESC sd, sim_cpu *cpu, const SIM_MODEL *model)
    Result is pointer to MODEL entry or NULL if not found.  */
 
 const SIM_MODEL *
-sim_model_lookup (const char *name)
+sim_model_lookup (SIM_DESC sd, const char *name)
 {
   const SIM_MACH * const *machp;
   const SIM_MODEL *model;
 
-  for (machp = & sim_machs[0]; *machp != NULL; ++machp)
+  if (STATE_MACHS (sd) == NULL)
+    return NULL;
+
+  for (machp = STATE_MACHS (sd); *machp != NULL; ++machp)
     {
       for (model = MACH_MODELS (*machp); MODEL_NAME (model) != NULL; ++model)
        {
@@ -158,11 +168,14 @@ sim_model_lookup (const char *name)
    Result is pointer to MACH entry or NULL if not found.  */
 
 const SIM_MACH *
-sim_mach_lookup (const char *name)
+sim_mach_lookup (SIM_DESC sd, const char *name)
 {
   const SIM_MACH * const *machp;
 
-  for (machp = & sim_machs[0]; *machp != NULL; ++machp)
+  if (STATE_MACHS (sd) == NULL)
+    return NULL;
+
+  for (machp = STATE_MACHS (sd); *machp != NULL; ++machp)
     {
       if (strcmp (MACH_NAME (*machp), name) == 0)
        return *machp;
@@ -174,11 +187,14 @@ sim_mach_lookup (const char *name)
    Result is pointer to MACH entry or NULL if not found.  */
 
 const SIM_MACH *
-sim_mach_lookup_bfd_name (const char *name)
+sim_mach_lookup_bfd_name (SIM_DESC sd, const char *name)
 {
   const SIM_MACH * const *machp;
 
-  for (machp = & sim_machs[0]; *machp != NULL; ++machp)
+  if (STATE_MACHS (sd) == NULL)
+    return NULL;
+
+  for (machp = STATE_MACHS (sd); *machp != NULL; ++machp)
     {
       if (strcmp (MACH_BFD_NAME (*machp), name) == 0)
        return *machp;
@@ -209,7 +225,7 @@ sim_model_init (SIM_DESC sd)
       && ! CPU_MACH (cpu))
     {
       /* Set the default model.  */
-      const SIM_MODEL *model = sim_model_lookup (WITH_DEFAULT_MODEL);
+      const SIM_MODEL *model = sim_model_lookup (sd, WITH_DEFAULT_MODEL);
       SIM_ASSERT (model != NULL);
       sim_model_set (sd, NULL, model);
     }
@@ -230,7 +246,8 @@ sim_model_init (SIM_DESC sd)
     {
       /* Use the default model for the selected machine.
         The default model is the first one in the list.  */
-      const SIM_MACH *mach = sim_mach_lookup_bfd_name (STATE_ARCHITECTURE (sd)->printable_name);
+      const SIM_MACH *mach =
+       sim_mach_lookup_bfd_name (sd, STATE_ARCHITECTURE (sd)->printable_name);
 
       if (mach == NULL)
        {
@@ -247,12 +264,3 @@ sim_model_init (SIM_DESC sd)
 
   return SIM_RC_OK;
 }
-\f
-#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 * const sim_machs[] =
-{
-  NULL
-};
-#endif
index d6edf649d6e28cc27a3f6c72108ea0b51696e338..e735feb4b9ad2dddfdd914f60bfc08b52b370194 100644 (file)
@@ -48,8 +48,6 @@ typedef struct {
 #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
@@ -92,7 +90,7 @@ typedef struct {
   /* This is the argument to bfd_scan_arch.  */
   const char *bfd_name;
 #define MACH_BFD_NAME(m) ((m)->bfd_name)
-  enum mach_attr num;
+  int num;
 #define MACH_NUM(m) ((m)->num)
 
   int word_bitsize;
@@ -136,19 +134,13 @@ typedef struct model {
 #define MODEL_INIT(m) ((m)->init)
 } SIM_MODEL;
 
-/* Tables of supported machines.  */
-/* ??? In a simulator of multiple architectures, will need multiple copies of
-   this.  Have an `archs' array that contains a pointer to the machs array
-   for each (which in turn has a pointer to the models array for each).  */
-extern const SIM_MACH * const sim_machs[];
-
 /* Model module handlers.  */
 extern MODULE_INSTALL_FN sim_model_install;
 
 /* Support routines.  */
 extern void sim_model_set (SIM_DESC sd_, sim_cpu *cpu_, const SIM_MODEL *model_);
-extern const SIM_MODEL *sim_model_lookup (const char *name_);
-extern const SIM_MACH *sim_mach_lookup (const char *name_);
-extern const SIM_MACH *sim_mach_lookup_bfd_name (const char *bfd_name_);
+extern const SIM_MODEL *sim_model_lookup (SIM_DESC, const char *name_);
+extern const SIM_MACH *sim_mach_lookup (SIM_DESC, const char *name_);
+extern const SIM_MACH *sim_mach_lookup_bfd_name (SIM_DESC, const char *bfd_name_);
 
 #endif /* SIM_MODEL_H */
index bb67da67ceaf71dcaf4265c0bbbd190c252dafd5..292085038d554a5cab0784955b44fdd782d8ad14 100644 (file)
@@ -1,3 +1,10 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * arch.c (sim_machs): Rename to ...
+       (cris_sim_machs): ... this.
+       * sim-if.c (cris_sim_machs): New decl.
+       (sim_open): Set STATE_MACH.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * Makefile.in (stamp-v10fcpu): Do not insert cgen-ops.h include.
index 1635ef6a9557a21f8f54a873e08e2dd631499569..cd83edeaaedc709264a9a00f90d0a882399b755d 100644 (file)
@@ -24,7 +24,7 @@ This file is part of the GNU simulators.
 #include "sim-main.h"
 #include "bfd.h"
 
-const SIM_MACH * const sim_machs[] =
+const SIM_MACH * const cris_sim_machs[] =
 {
 #ifdef HAVE_CPU_CRISV10F
   & crisv10_mach,
index 992493935212de24288a112ec3aadf0a328c1ef2..37a1d5b558a0c4110d4b1f3cbbaf4fe973e3bb9b 100644 (file)
@@ -608,6 +608,8 @@ cris_handle_interpreter (SIM_DESC sd, struct bfd *abfd)
   return ok;
 }
 
+extern const SIM_MACH * const cris_sim_machs[];
+
 /* Create an instance of the simulator.  */
 
 SIM_DESC
@@ -656,6 +658,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
   bfd_byte sp_init[4] = {0, 0, 0, 0};
 
   /* Set default options before parsing user options.  */
+  STATE_MACHS (sd) = cris_sim_machs;
   current_target_byte_order = BFD_ENDIAN_LITTLE;
 
   /* The cpu data is kept in a separately allocated chunk of memory.  */
index 78208fbf1541ca553070e1da9d73a48cf9481d38..7cc35c5f74d773ae4f4927bc70f3a8c4b94e5421 100644 (file)
@@ -1,3 +1,10 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * arch.c (sim_machs): Rename to ...
+       (frv_sim_machs): ... this.
+       * sim-if.c (frv_sim_machs): New decl.
+       (sim_open): Set STATE_MACH.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * arch.c (sim_machs): Mark const.
index f58ed1168162608aded755b377dfbbbd21beb9be..db18ec4d72772563362b2cad9de53c3cfdcc5688 100644 (file)
@@ -24,7 +24,7 @@ This file is part of the GNU simulators.
 #include "sim-main.h"
 #include "bfd.h"
 
-const SIM_MACH * const sim_machs[] =
+const SIM_MACH * const frv_sim_machs[] =
 {
 #ifdef HAVE_CPU_FRVBF
   & frv_mach,
index 530a8dd04289e3d86af8a9ec5bfb45bf60476b93..82f4bd845f5da605a421ac245aa678217b929dce 100644 (file)
@@ -42,6 +42,8 @@ free_state (SIM_DESC sd)
   sim_state_free (sd);
 }
 
+extern const SIM_MACH * const frv_sim_machs[];
+
 /* Create an instance of the simulator.  */
 
 SIM_DESC
@@ -54,6 +56,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, bfd *abfd,
   SIM_DESC sd = sim_state_alloc (kind, callback);
 
   /* Set default options before parsing user options.  */
+  STATE_MACHS (sd) = frv_sim_machs;
   current_alignment = STRICT_ALIGNMENT;
   current_target_byte_order = BFD_ENDIAN_BIG;
 
index cc5d594e0a930c1ce051a25f474ffb9a058130b4..130c6bf726cf4dd1b59fad85387245c4e71c0dd5 100644 (file)
@@ -1,3 +1,10 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * arch.c (sim_machs): Rename to ...
+       (iq2000_sim_machs): ... this.
+       * sim-if.c (iq2000_sim_machs): New decl.
+       (sim_open): Set STATE_MACH.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * arch.c (sim_machs): Mark const.
index 22dc565b1bcac09f7b982401d1beb257490a8264..523dfe1bc005f9e5531670e123ac37d670361f7a 100644 (file)
@@ -24,7 +24,7 @@ This file is part of the GNU simulators.
 #include "sim-main.h"
 #include "bfd.h"
 
-const SIM_MACH * const sim_machs[] =
+const SIM_MACH * const iq2000_sim_machs[] =
 {
 #ifdef HAVE_CPU_IQ2000BF
   & iq2000_mach,
index 1129cee914579086978ba85eb76ab51382112e02..6df4b944300e5e0d140e4b9b85409e839fae5f14 100644 (file)
@@ -50,6 +50,8 @@ free_state (SIM_DESC sd)
   sim_state_free (sd);
 }
 
+extern const SIM_MACH * const iq2000_sim_machs[];
+
 /* Create an instance of the simulator.  */
 
 SIM_DESC
@@ -61,6 +63,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
   SIM_DESC sd = sim_state_alloc (kind, callback);
 
   /* Set default options before parsing user options.  */
+  STATE_MACHS (sd) = iq2000_sim_machs;
   current_alignment = STRICT_ALIGNMENT;
   current_target_byte_order = BFD_ENDIAN_BIG;
 
index 689eb6461afbeae9a2e62a8809653e09e871a640..6d2d238d66f432773c09e527566fa76afdcf0aa8 100644 (file)
@@ -1,3 +1,10 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * arch.c (sim_machs): Rename to ...
+       (lm32_sim_machs): ... this.
+       * sim-if.c (lm32_sim_machs): New decl.
+       (sim_open): Set STATE_MACH.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * arch.c (sim_machs): Mark const.
index 72fe4b43b87bd58c48ba2f2e265761ad18379deb..4c485140fdb70bba57812facdd1fa3d5515184d6 100644 (file)
@@ -24,7 +24,7 @@ This file is part of the GNU simulators.
 #include "sim-main.h"
 #include "bfd.h"
 
-const SIM_MACH * const sim_machs[] =
+const SIM_MACH * const lm32_sim_machs[] =
 {
 #ifdef HAVE_CPU_LM32BF
   & lm32_mach,
index 0142868834d52d2f4be0a2609f7805fd7166c32e..abb9ad7b042c43011da8d72f05cd2288b46bcb7b 100644 (file)
@@ -80,6 +80,8 @@ find_limit (SIM_DESC sd)
   return (addr + 65536) & ~(0xffffUL);
 }
 
+extern const SIM_MACH * const lm32_sim_machs[];
+
 /* Create an instance of the simulator.  */
 
 SIM_DESC
@@ -92,6 +94,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
   unsigned long base, limit;
 
   /* Set default options before parsing user options.  */
+  STATE_MACHS (sd) = lm32_sim_machs;
   current_alignment = STRICT_ALIGNMENT;
   current_target_byte_order = BFD_ENDIAN_BIG;
 
index d8171c600aeecc926bf1a8a4e70051ea9004428a..d2abefc90b969f8d6eac1d27a4b752e7952f110a 100644 (file)
@@ -1,3 +1,10 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * arch.c (sim_machs): Rename to ...
+       (m32r_sim_machs): ... this.
+       * sim-if.c (m32r_sim_machs): New decl.
+       (sim_open): Set STATE_MACH.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * arch.c (sim_machs): Mark const.
index 4b789759eb65d8a5e27709e3038f27febd1e8782..b25cd3f990cc58604b7431131fb26803609c24ba 100644 (file)
@@ -24,7 +24,7 @@ This file is part of the GNU simulators.
 #include "sim-main.h"
 #include "bfd.h"
 
-const SIM_MACH * const sim_machs[] =
+const SIM_MACH * const m32r_sim_machs[] =
 {
 #ifdef HAVE_CPU_M32RBF
   & m32r_mach,
index 3d8db0332fd6f3ae5c0b609982515cc7f42b70ff..33ae7c106e391b42016202982f39f0ea4d1fad85 100644 (file)
@@ -44,6 +44,8 @@ free_state (SIM_DESC sd)
   sim_state_free (sd);
 }
 
+extern const SIM_MACH * const m32r_sim_machs[];
+
 /* Create an instance of the simulator.  */
 
 SIM_DESC
@@ -55,6 +57,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
   int i;
 
   /* Set default options before parsing user options.  */
+  STATE_MACHS (sd) = m32r_sim_machs;
   current_alignment = STRICT_ALIGNMENT;
   current_target_byte_order = BFD_ENDIAN_BIG;
 
index 89a89aca725d05c92fd0c21a573dbd1ef5a1e45a..94e7e0e8c2ca0e01a39177550dd41ab91b4d3a4c 100644 (file)
@@ -1,3 +1,10 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * arch.c (sim_machs): Rename to ...
+       (or1k_sim_machs): ... this.
+       * sim-if.c (or1k_sim_machs): New decl.
+       (sim_open): Set STATE_MACH.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * arch.c (sim_machs): Mark const.
index ef3c403c9435fd1947d5597b3d8fbf692dbcc0a1..87b37249fb31ddf03b107edb3e89a0fb8844bdbe 100644 (file)
@@ -25,7 +25,7 @@ This file is part of the GNU simulators.
 #include "sim-main.h"
 #include "bfd.h"
 
-const SIM_MACH * const sim_machs[] =
+const SIM_MACH * const or1k_sim_machs[] =
 {
 #ifdef HAVE_CPU_OR1K32BF
   & or32_mach,
index 06d7dcb61b238a0b47ea1ccad22c095e3d58ef74..e8353887c828e4adee7269d061fce5a2aa5f8604 100644 (file)
@@ -150,6 +150,8 @@ or1k_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt, char *arg,
   return SIM_RC_FAIL;
 }
 
+extern const SIM_MACH * const or1k_sim_machs[];
+
 /* Create an instance of the simulator.  */
 
 SIM_DESC
@@ -161,6 +163,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
   int i;
 
   /* Set default options before parsing user options.  */
+  STATE_MACHS (sd) = or1k_sim_machs;
   current_target_byte_order = BFD_ENDIAN_BIG;
 
   /* The cpu data is kept in a separately allocated chunk of memory.  */
index 69c0808ce327edc465ddea8989ec1d8c4a8986a8..1c98ed58338d980329d54b19f3c8a7a38d292659 100644 (file)
@@ -1,3 +1,10 @@
+2021-06-30  Mike Frysinger  <vapier@gentoo.org>
+
+       * interp.c (sim_open): Set STATE_MACHS.
+       (riscv_sim_machs): New decl.
+       * machs.c (sim_machs): Rename to ...
+       (riscv_sim_machs): ... this.
+
 2021-06-29  Mike Frysinger  <vapier@gentoo.org>
 
        * machs.c (sim_machs): Mark const.
index 8b96677634f9e4d83226f7ce8421fa5a5831f42c..8908ed12ae874f5e80e8369d15ea50db7bba76f2 100644 (file)
@@ -53,6 +53,8 @@ free_state (SIM_DESC sd)
   sim_state_free (sd);
 }
 
+extern const SIM_MACH * const riscv_sim_machs[];
+
 SIM_DESC
 sim_open (SIM_OPEN_KIND kind, host_callback *callback,
          struct bfd *abfd, char * const *argv)
@@ -63,6 +65,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback,
                                       sizeof (struct riscv_sim_state));
 
   /* Set default options before parsing user options.  */
+  STATE_MACHS (sd) = riscv_sim_machs;
   current_target_byte_order = BFD_ENDIAN_LITTLE;
 
   /* The cpu data is kept in a separately allocated chunk of memory.  */
index eb75a1dd2002b7b2d781d36992f2993daab1611e..339e5ba4754dcf4c3c5bed6daedc5d3c9e94e98a 100644 (file)
@@ -111,7 +111,7 @@ static const SIM_MACH rv128i_mach =
 #endif
 
 /* Order matters here.  */
-const SIM_MACH * const sim_machs[] =
+const SIM_MACH * const riscv_sim_machs[] =
 {
 #if WITH_TARGET_WORD_BITSIZE >= 128
   &rv128i_mach,