The ARM assembler is not assembling the following instruction
authorScott Bambrough <scottb@netwinder.org>
Thu, 1 Jun 2000 19:07:54 +0000 (19:07 +0000)
committerScott Bambrough <scottb@netwinder.org>
Thu, 1 Jun 2000 19:07:54 +0000 (19:07 +0000)
correctly.

mrs lr, spsr

The string pointer is advanced to far before the check to set
the SPSR bit.

Thu Jun 01 2000  Scott Bambrough <scottb@netwinder.org>

* config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly.

gas/ChangeLog
gas/config/tc-arm.c

index 98ac949..e04fceb 100644 (file)
@@ -1,3 +1,7 @@
+2000-06-01  Scott Bambrough <scottb@netwinder.org>
+
+       * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly.
+
 2000-05-29  Nick Clifton  <nickc@cygnus.com>
 
        * config/tc-sh.c: Fix compile time warning messages.
index 4c71976..c5b2cd7 100644 (file)
@@ -1914,6 +1914,8 @@ do_mrs (str, flags)
      char *str;
      unsigned long flags;
 {
+  int skip = 0;
+  
   /* Only one syntax.  */
   skip_whitespace (str);
 
@@ -1936,11 +1938,11 @@ do_mrs (str, flags)
         /* Lower case versions for backwards compatability.  */
       || strcmp (str, "cpsr") == 0
       || strcmp (str, "spsr") == 0)
-    str += 4;
+    skip = 4;
   /* This is for backwards compatability with older toolchains.  */
   else if (strcmp (str, "cpsr_all") == 0
           || strcmp (str, "spsr_all") == 0)
-    str += 7;
+    skip = 7;
   else
     {
       inst.error = _("{C|S}PSR expected");
@@ -1949,6 +1951,7 @@ do_mrs (str, flags)
 
   if (* str == 's' || * str == 'S')
     inst.instruction |= SPSR_BIT;
+  str += skip;
   
   inst.instruction |= flags;
   end_of_line (str);