diff options
author | Andrew Turner <andrew@FreeBSD.org> | 2014-10-03 15:07:43 +0000 |
---|---|---|
committer | Andrew Turner <andrew@FreeBSD.org> | 2014-10-03 15:07:43 +0000 |
commit | 016275506464eca03c46bd9deb4db5a718959095 (patch) | |
tree | b193f49f743603299e20730b223e5108a75dd040 /contrib/binutils | |
parent | f6ce1d1969b7237a70ca6878db4c6d4d0f2359e7 (diff) | |
download | src-016275506464eca03c46bd9deb4db5a718959095.tar.gz src-016275506464eca03c46bd9deb4db5a718959095.zip |
Allow vld and vst instructions to use the canonical form from ARM ARM when
including an alignment. Previously binutils would only allow instructions
in the form "vld1.64 {d0, d1}, [r0, :128]" where the final comma should
not be there, instead the above instruction should be
"vld1.64 {d0, d1}, [r0:128]".
This change duplicates the alignment code from within the function to
handle this case.
Notes
Notes:
svn path=/head/; revision=272476
Diffstat (limited to 'contrib/binutils')
-rw-r--r-- | contrib/binutils/gas/config/tc-arm.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/contrib/binutils/gas/config/tc-arm.c b/contrib/binutils/gas/config/tc-arm.c index a57d1ba6dc16..1d9e27c0e834 100644 --- a/contrib/binutils/gas/config/tc-arm.c +++ b/contrib/binutils/gas/config/tc-arm.c @@ -4688,6 +4688,23 @@ parse_address_main (char **str, int i, int group_relocations, return PARSE_OPERAND_FAIL; } } + else if (skip_past_char (&p, ':') == SUCCESS) + { + /* FIXME: '@' should be used here, but it's filtered out by generic + code before we get to see it here. This may be subject to + change. */ + expressionS exp; + my_get_expression (&exp, &p, GE_NO_PREFIX); + if (exp.X_op != O_constant) + { + inst.error = _("alignment must be constant"); + return PARSE_OPERAND_FAIL; + } + inst.operands[i].imm = exp.X_add_number << 8; + inst.operands[i].immisalign = 1; + /* Alignments are not pre-indexes. */ + inst.operands[i].preind = 0; + } if (skip_past_char (&p, ']') == FAIL) { |