diff options
author | Scott Bambrough <scottb@netwinder.org> | 2000-06-01 19:15:39 +0000 |
---|---|---|
committer | Scott Bambrough <scottb@netwinder.org> | 2000-06-01 19:15:39 +0000 |
commit | 9fa3abac636abada18d487527408bfe341f8f84a (patch) | |
tree | e51c1e1c7f8bf6bb6351a3f49cb0f913df72c502 | |
parent | 697fa7e0135defaf5ec7a3bbe4a3236adb70bd92 (diff) | |
download | gdb-9fa3abac636abada18d487527408bfe341f8f84a.zip gdb-9fa3abac636abada18d487527408bfe341f8f84a.tar.gz gdb-9fa3abac636abada18d487527408bfe341f8f84a.tar.bz2 |
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.
-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); |