diff options
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/config/tc-arm.c | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 0136e9c..2dd6941 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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*. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 44c05b3..aadea26 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -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); |