]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - sim/common/sim-model.c
Update years in copyright notice for the GDB files.
[thirdparty/binutils-gdb.git] / sim / common / sim-model.c
index e40d5e160cfd4ac08d025bdca84227874cc3709f..f8c3b33d2671ea85fa58d6ebeffd9c24d8c636b3 100644 (file)
@@ -1,6 +1,5 @@
 /* Model support.
-   Copyright (C) 1996, 1997, 1998, 2007, 2008, 2009, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 1996-2013 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
 
 This file is part of GDB, the GNU debugger.
@@ -19,6 +18,7 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "sim-main.h"
+#include "sim-model.h"
 #include "libiberty.h"
 #include "sim-options.h"
 #include "sim-io.h"
@@ -31,13 +31,24 @@ static DECLARE_OPTION_HANDLER (model_option_handler);
 
 static MODULE_INIT_FN sim_model_init;
 
-#define OPTION_MODEL (OPTION_START + 0)
+enum {
+  OPTION_MODEL = OPTION_START,
+  OPTION_MODEL_INFO,
+};
 
 static const OPTION model_options[] = {
   { {"model", required_argument, NULL, OPTION_MODEL},
       '\0', "MODEL", "Specify model to simulate",
-      model_option_handler },
-  { {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL }
+      model_option_handler, NULL },
+
+  { {"model-info", no_argument, NULL, OPTION_MODEL_INFO},
+      '\0', NULL, "List selectable models",
+      model_option_handler, NULL },
+  { {"info-model", no_argument, NULL, OPTION_MODEL_INFO},
+      '\0', NULL, NULL,
+      model_option_handler, NULL },
+
+  { {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL, NULL }
 };
 
 static SIM_RC
@@ -57,6 +68,22 @@ model_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt,
        sim_model_set (sd, cpu, model);
        break;
       }
+
+    case OPTION_MODEL_INFO :
+      {
+       const MACH **machp;
+       const MODEL *model;
+       for (machp = & sim_machs[0]; *machp != NULL; ++machp)
+         {
+           sim_io_printf (sd, "Models for architecture `%s':\n",
+                          MACH_NAME (*machp));
+           for (model = MACH_MODELS (*machp); MODEL_NAME (model) != NULL;
+                ++model)
+             sim_io_printf (sd, " %s", MODEL_NAME (model));
+           sim_io_printf (sd, "\n");
+         }
+       break;
+      }
     }
 
   return SIM_RC_OK;