]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[Aarch64] Support an ARMv8.2 system register.
authorMatthew Wahab <matthew.wahab@arm.com>
Fri, 27 Nov 2015 13:44:10 +0000 (13:44 +0000)
committerMatthew Wahab <matthew.wahab@arm.com>
Mon, 14 Dec 2015 12:03:03 +0000 (12:03 +0000)
ARMv8.2 adds a new system register id_aa64mmfr2_el1. This patch adds
support for the register to binutils, making it available when
-march=armv8.2-a is selected.

opcodes/
2015-11-27  Matthew Wahab  <matthew.wahab@arm.com>

* aarch64-opc.c (aarch64_sys_regs): Add "id_aa64mmfr2_el1".
(aarch64_sys_reg_supported_p): Add ARMv8.2 system register
feature test.

gas/testsuite/
2015-11-27  Matthew Wahab  <matthew.wahab@arm.com>

* gas/aarch64/sysreg-2.d: New.
* gas/aarch64/sysreg-2.s: New.

Change-Id: Ice6aad245ae9e6cedbc800c9a098ae50bbd8e70e

gas/testsuite/ChangeLog
gas/testsuite/gas/aarch64/sysreg-2.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sysreg-2.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/aarch64-opc.c

index becf5bca5150b100193bf91713a1230e9c64776a..e271ceb8aff614fe65d3d1e1c3526a4385533f7b 100644 (file)
@@ -1,3 +1,8 @@
+2015-12-14  Matthew Wahab  <matthew.wahab@arm.com>
+
+       * gas/aarch64/sysreg-2.d: New.
+       * gas/aarch64/sysreg-2.s: New.
+
 2015-12-10  Alan Modra  <amodra@gmail.com>
 
        Apply from master.
diff --git a/gas/testsuite/gas/aarch64/sysreg-2.d b/gas/testsuite/gas/aarch64/sysreg-2.d
new file mode 100644 (file)
index 0000000..f0fe533
--- /dev/null
@@ -0,0 +1,11 @@
+#objdump: -dr
+#as: -march=armv8.2-a
+
+.*:     file .*
+
+
+Disassembly of section .text:
+
+0000000000000000 <.*>:
+   [0-9a-f]+:  d5380725        mrs     x5, id_aa64mmfr1_el1
+   [0-9a-f]+:  d5380747        mrs     x7, id_aa64mmfr2_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg-2.s b/gas/testsuite/gas/aarch64/sysreg-2.s
new file mode 100644 (file)
index 0000000..f519682
--- /dev/null
@@ -0,0 +1,15 @@
+/* sysreg-2.s Test file for ARMv8.2 system registers.  */
+
+       .macro rw_sys_reg sys_reg xreg r w
+       .ifc \w, 1
+       msr \sys_reg, \xreg
+       .endif
+       .ifc \r, 1
+       mrs \xreg, \sys_reg
+       .endif
+       .endm
+
+       .text
+
+       rw_sys_reg sys_reg=id_aa64mmfr1_el1 xreg=x5 r=1 w=0
+       rw_sys_reg sys_reg=id_aa64mmfr2_el1 xreg=x7 r=1 w=0
index 49ce102b2e7ff2070d1307aa40cdedfbb3516e7e..4787a3431a3ed81a3d34c49b760ddbb50ec8c423 100644 (file)
@@ -1,3 +1,9 @@
+2015-12-14  Matthew Wahab  <matthew.wahab@arm.com>
+
+       * aarch64-opc.c (aarch64_sys_regs): Add "id_aa64mmfr2_el1".
+       (aarch64_sys_reg_supported_p): Add ARMv8.2 system register
+       feature test.
+
 2015-12-09  H.J. Lu  <hongjiu.lu@intel.com>
 
        * i386-dis.c (MOD_0F01_REG_5): New.
index 5e82561f06b97a56d34fc1c5627805b80a5a2b9b..d10bc354ba60091a2cd83a61d147aee1be2f7363 100644 (file)
@@ -2793,6 +2793,7 @@ const aarch64_sys_reg aarch64_sys_regs [] =
   { "id_aa64isar1_el1", CPENC(3,0,C0,C6,1),    0 }, /* RO */
   { "id_aa64mmfr0_el1", CPENC(3,0,C0,C7,0),    0 }, /* RO */
   { "id_aa64mmfr1_el1", CPENC(3,0,C0,C7,1),    0 }, /* RO */
+  { "id_aa64mmfr2_el1", CPENC (3, 0, C0, C7, 2), F_ARCHEXT }, /* RO */
   { "id_aa64afr0_el1",  CPENC(3,0,C0,C5,4),    0 }, /* RO */
   { "id_aa64afr1_el1",  CPENC(3,0,C0,C5,5),    0 }, /* RO */
   { "clidr_el1",        CPENC(3,1,C0,C0,1),    0 }, /* RO */
@@ -3127,6 +3128,10 @@ aarch64_sys_reg_supported_p (const aarch64_feature_set features,
        || reg->value == CPENC (3, 5, C14, C3, 1)
        || reg->value == CPENC (3, 5, C14, C3, 2))
       && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_1))
+
+  /* ARMv8.2 features.  */
+  if (reg->value == CPENC (3, 0, C0, C7, 2)
+      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_2))
     return FALSE;
 
   return TRUE;