Module Name: src Committed By: matt Date: Thu Feb 7 01:42:09 UTC 2013
Modified Files: src/gnu/dist/binutils/gas/config [matt-nb6-plus]: tc-arm.c Log Message: Add support for push/pop register list. To generate a diff of this commit: cvs rdiff -u -r1.6.6.6 -r1.6.6.7 src/gnu/dist/binutils/gas/config/tc-arm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/gnu/dist/binutils/gas/config/tc-arm.c diff -u src/gnu/dist/binutils/gas/config/tc-arm.c:1.6.6.6 src/gnu/dist/binutils/gas/config/tc-arm.c:1.6.6.7 --- src/gnu/dist/binutils/gas/config/tc-arm.c:1.6.6.6 Thu Feb 7 01:18:07 2013 +++ src/gnu/dist/binutils/gas/config/tc-arm.c Thu Feb 7 01:42:08 2013 @@ -6651,25 +6651,35 @@ do_ldmstm (char * str) skip_whitespace (str); - if ((base_reg = reg_required_here (&str, 16)) == FAIL) - return; - - if (base_reg == REG_PC) + base_reg = (inst.instruction >> 16) & 0xf; + if (base_reg == 0) { - inst.error = _("r15 not allowed as base register"); - return; - } + if ((base_reg = reg_required_here (&str, 16)) == FAIL) + return; - skip_whitespace (str); + if (base_reg == REG_PC) + { + inst.error = _("r15 not allowed as base register"); + return; + } - if (*str == '!') - { - inst.instruction |= WRITE_BACK; - str++; + skip_whitespace (str); + + if (*str == '!') + { + inst.instruction |= WRITE_BACK; + str++; + } + + if (skip_past_comma (&str) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } } - if (skip_past_comma (&str) == FAIL - || (range = reg_list (&str)) == FAIL) + if ((range = reg_list (&str)) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; @@ -9995,11 +10005,13 @@ static const struct asm_opcode insns[] = {"stmda", 0xe8000000, 3, ARM_EXT_V1, do_ldmstm}, {"stmdb", 0xe9000000, 3, ARM_EXT_V1, do_ldmstm}, {"stmfd", 0xe9000000, 3, ARM_EXT_V1, do_ldmstm}, + {"push", 0xe92d0000, 4, ARM_EXT_V1, do_ldmstm}, {"stmfa", 0xe9800000, 3, ARM_EXT_V1, do_ldmstm}, {"stmea", 0xe8800000, 3, ARM_EXT_V1, do_ldmstm}, {"stmed", 0xe8000000, 3, ARM_EXT_V1, do_ldmstm}, {"ldmia", 0xe8900000, 3, ARM_EXT_V1, do_ldmstm}, + {"pop", 0xe8bd0000, 3, ARM_EXT_V1, do_ldmstm}, {"ldmib", 0xe9900000, 3, ARM_EXT_V1, do_ldmstm}, {"ldmda", 0xe8100000, 3, ARM_EXT_V1, do_ldmstm}, {"ldmdb", 0xe9100000, 3, ARM_EXT_V1, do_ldmstm},