Sophie

Sophie

distrib > Mageia > 7 > i586 > by-pkgid > 0e1fb6d48c993633711e2942dec89407 > files > 24

binutils-2.32-14.mga7.src.rpm

From ab97c80ee58673047e122bc11b3402472ce3cbdc Mon Sep 17 00:00:00 2001
From: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Date: Wed, 24 Jul 2019 12:27:35 +0100
Subject: [PATCH] [AArch64] Add support for GMID_EL1 register for +memtag

We're missing support for the GMID_EL1 system register from the Memory Tagging Extension in binutils.
This is specified at:
https://developer.arm.com/docs/ddi0595/latest/aarch64-system-registers/gmid_el1

This simple patch adds the support for this read-only register.
Tested make check on gas.

	Backport from mainline
	2019-07-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	* aarch64-opc.c (aarch64_sys_regs): Add gmid_el1 entry.
	(aarch64_sys_reg_supported_p): Handle gmid_el1 encoding.

	Backport from mainline
	2019-07-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	* testsuite/gas/aarch64/sysreg-4.s: Test gmid_el1 read.
	* testsuite/gas/aarch64/sysreg-4.d: Update expected output.
	* testsuite/gas/aarch64/illegal-sysreg-4.l: Likewise.
---
 gas/ChangeLog                                | 9 +++++++++
 gas/testsuite/gas/aarch64/illegal-sysreg-4.l | 1 +
 gas/testsuite/gas/aarch64/sysreg-4.d         | 1 +
 gas/testsuite/gas/aarch64/sysreg-4.s         | 1 +
 opcodes/ChangeLog                            | 8 ++++++++
 opcodes/aarch64-opc.c                        | 4 +++-
 6 files changed, 23 insertions(+), 1 deletion(-)

#diff --git a/gas/ChangeLog b/gas/ChangeLog
#index f5c03a91c0..321e243a87 100644
#--- a/gas/ChangeLog
#+++ b/gas/ChangeLog
#@@ -1,3 +1,12 @@
#+2019-07-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
#+
#+	Backport from mainline
#+	2019-07-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
#+
#+	* testsuite/gas/aarch64/sysreg-4.s: Test gmid_el1 read.
#+	* testsuite/gas/aarch64/sysreg-4.d: Update expected output.
#+	* testsuite/gas/aarch64/illegal-sysreg-4.l: Likewise.
#+
# 2019-07-05  Szabolcs Nagy  <szabolcs.nagy@arm.com>
# 
# 	Backport from mainline
diff --git a/gas/testsuite/gas/aarch64/illegal-sysreg-4.l b/gas/testsuite/gas/aarch64/illegal-sysreg-4.l
index d431f9bfc5..590f20e107 100644
--- a/gas/testsuite/gas/aarch64/illegal-sysreg-4.l
+++ b/gas/testsuite/gas/aarch64/illegal-sysreg-4.l
@@ -23,6 +23,7 @@
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsr_el12'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'rgsr_el1'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'gcr_el1'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'gmid_el1'
 [^:]*:[0-9]+: Error: selected processor does not support PSTATE field name 'tco'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'tco'
 [^:]*:[0-9]+: Error: selected processor does not support PSTATE field name 'tco'
diff --git a/gas/testsuite/gas/aarch64/sysreg-4.d b/gas/testsuite/gas/aarch64/sysreg-4.d
index ab6e217fc1..bc3d0bdb7f 100644
--- a/gas/testsuite/gas/aarch64/sysreg-4.d
+++ b/gas/testsuite/gas/aarch64/sysreg-4.d
@@ -28,6 +28,7 @@ Disassembly of section \.text:
 .*:	d53d660c 	mrs	x12, tfsr_el12
 .*:	d53810a1 	mrs	x1, rgsr_el1
 .*:	d53810c3 	mrs	x3, gcr_el1
+.*:	d5390084 	mrs	x4, gmid_el1
 .*:	d51b42e1 	msr	tco, x1
 .*:	d51b42e2 	msr	tco, x2
 .*:	d5186621 	msr	tfsre0_el1, x1
diff --git a/gas/testsuite/gas/aarch64/sysreg-4.s b/gas/testsuite/gas/aarch64/sysreg-4.s
index 6c18b4a4e4..ace9803081 100644
--- a/gas/testsuite/gas/aarch64/sysreg-4.s
+++ b/gas/testsuite/gas/aarch64/sysreg-4.s
@@ -24,6 +24,7 @@ func:
 	mrs x12, TFSR_EL12
 	mrs x1, rgsr_el1
 	mrs x3, gcr_el1
+	mrs x4, gmid_el1
 
 	# MSR (register)
 	msr tco, x1
#diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
#index 68c82a9077..86d4cc3bd2 100644
#--- a/opcodes/ChangeLog
#+++ b/opcodes/ChangeLog
#@@ -1,3 +1,11 @@
#+2019-07-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
#+
#+	Backport from mainline
#+	2019-07-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
#+
#+	* aarch64-opc.c (aarch64_sys_regs): Add gmid_el1 entry.
#+	(aarch64_sys_reg_supported_p): Handle gmid_el1 encoding.
#+
# 2019-07-02  Richard Sandiford  <richard.sandiford@arm.com>
# 
# 	* aarch64-tbl.h (aarch64_opcode): Set C_SCAN_MOVPRFX for the
diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index 2d2752fd59..32ab2e2ac4 100644
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -3932,6 +3932,7 @@ const aarch64_sys_reg aarch64_sys_regs [] =
   { "tfsr_el12",	CPENC(3,5,C6,C6,0), F_ARCHEXT },
   { "rgsr_el1",		CPENC(3,0,C1,C0,5), F_ARCHEXT },
   { "gcr_el1",		CPENC(3,0,C1,C0,6), F_ARCHEXT },
+  { "gmid_el1",		CPENC(3,1,C0,C0,4), F_ARCHEXT | F_REG_READ }, /* RO */
   { "tpidr_el0",        CPENC(3,3,C13,C0,2),	0 },
   { "tpidrro_el0",      CPENC(3,3,C13,C0,3),	0 }, /* RW */
   { "tpidr_el1",        CPENC(3,0,C13,C0,4),	0 },
@@ -4403,7 +4404,8 @@ aarch64_sys_reg_supported_p (const aarch64_feature_set features,
        || reg->value == CPENC (3, 6, C6, C6, 0)
        || reg->value == CPENC (3, 5, C6, C6, 0)
        || reg->value == CPENC (3, 0, C1, C0, 5)
-       || reg->value == CPENC (3, 0, C1, C0, 6))
+       || reg->value == CPENC (3, 0, C1, C0, 6)
+       || reg->value == CPENC (3, 1, C0, C0, 4))
       && !(AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_MEMTAG)))
     return FALSE;
 
-- 
2.22.0