* sim-options.c (standard_options): Add --endian.
authorDavid Edelsohn <dje.gcc@gmail.com>
Fri, 18 Apr 1997 21:32:07 +0000 (21:32 +0000)
committerDavid Edelsohn <dje.gcc@gmail.com>
Fri, 18 Apr 1997 21:32:07 +0000 (21:32 +0000)
(standard_option_handler): Likewise.

sim/common/ChangeLog
sim/common/sim-options.c

index 078b3d1edf5fe180827b03cac7d037a833b0e24c..c5bff2495d76d82068892efbd13ad22e70bb4e63 100644 (file)
@@ -1,5 +1,8 @@
 Fri Apr 18 11:14:43 1997  Doug Evans  <dje@canuck.cygnus.com>
 
+       * sim-options.c (standard_options): Add --endian.
+       (standard_option_handler): Likewise.
+
        * nrun.c: #include <signal.h>.
        (main, cntrl_c): Wrap calls to sim_resume in a SIGINT
        handler that calls sim_stop ().
index 7daa498e8490f0115fabc4d816953a8ee13d3048..b4f7d3040dd087211d1c69b35d2d53b9ec58e0bf 100644 (file)
@@ -70,6 +70,17 @@ static DECLARE_OPTION_HANDLER (standard_option_handler);
    options to another table or use a HAVE_FOO macro to ifdef out unavailable
    options.  */
 
+/* ??? One might want to conditionally compile out the entries that
+   aren't enabled.  There's a distinction, however, between options a
+   simulator can't support and options that haven't been configured in.
+   Certainly options a simulator can't support shouldn't appear in the
+   output of --help.  Whether the same thing applies to options that haven't
+   been configured in or not isn't something I can get worked up over.
+   [Note that conditionally compiling them out might simply involve moving
+   the option to another table.]
+   If you decide to conditionally compile them out as well, delete this
+   comment and add a comment saying that that is the rule.  */
+
 #define OPTION_DEBUG_INSN      (OPTION_START + 0)
 #define OPTION_DEBUG_FILE      (OPTION_START + 1)
 #define OPTION_TRACE_INSN      (OPTION_START + 2)
@@ -92,6 +103,12 @@ static const OPTION standard_options[] =
       'v', NULL, "Verbose output",
       standard_option_handler },
 
+#if defined (SIM_HAVE_BIENDIAN) /* ??? && WITH_TARGET_BYTE_ORDER == 0 */
+  { {"endian", required_argument, NULL, 'E'},
+      'E', "big|little", "Set endianness",
+      standard_option_handler },
+#endif
+
   { {"debug", no_argument, NULL, 'D'},
       'D', NULL, "Print debugging messages",
       standard_option_handler },
@@ -138,7 +155,7 @@ static const OPTION standard_options[] =
 
 #ifdef SIM_HAVE_SIMCACHE
   { {"simcache-size", required_argument, NULL, 'c'},
-      'c', "SIM CACHE SIZE", "Specify size of simulator instruction cache",
+      'c', "SIM CACHE SIZE", "Specify size of simulator execution cache",
       standard_option_handler },
 #endif
 
@@ -150,7 +167,7 @@ static const OPTION standard_options[] =
 
 #ifdef SIM_HAVE_MAX_INSNS
   { {"max-insns", required_argument, NULL, 'M'},
-      'M', "MAX INSNS", "Specify maximum instructions to execute",
+      'M', "MAX INSNS", "Specify maximum number of instructions to execute",
       standard_option_handler },
 #endif
 
@@ -205,6 +222,34 @@ standard_option_handler (sd, opt, arg)
       STATE_VERBOSE_P (sd) = 1;
       break;
 
+#ifdef SIM_HAVE_BIENDIAN
+    case 'E' :
+      if (strcmp (arg, "big") == 0)
+       {
+         if (WITH_TARGET_BYTE_ORDER == LITTLE_ENDIAN)
+           {
+             sim_io_eprintf (sd, "Simulator compiled for little endian only.\n");
+             return SIM_RC_FAIL;
+           }
+         /* FIXME:wip: Need to set something in STATE_CONFIG.  */
+       }
+      else if (strcmp (arg, "little") == 0)
+       {
+         if (WITH_TARGET_BYTE_ORDER == BIG_ENDIAN)
+           {
+             sim_io_eprintf (sd, "Simulator compiled for big endian only.\n");
+             return SIM_RC_FAIL;
+           }
+         /* FIXME:wip: Need to set something in STATE_CONFIG.  */
+       }
+      else
+       {
+         sim_io_eprintf (sd, "Invalid endian specification `%s'\n", arg);
+         return SIM_RC_FAIL;
+       }
+      break;
+#endif
+
     case 'D' :
       if (! WITH_DEBUG)
        sim_io_eprintf (sd, "Debugging not compiled in, `-D' ignored\n");