The ARM assembler is not assembling the following instruction

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.
This commit is contained in:
Scott Bambrough 2000-06-01 19:07:54 +00:00
parent 3903e627f3
commit a6836251f6
2 changed files with 9 additions and 2 deletions

View 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.

View 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);