From 9fa3abac636abada18d487527408bfe341f8f84a Mon Sep 17 00:00:00 2001 From: Scott Bambrough Date: Thu, 1 Jun 2000 19:15:39 +0000 Subject: 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 * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly. --- gas/ChangeLog | 4 ++++ 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 + + * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly. + 2000-05-22 David O'Brien * 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); -- cgit v1.1