Reset processor into ARM mode for any machine type except the early ARMs.
authorNick Clifton <nickc@redhat.com>
Wed, 14 Feb 2001 22:21:20 +0000 (22:21 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 14 Feb 2001 22:21:20 +0000 (22:21 +0000)
sim/arm/ChangeLog
sim/arm/wrapper.c

index a5820c3..32e1056 100644 (file)
@@ -1,3 +1,8 @@
+2001-02-14  Nick Clifton  <nickc@redhat.com>
+
+       * wrapper.c (sim_create_inferior): Reset processor into ARM mode
+       for any machine type except the early ARMs.
+
 2001-02-13  Nick Clifton  <nickc@redhat.com>
 
        * armos.c (in_SWI_handler): New static variable.
index f2e5823..242f0bb 100644 (file)
@@ -249,37 +249,40 @@ sim_create_inferior (sd, abfd, argv, env)
       break;
     }
 
-  if (mach > 3)
+  if (   mach != bfd_mach_arm_3
+      && mach != bfd_mach_arm_3M
+      && mach != bfd_mach_arm_2
+      && mach != bfd_mach_arm_2a)
     {
       /* Reset mode to ARM.  A gdb user may rerun a program that had entered
         THUMB mode from the start and cause the ARM-mode startup code to be
-        executed in THUMB mode. */
-      ARMul_SetCPSR (state, USER32MODE);
+        executed in THUMB mode.  */
+      ARMul_SetCPSR (state, SVC32MODE);
     }
   
   if (argv != NULL)
     {
-      /*
-         ** Set up the command line (by laboriously stringing together the
-         ** environment carefully picked apart by our caller...)
-       */
-      /* Free any old stuff */
+      /* Set up the command line by laboriously stringing together
+        the environment carefully picked apart by our caller.  */
+
+      /* Free any old stuff.  */
       if (state->CommandLine != NULL)
        {
          free (state->CommandLine);
          state->CommandLine = NULL;
        }
 
-      /* See how much we need */
+      /* See how much we need */
       for (arg = argv; *arg != NULL; arg++)
        argvlen += strlen (*arg) + 1;
 
-      /* allocate it... */
+      /* Allocate it.  */
       state->CommandLine = malloc (argvlen + 1);
       if (state->CommandLine != NULL)
        {
          arg = argv;
          state->CommandLine[0] = '\0';
+
          for (arg = argv; *arg != NULL; arg++)
            {
              strcat (state->CommandLine, *arg);
@@ -290,14 +293,14 @@ sim_create_inferior (sd, abfd, argv, env)
 
   if (env != NULL)
     {
-      /* Now see if there's a MEMSIZE spec in the environment */
+      /* Now see if there's a MEMSIZE spec in the environment */
       while (*env)
        {
          if (strncmp (*env, "MEMSIZE=", sizeof ("MEMSIZE=") - 1) == 0)
            {
              char *end_of_num;
 
-             /* Set up memory limit */
+             /* Set up memory limit */
              state->MemSize =
                strtoul (*env + sizeof ("MEMSIZE=") - 1, &end_of_num, 0);
            }