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:
parent
3903e627f3
commit
a6836251f6
@ -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.
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user