Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/matt-nb6-plus]: src/gnu/dist/binutils/gas/config Add support for push/po...
details: https://anonhg.NetBSD.org/src/rev/1471b181ce7d
branches: matt-nb6-plus
changeset: 774544:1471b181ce7d
user: matt <matt%NetBSD.org@localhost>
date: Thu Feb 07 01:42:08 2013 +0000
description:
Add support for push/pop register list.
diffstat:
gnu/dist/binutils/gas/config/tc-arm.c | 50 +++++++++++++++++++++-------------
1 files changed, 31 insertions(+), 19 deletions(-)
diffs (72 lines):
diff -r 83ed68e8fe11 -r 1471b181ce7d gnu/dist/binutils/gas/config/tc-arm.c
--- a/gnu/dist/binutils/gas/config/tc-arm.c Thu Feb 07 01:18:07 2013 +0000
+++ b/gnu/dist/binutils/gas/config/tc-arm.c Thu Feb 07 01:42:08 2013 +0000
@@ -6651,25 +6651,35 @@
skip_whitespace (str);
- if ((base_reg = reg_required_here (&str, 16)) == FAIL)
- return;
-
- if (base_reg == REG_PC)
- {
- inst.error = _("r15 not allowed as base register");
- return;
- }
-
- skip_whitespace (str);
-
- if (*str == '!')
- {
- inst.instruction |= WRITE_BACK;
- str++;
- }
-
- if (skip_past_comma (&str) == FAIL
- || (range = reg_list (&str)) == FAIL)
+ base_reg = (inst.instruction >> 16) & 0xf;
+ if (base_reg == 0)
+ {
+ if ((base_reg = reg_required_here (&str, 16)) == FAIL)
+ return;
+
+ if (base_reg == REG_PC)
+ {
+ inst.error = _("r15 not allowed as base register");
+ return;
+ }
+
+ 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 ((range = reg_list (&str)) == FAIL)
{
if (! inst.error)
inst.error = BAD_ARGS;
@@ -9995,11 +10005,13 @@
{"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},
Home |
Main Index |
Thread Index |
Old Index