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.

2000-06-01  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:15:39 +00:00
parent 697fa7e013
commit 9fa3abac63
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-22 David O'Brien <obrien@FreeBSD.org>
* configure.in: Recognize alpha-*-freebsd*.

View File

@ -1915,6 +1915,8 @@ do_mrs (str, flags)
char *str;
unsigned long flags;
{
int skip = 0;
/* Only one syntax. */
skip_whitespace (str);
@ -1937,11 +1939,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");
@ -1950,6 +1952,7 @@ do_mrs (str, flags)
if (* str == 's' || * str == 'S')
inst.instruction |= SPSR_BIT;
str += skip;
inst.instruction |= flags;
end_of_line (str);