aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Gretton-Dann <matthew.gretton-dann@arm.com>2011-11-25 15:17:36 +0000
committerMatthew Gretton-Dann <matthew.gretton-dann@arm.com>2011-11-25 15:17:36 +0000
commitc6400f8afd157ff6344a2c180b91e6fd8f6e092f (patch)
tree266d45d0aaab366bf392769246061d79de8444ad
parenta272e28c9d0520bc77bd4b9956160f9a638bd46d (diff)
downloadfsf-binutils-gdb-c6400f8afd157ff6344a2c180b91e6fd8f6e092f.zip
fsf-binutils-gdb-c6400f8afd157ff6344a2c180b91e6fd8f6e092f.tar.gz
fsf-binutils-gdb-c6400f8afd157ff6344a2c180b91e6fd8f6e092f.tar.bz2
* gas/config/tc-arm.c (do_t_mov_cmp): Allow MOV lowreg, lowreg when no CPU
is specified. * gas/testsuite/gas/arm/mov-highregs-any.d: New testcase. * gas/testsuite/gas/arm/mov-highregs-any.s: Likewise. * gas/testsuite/gas/arm/mov-lowregs-any.d: Likewise. * gas/testsuite/gas/arm/mov-lowregs-any.s: Likewise.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-arm.c14
-rw-r--r--gas/testsuite/ChangeLog7
-rw-r--r--gas/testsuite/gas/arm/mov-highregs-any.d9
-rw-r--r--gas/testsuite/gas/arm/mov-highregs-any.s3
-rw-r--r--gas/testsuite/gas/arm/mov-lowregs-any.d9
-rw-r--r--gas/testsuite/gas/arm/mov-lowregs-any.s3
7 files changed, 46 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 003d4f0..d8cf381 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2011-11-25 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * config/tc-arm.c (do_t_mov_cmp): Allow MOV lowreg, lowreg when no CPU
+ is specified.
+
2011-11-23 Tristan Gingold <gingold@adacore.com>
* config/tc-alpha.c (s_alpha_prologue): Requires empty line.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index bf44228..6e23be0 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -10914,10 +10914,16 @@ do_t_mov_cmp (void)
{
case T_MNEM_mov:
/* In v4t or v5t a move of two lowregs produces unpredictable
- results. Don't allow this.*/
- constraint (low_regs && !ARM_CPU_HAS_FEATURE (selected_cpu,
- arm_ext_v6),"MOV Rd, Rs with two low registers is not "
- "permitted on this architecture");
+ results. Don't allow this. */
+ if (low_regs)
+ {
+ constraint (!ARM_CPU_HAS_FEATURE (cpu_variant, arm_ext_v6),
+ "MOV Rd, Rs with two low registers is not "
+ "permitted on this architecture");
+ ARM_MERGE_FEATURE_SETS (thumb_arch_used, thumb_arch_used,
+ arm_ext_v6);
+ }
+
inst.instruction = T_OPCODE_MOV_HR;
inst.instruction |= (Rn & 0x8) << 4;
inst.instruction |= (Rn & 0x7);
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 0d99df3..054eee3 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2011-11-25 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * gas/arm/mov-highregs-any.d: New testcase.
+ * gas/arm/mov-highregs-any.s: Likewise.
+ * gas/arm/mov-lowregs-any.d: Likewise.
+ * gas/arm/mov-lowregs-any.s: Likewise.
+
2011-11-21 Maciej W. Rozycki <macro@codesourcery.com>
* gas/mips/micromips@24k-branch-delay-1.d: New test.
diff --git a/gas/testsuite/gas/arm/mov-highregs-any.d b/gas/testsuite/gas/arm/mov-highregs-any.d
new file mode 100644
index 0000000..5f93ccd
--- /dev/null
+++ b/gas/testsuite/gas/arm/mov-highregs-any.d
@@ -0,0 +1,9 @@
+# name: MOV highregs
+# readelf: -A
+# target: *-*-*eabi
+Attribute Section: aeabi
+File Attributes
+ Tag_CPU_arch: v4T
+ Tag_THUMB_ISA_use: Thumb-1
+ Tag_DIV_use: Not allowed
+
diff --git a/gas/testsuite/gas/arm/mov-highregs-any.s b/gas/testsuite/gas/arm/mov-highregs-any.s
new file mode 100644
index 0000000..9e9e587
--- /dev/null
+++ b/gas/testsuite/gas/arm/mov-highregs-any.s
@@ -0,0 +1,3 @@
+ .syntax unified
+ .thumb
+ mov r8, r8
diff --git a/gas/testsuite/gas/arm/mov-lowregs-any.d b/gas/testsuite/gas/arm/mov-lowregs-any.d
new file mode 100644
index 0000000..1549df3
--- /dev/null
+++ b/gas/testsuite/gas/arm/mov-lowregs-any.d
@@ -0,0 +1,9 @@
+# name: MOV lowregs
+# readelf: -A
+# target: *-*-*eabi
+Attribute Section: aeabi
+File Attributes
+ Tag_CPU_arch: v6
+ Tag_THUMB_ISA_use: Thumb-1
+ Tag_DIV_use: Not allowed
+
diff --git a/gas/testsuite/gas/arm/mov-lowregs-any.s b/gas/testsuite/gas/arm/mov-lowregs-any.s
new file mode 100644
index 0000000..12619ef
--- /dev/null
+++ b/gas/testsuite/gas/arm/mov-lowregs-any.s
@@ -0,0 +1,3 @@
+ .syntax unified
+ .thumb
+ mov r0, r0