From: Scott Bambrough Date: Thu, 1 Jun 2000 19:07:54 +0000 (+0000) Subject: The ARM assembler is not assembling the following instruction X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a6836251f636c0cb1078966331647d70376208ed;p=binutils-gdb.git 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 * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 98ac94984a8..e04fcebf621 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-29 Nick Clifton * config/tc-sh.c: Fix compile time warning messages. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 4c71976c877..c5b2cd768ff 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -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);