diff options
Diffstat (limited to 'gas/config/tc-arm.c')
-rw-r--r-- | gas/config/tc-arm.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 21369d7..50e0da7 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -16008,12 +16008,20 @@ do_neon_ldx_stx (void) _("bad register for post-index")); inst.instruction |= postreg; } - else if (inst.operands[1].writeback) + else { - inst.instruction |= 0xd; + constraint (inst.operands[1].immisreg, BAD_ADDR_MODE); + constraint (inst.reloc.exp.X_op != O_constant + || inst.reloc.exp.X_add_number != 0, + BAD_ADDR_MODE); + + if (inst.operands[1].writeback) + { + inst.instruction |= 0xd; + } + else + inst.instruction |= 0xf; } - else - inst.instruction |= 0xf; if (thumb_mode) inst.instruction |= 0xf9000000; |