public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 1/5][BINUTILS] aarch64: Add SLC target for PRFM instruction.
@ 2023-11-16 11:26 Srinath Parvathaneni
  2023-11-16 11:28 ` [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension Srinath Parvathaneni
  2023-11-16 11:55 ` [PATCH 1/5][BINUTILS] aarch64: Add SLC target for PRFM instruction Richard Earnshaw
  0 siblings, 2 replies; 11+ messages in thread
From: Srinath Parvathaneni @ 2023-11-16 11:26 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, nickc

[-- Attachment #1: Type: text/plain, Size: 220 bytes --]

Hi,

This patch adds support for FEAT_PRFMSLC feature which enables
SLC target for PRFM instructions.

Regression testing for aarch64-none-elf target and found no regressions.

Ok for binutils-master?

Regards,
Srinath.

[-- Attachment #2: rb17872.patch --]
[-- Type: text/plain, Size: 6200 bytes --]

diff --git a/gas/testsuite/gas/aarch64/system.d b/gas/testsuite/gas/aarch64/system.d
index bb1a94cb0204b953ba204365c075493622d24c16..dbb7c0a96ffbe7043865f29dd04cab6807388dd0 100644
--- a/gas/testsuite/gas/aarch64/system.d
+++ b/gas/testsuite/gas/aarch64/system.d
@@ -240,16 +240,16 @@ Disassembly of section \.text:
 .*:	f8af6be5 	prfm	pldl3strm, \[sp, x15\]
 .*:	f8be58e5 	prfm	pldl3strm, \[x7, w30, uxtw #3\]
 .*:	f9800c65 	prfm	pldl3strm, \[x3, #24\]
-.*:	d8000006 	prfm	#0x06, 0 <LABEL1>
+.*:	d8000006 	prfm	pldslckeep, 0 <LABEL1>
 .*: R_AARCH64_(P32_|)LD_PREL_LO19	LABEL1
-.*:	f8af6be6 	prfm	#0x06, \[sp, x15\]
-.*:	f8be58e6 	prfm	#0x06, \[x7, w30, uxtw #3\]
-.*:	f9800c66 	prfm	#0x06, \[x3, #24\]
-.*:	d8000007 	prfm	#0x07, 0 <LABEL1>
+.*:	f8af6be6 	prfm	pldslckeep, \[sp, x15\]
+.*:	f8be58e6 	prfm	pldslckeep, \[x7, w30, uxtw #3\]
+.*:	f9800c66 	prfm	pldslckeep, \[x3, #24\]
+.*:	d8000007 	prfm	pldslcstrm, 0 <LABEL1>
 .*: R_AARCH64_(P32_|)LD_PREL_LO19	LABEL1
-.*:	f8af6be7 	prfm	#0x07, \[sp, x15\]
-.*:	f8be58e7 	prfm	#0x07, \[x7, w30, uxtw #3\]
-.*:	f9800c67 	prfm	#0x07, \[x3, #24\]
+.*:	f8af6be7 	prfm	pldslcstrm, \[sp, x15\]
+.*:	f8be58e7 	prfm	pldslcstrm, \[x7, w30, uxtw #3\]
+.*:	f9800c67 	prfm	pldslcstrm, \[x3, #24\]
 .*:	d8000008 	prfm	plil1keep, 0 <LABEL1>
 .*: R_AARCH64_(P32_|)LD_PREL_LO19	LABEL1
 .*:	f8af6be8 	prfm	plil1keep, \[sp, x15\]
@@ -280,16 +280,16 @@ Disassembly of section \.text:
 .*:	f8af6bed 	prfm	plil3strm, \[sp, x15\]
 .*:	f8be58ed 	prfm	plil3strm, \[x7, w30, uxtw #3\]
 .*:	f9800c6d 	prfm	plil3strm, \[x3, #24\]
-.*:	d800000e 	prfm	#0x0e, 0 <LABEL1>
+.*:	d800000e 	prfm	plislckeep, 0 <LABEL1>
 .*: R_AARCH64_(P32_|)LD_PREL_LO19	LABEL1
-.*:	f8af6bee 	prfm	#0x0e, \[sp, x15\]
-.*:	f8be58ee 	prfm	#0x0e, \[x7, w30, uxtw #3\]
-.*:	f9800c6e 	prfm	#0x0e, \[x3, #24\]
-.*:	d800000f 	prfm	#0x0f, 0 <LABEL1>
+.*:	f8af6bee 	prfm	plislckeep, \[sp, x15\]
+.*:	f8be58ee 	prfm	plislckeep, \[x7, w30, uxtw #3\]
+.*:	f9800c6e 	prfm	plislckeep, \[x3, #24\]
+.*:	d800000f 	prfm	plislcstrm, 0 <LABEL1>
 .*: R_AARCH64_(P32_|)LD_PREL_LO19	LABEL1
-.*:	f8af6bef 	prfm	#0x0f, \[sp, x15\]
-.*:	f8be58ef 	prfm	#0x0f, \[x7, w30, uxtw #3\]
-.*:	f9800c6f 	prfm	#0x0f, \[x3, #24\]
+.*:	f8af6bef 	prfm	plislcstrm, \[sp, x15\]
+.*:	f8be58ef 	prfm	plislcstrm, \[x7, w30, uxtw #3\]
+.*:	f9800c6f 	prfm	plislcstrm, \[x3, #24\]
 .*:	d8000010 	prfm	pstl1keep, 0 <LABEL1>
 .*: R_AARCH64_(P32_|)LD_PREL_LO19	LABEL1
 .*:	f8af6bf0 	prfm	pstl1keep, \[sp, x15\]
@@ -320,16 +320,16 @@ Disassembly of section \.text:
 .*:	f8af6bf5 	prfm	pstl3strm, \[sp, x15\]
 .*:	f8be58f5 	prfm	pstl3strm, \[x7, w30, uxtw #3\]
 .*:	f9800c75 	prfm	pstl3strm, \[x3, #24\]
-.*:	d8000016 	prfm	#0x16, 0 <LABEL1>
+.*:	d8000016 	prfm	pstslckeep, 0 <LABEL1>
 .*: R_AARCH64_(P32_|)LD_PREL_LO19	LABEL1
-.*:	f8af6bf6 	prfm	#0x16, \[sp, x15\]
-.*:	f8be58f6 	prfm	#0x16, \[x7, w30, uxtw #3\]
-.*:	f9800c76 	prfm	#0x16, \[x3, #24\]
-.*:	d8000017 	prfm	#0x17, 0 <LABEL1>
+.*:	f8af6bf6 	prfm	pstslckeep, \[sp, x15\]
+.*:	f8be58f6 	prfm	pstslckeep, \[x7, w30, uxtw #3\]
+.*:	f9800c76 	prfm	pstslckeep, \[x3, #24\]
+.*:	d8000017 	prfm	pstslcstrm, 0 <LABEL1>
 .*: R_AARCH64_(P32_|)LD_PREL_LO19	LABEL1
-.*:	f8af6bf7 	prfm	#0x17, \[sp, x15\]
-.*:	f8be58f7 	prfm	#0x17, \[x7, w30, uxtw #3\]
-.*:	f9800c77 	prfm	#0x17, \[x3, #24\]
+.*:	f8af6bf7 	prfm	pstslcstrm, \[sp, x15\]
+.*:	f8be58f7 	prfm	pstslcstrm, \[x7, w30, uxtw #3\]
+.*:	f9800c77 	prfm	pstslcstrm, \[x3, #24\]
 .*:	d8000018 	prfm	#0x18, 0 <LABEL1>
 .*: R_AARCH64_(P32_|)LD_PREL_LO19	LABEL1
 .*:	f9800c78 	prfm	#0x18, \[x3, #24\]
@@ -360,17 +360,23 @@ Disassembly of section \.text:
 .*:	f9800c63 	prfm	pldl2strm, \[x3, #24\]
 .*:	f9800c64 	prfm	pldl3keep, \[x3, #24\]
 .*:	f9800c65 	prfm	pldl3strm, \[x3, #24\]
+.*:	f9800c66 	prfm	pldslckeep, \[x3, #24\]
+.*:	f9800c67 	prfm	pldslcstrm, \[x3, #24\]
 .*:	f9800c68 	prfm	plil1keep, \[x3, #24\]
 .*:	f9800c69 	prfm	plil1strm, \[x3, #24\]
 .*:	f9800c6a 	prfm	plil2keep, \[x3, #24\]
 .*:	f9800c6b 	prfm	plil2strm, \[x3, #24\]
 .*:	f9800c6c 	prfm	plil3keep, \[x3, #24\]
 .*:	f9800c6d 	prfm	plil3strm, \[x3, #24\]
+.*:	f9800c6e 	prfm	plislckeep, \[x3, #24\]
+.*:	f9800c6f 	prfm	plislcstrm, \[x3, #24\]
 .*:	f9800c70 	prfm	pstl1keep, \[x3, #24\]
 .*:	f9800c71 	prfm	pstl1strm, \[x3, #24\]
 .*:	f9800c72 	prfm	pstl2keep, \[x3, #24\]
 .*:	f9800c73 	prfm	pstl2strm, \[x3, #24\]
 .*:	f9800c74 	prfm	pstl3keep, \[x3, #24\]
 .*:	f9800c75 	prfm	pstl3strm, \[x3, #24\]
-.*:	f8a04817 	prfm	#0x17, \[x0, w0, uxtw\]
+.*:	f9800c76 	prfm	pstslckeep, \[x3, #24\]
+.*:	f9800c77 	prfm	pstslcstrm, \[x3, #24\]
+.*:	f8a04817 	prfm	pstslcstrm, \[x0, w0, uxtw\]
 .*:	f8a04818 	rprfm	pldkeep, x0, \[x0\]
diff --git a/gas/testsuite/gas/aarch64/system.s b/gas/testsuite/gas/aarch64/system.s
index 48e7bfeb10398190ee26338c7e83f363ba4a4bd8..9457b392f785f89af7cbf7aa81c36de9de94ad80 100644
--- a/gas/testsuite/gas/aarch64/system.s
+++ b/gas/testsuite/gas/aarch64/system.s
@@ -87,7 +87,7 @@
 	//
 
 	.irp op, pld, pli, pst
-	.irp l, l1, l2, l3
+	.irp l, l1, l2, l3, slc
 	.irp t, keep, strm
 	prfm	\op\l\t, [x3, #24]
 	.endr
diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index 5a0f0e9f52e31e8a0823e544122f4e65c2541570..80816d633661eb5a39e0da28c1cd5d4c87df308f 100644
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -575,24 +575,24 @@ const struct aarch64_name_value_pair aarch64_prfops[32] =
   { "pldl2strm", B(0, 2, 1) },
   { "pldl3keep", B(0, 3, 0) },
   { "pldl3strm", B(0, 3, 1) },
-  { NULL, 0x06 },
-  { NULL, 0x07 },
+  { "pldslckeep", B(0, 4, 0) },
+  { "pldslcstrm", B(0, 4, 1) },
   { "plil1keep", B(1, 1, 0) },
   { "plil1strm", B(1, 1, 1) },
   { "plil2keep", B(1, 2, 0) },
   { "plil2strm", B(1, 2, 1) },
   { "plil3keep", B(1, 3, 0) },
   { "plil3strm", B(1, 3, 1) },
-  { NULL, 0x0e },
-  { NULL, 0x0f },
+  { "plislckeep", B(1, 4, 0) },
+  { "plislcstrm", B(1, 4, 1) },
   { "pstl1keep", B(2, 1, 0) },
   { "pstl1strm", B(2, 1, 1) },
   { "pstl2keep", B(2, 2, 0) },
   { "pstl2strm", B(2, 2, 1) },
   { "pstl3keep", B(2, 3, 0) },
   { "pstl3strm", B(2, 3, 1) },
-  { NULL, 0x16 },
-  { NULL, 0x17 },
+  { "pstslckeep", B(2, 4, 0) },
+  { "pstslcstrm", B(2, 4, 1) },
   { NULL, 0x18 },
   { NULL, 0x19 },
   { NULL, 0x1a },

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension.
  2023-11-16 11:26 [PATCH 1/5][BINUTILS] aarch64: Add SLC target for PRFM instruction Srinath Parvathaneni
@ 2023-11-16 11:28 ` Srinath Parvathaneni
  2023-11-16 11:31   ` [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension Srinath Parvathaneni
  2023-11-16 11:58   ` [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension Richard Earnshaw
  2023-11-16 11:55 ` [PATCH 1/5][BINUTILS] aarch64: Add SLC target for PRFM instruction Richard Earnshaw
  1 sibling, 2 replies; 11+ messages in thread
From: Srinath Parvathaneni @ 2023-11-16 11:28 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, nickc

[-- Attachment #1: Type: text/plain, Size: 345 bytes --]

Hi,

This patch adds features to the Statistical Profiling Extension,
identified as FEAT_SPEv1p4, FEAT_SPE_FDS, and FEAT_SPE_CRR, which
are enabled by default from Armv9.4-A.

Also adds support for system register "pmsdsfr_el1".

Regression tested for aarch64-none-elf target and found no regressions.

Ok for binutils-master?

Regards,
Srinath.

[-- Attachment #2: rb17873.patch --]
[-- Type: text/plain, Size: 3747 bytes --]

diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.d b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.d
new file mode 100644
index 0000000000000000000000000000000000000000..2471b6b52c31183b0aef6f089fcc3ce22089ee98
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.d
@@ -0,0 +1,3 @@
+#as: -march=armv8.8-a
+#source: armv8_9-a-sysregs.s
+#error_output: armv8_9-a-sysregs-bad.l
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
new file mode 100644
index 0000000000000000000000000000000000000000..48c55680aa07618cd1f0c165435533fe4dd31e41
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*: Error: selected processor does not support system register name 'pmsdsfr_el1'
+.*: Error: selected processor does not support system register name 'pmsdsfr_el1'
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
new file mode 100644
index 0000000000000000000000000000000000000000..d4cb769fdf63aaa89ac4c410982cd20ac12bbd4d
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
@@ -0,0 +1,10 @@
+#as: -march=armv8.9-a
+#objdump: -dr
+
+.*:     file format .*
+
+Disassembly of section \.text:
+
+0+ <.*>:
+.*:	d53c9a83 	mrs	x3, pmsdsfr_el1
+.*:	d51c9a83 	msr	pmsdsfr_el1, x3
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
new file mode 100644
index 0000000000000000000000000000000000000000..4200d7ce60ed21822731a836214bb44aeeea57ac
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
@@ -0,0 +1,2 @@
+	mrs x3, PMSDSFR_EL1
+	msr PMSDSFR_EL1, x3
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index 6be2885c78fbd5213220d22ce3218c39bb03916f..881a4211eabfad2cc4442efc78eb37c06d26973d 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -163,6 +163,12 @@ enum aarch64_feature_bit {
   AARCH64_FEATURE_CHK,
   /* Guarded Control Stack.  */
   AARCH64_FEATURE_GCS,
+  /* SPE Call Return branch records.  */
+  AARCH64_FEATURE_SPE_CRR,
+  /* SPE Filter by data source.  */
+  AARCH64_FEATURE_SPE_FDS,
+  /* Additional SPE events.  */
+  AARCH64_FEATURE_SPEv1p4,
   /* SME2.  */
   AARCH64_FEATURE_SME2,
   /* Translation Hardening Extension.  */
@@ -224,7 +230,10 @@ enum aarch64_feature_bit {
 #define AARCH64_ARCH_V8_8A_FEATURES(X)	(AARCH64_FEATBIT (X, V8_8A)	\
 					 | AARCH64_FEATBIT (X, MOPS)	\
 					 | AARCH64_FEATBIT (X, HBC))
-#define AARCH64_ARCH_V8_9A_FEATURES(X)	(AARCH64_FEATBIT (X, V8_9A))
+#define AARCH64_ARCH_V8_9A_FEATURES(X)	(AARCH64_FEATBIT (X, V8_9A)	\
+					 | AARCH64_FEATBIT (X, SPEv1p4) \
+					 | AARCH64_FEATBIT (X, SPE_CRR)	\
+					 | AARCH64_FEATBIT (X, SPE_FDS))
 
 #define AARCH64_ARCH_V9A_FEATURES(X)	(AARCH64_FEATBIT (X, V9A)	\
 					 | AARCH64_FEATBIT (X, F16)	\
diff --git a/opcodes/aarch64-sys-regs.def b/opcodes/aarch64-sys-regs.def
index 96bdadb0b0fe56f25ec2c210264900d6936db06b..aab2c7264cab0b4ca34ab8135194abd0126b7430 100644
--- a/opcodes/aarch64-sys-regs.def
+++ b/opcodes/aarch64-sys-regs.def
@@ -676,6 +676,7 @@
   SYSREG ("pmscr_el1",		CPENC (3,0,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
   SYSREG ("pmscr_el12",		CPENC (3,5,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
   SYSREG ("pmscr_el2",		CPENC (3,4,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
+  SYSREG ("pmsdsfr_el1",	CPENC (3,4,9,10,4),	F_ARCHEXT,		AARCH64_FEATURE (SPE_FDS))
   SYSREG ("pmselr_el0",		CPENC (3,3,9,12,5),	0,			AARCH64_NO_FEATURES)
   SYSREG ("pmsevfr_el1",	CPENC (3,0,9,9,5),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
   SYSREG ("pmsfcr_el1",		CPENC (3,0,9,9,4),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension.
  2023-11-16 11:28 ` [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension Srinath Parvathaneni
@ 2023-11-16 11:31   ` Srinath Parvathaneni
  2023-11-16 11:38     ` [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions Srinath Parvathaneni
  2023-11-16 12:04     ` [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension Richard Earnshaw
  2023-11-16 11:58   ` [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension Richard Earnshaw
  1 sibling, 2 replies; 11+ messages in thread
From: Srinath Parvathaneni @ 2023-11-16 11:31 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, nickc

[-- Attachment #1: Type: text/plain, Size: 835 bytes --]

Hi,

This patch also adds support for:
1. FEAT_RASv2 feature and "ERXGSR_EL1" system register.
RASv2 feature is enabled by passing +rasv2 to -march (eg: 
-march=armv8-a+rasv2).

2. FEAT_SCTLR2 and following system registers.
SCTLR2_EL1, SCTLR2_EL12, SCTLR2_EL2 and SCTLR2_EL3.

3. FEAT_FGT2 and following system registers.
HDFGRTR2_EL2, HDFGWTR2_EL2, HFGRTR2_EL2, HFGWTR2_EL2

4. FEAT_PFAR and following system registers.
PFAR_EL1, PFAR_EL2 and PFAR_EL12.

FEAT_RASv2, FEAT_SCTLR2, FEAT_FGT2 and FEAT_PFAR features are by default
enabled from Armv9.4-A architecture.

This patch also adds support for two read only system registers
id_aa64mmfr3_el1 and id_aa64mmfr4_el1, which are available from
Armv8-A Architecture.

Regression testing for aarch64-none-elf target and found no regressions.

Ok for binutils-master?

Regards,
Srinath.

[-- Attachment #2: rb17874.patch --]
[-- Type: text/plain, Size: 13047 bytes --]

diff --git a/gas/NEWS b/gas/NEWS
index ddf48fca37bbc87b78a78d4162ba71e4391a3cff..9d0fb3b63d03b730ef8b33fea84d038aa0d3d15a 100644
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,5 +1,8 @@
 -*- text -*-
 
+* Add support for Reliability, Availability and Serviceability extension v2
+  (RASv2) for AArch64.
+
 * Add support for 128-bit Atomic Instructions (LSE128) for AArch64.
 
 * Add support for Guarded Control Stack (GCS) for AArch64.
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 70c0ed652a551ada46755a3ce96a704d050a9b44..5646de781d4502c0aa434368f0603c11ee456966 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -10292,6 +10292,7 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = {
   {"chk",		AARCH64_FEATURE (CHK), AARCH64_NO_FEATURES},
   {"gcs",		AARCH64_FEATURE (GCS), AARCH64_NO_FEATURES},
   {"the",		AARCH64_FEATURE (THE), AARCH64_NO_FEATURES},
+  {"rasv2",		AARCH64_FEATURE (RASv2), AARCH64_FEATURE (RAS)},
   {NULL,		AARCH64_NO_FEATURES, AARCH64_NO_FEATURES},
 };
 
diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi
index 81c18181831a530f8596b8838a6b1751d5852305..cbf06bf3ec6d1680c74aad3a1a9364721ae7ca34 100644
--- a/gas/doc/c-aarch64.texi
+++ b/gas/doc/c-aarch64.texi
@@ -267,7 +267,8 @@ automatically cause those extensions to be disabled.
  @tab Enable Translation Hardening extension.
 @item @code{lse128} @tab Armv9.4-A @tab No
  @tab Enable the 128-bit Atomic Instructions extension.  This implies @code{lse}.
-
+@item @code{rasv2} @tab N/A @tab Armv9.4-A or later
+ @tab Enable the Reliability, Availability and Serviceability extension v2.
 @end multitable
 
 @node AArch64 Syntax
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
index 48c55680aa07618cd1f0c165435533fe4dd31e41..63397bcb162747c9fe77ebcf6f0066c286c6c620 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
@@ -1,3 +1,26 @@
 .*: Assembler messages:
 .*: Error: selected processor does not support system register name 'pmsdsfr_el1'
 .*: Error: selected processor does not support system register name 'pmsdsfr_el1'
+.*: Error: selected processor does not support system register name 'erxgsr_el1'
+.*: Error: selected processor does not support system register name 'sctlr2_el1'
+.*: Error: selected processor does not support system register name 'sctlr2_el12'
+.*: Error: selected processor does not support system register name 'sctlr2_el2'
+.*: Error: selected processor does not support system register name 'sctlr2_el3'
+.*: Error: selected processor does not support system register name 'sctlr2_el1'
+.*: Error: selected processor does not support system register name 'sctlr2_el12'
+.*: Error: selected processor does not support system register name 'sctlr2_el2'
+.*: Error: selected processor does not support system register name 'sctlr2_el3'
+.*: Error: selected processor does not support system register name 'hdfgrtr2_el2'
+.*: Error: selected processor does not support system register name 'hdfgwtr2_el2'
+.*: Error: selected processor does not support system register name 'hfgrtr2_el2'
+.*: Error: selected processor does not support system register name 'hfgwtr2_el2'
+.*: Error: selected processor does not support system register name 'hdfgrtr2_el2'
+.*: Error: selected processor does not support system register name 'hdfgwtr2_el2'
+.*: Error: selected processor does not support system register name 'hfgrtr2_el2'
+.*: Error: selected processor does not support system register name 'hfgwtr2_el2'
+.*: Error: selected processor does not support system register name 'pfar_el1'
+.*: Error: selected processor does not support system register name 'pfar_el2'
+.*: Error: selected processor does not support system register name 'pfar_el12'
+.*: Error: selected processor does not support system register name 'pfar_el1'
+.*: Error: selected processor does not support system register name 'pfar_el2'
+.*: Error: selected processor does not support system register name 'pfar_el12'
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
index d4cb769fdf63aaa89ac4c410982cd20ac12bbd4d..3b66e2bc57c1be243737679e2b85758bfe2af871 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
@@ -8,3 +8,26 @@ Disassembly of section \.text:
 0+ <.*>:
 .*:	d53c9a83 	mrs	x3, pmsdsfr_el1
 .*:	d51c9a83 	msr	pmsdsfr_el1, x3
+.*:	d5385340 	mrs	x0, erxgsr_el1
+.*:	d5181063 	msr	sctlr2_el1, x3
+.*:	d51d1063 	msr	sctlr2_el12, x3
+.*:	d51c1063 	msr	sctlr2_el2, x3
+.*:	d51e1063 	msr	sctlr2_el3, x3
+.*:	d5381063 	mrs	x3, sctlr2_el1
+.*:	d53d1063 	mrs	x3, sctlr2_el12
+.*:	d53c1063 	mrs	x3, sctlr2_el2
+.*:	d53e1063 	mrs	x3, sctlr2_el3
+.*:	d53c3103 	mrs	x3, hdfgrtr2_el2
+.*:	d53c3123 	mrs	x3, hdfgwtr2_el2
+.*:	d53c3143 	mrs	x3, hfgrtr2_el2
+.*:	d53c3163 	mrs	x3, hfgwtr2_el2
+.*:	d51c3103 	msr	hdfgrtr2_el2, x3
+.*:	d51c3123 	msr	hdfgwtr2_el2, x3
+.*:	d51c3143 	msr	hfgrtr2_el2, x3
+.*:	d51c3163 	msr	hfgwtr2_el2, x3
+.*:	d53860a0 	mrs	x0, pfar_el1
+.*:	d53c60a0 	mrs	x0, pfar_el2
+.*:	d53d60a0 	mrs	x0, pfar_el12
+.*:	d51860a0 	msr	pfar_el1, x0
+.*:	d51c60a0 	msr	pfar_el2, x0
+.*:	d51d60a0 	msr	pfar_el12, x0
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
index 4200d7ce60ed21822731a836214bb44aeeea57ac..9ad0a532acc1bd8714f89b193d1b41f57ffb80d2 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
@@ -1,2 +1,29 @@
 	mrs x3, PMSDSFR_EL1
 	msr PMSDSFR_EL1, x3
+
+	mrs x0, ERXGSR_EL1
+
+	msr SCTLR2_EL1, x3
+	msr SCTLR2_EL12, x3
+	msr SCTLR2_EL2, x3
+	msr SCTLR2_EL3, x3
+	mrs x3, SCTLR2_EL1
+	mrs x3, SCTLR2_EL12
+	mrs x3, SCTLR2_EL2
+	mrs x3, SCTLR2_EL3
+
+	mrs x3, HDFGRTR2_EL2
+	mrs x3, HDFGWTR2_EL2
+	mrs x3, HFGRTR2_EL2
+	mrs x3, HFGWTR2_EL2
+	msr HDFGRTR2_EL2, x3
+	msr HDFGWTR2_EL2, x3
+	msr HFGRTR2_EL2, x3
+	msr HFGWTR2_EL2, x3
+
+	mrs x0, PFAR_EL1
+	mrs x0, PFAR_EL2
+	mrs x0, PFAR_EL12
+	msr PFAR_EL1, x0
+	msr PFAR_EL2, x0
+	msr PFAR_EL12, x0
diff --git a/gas/testsuite/gas/aarch64/sysreg-2.d b/gas/testsuite/gas/aarch64/sysreg-2.d
index 097f27292739b810e7b6840d096e3fad9901f1cd..ac0a8621bfa88a21a2e0f7be69117357c9e16b06 100644
--- a/gas/testsuite/gas/aarch64/sysreg-2.d
+++ b/gas/testsuite/gas/aarch64/sysreg-2.d
@@ -7,10 +7,12 @@
 Disassembly of section .text:
 
 0+ <.*>:
-   [0-9a-f]+:	d5380725 	mrs	x5, id_aa64mmfr1_el1
-   [0-9a-f]+:	d5380747 	mrs	x7, id_aa64mmfr2_el1
-   [0-9a-f]+:	d5385305 	mrs	x5, erridr_el1
-   [0-9a-f]+:	d5185327 	msr	errselr_el1, x7
+.*:	d5380725 	mrs	x5, id_aa64mmfr1_el1
+.*:	d5380747 	mrs	x7, id_aa64mmfr2_el1
+.*:	d5380769 	mrs	x9, id_aa64mmfr3_el1
+.*:	d538078b 	mrs	x11, id_aa64mmfr4_el1
+  [0-9a-f]+:	d5385305 	mrs	x5, erridr_el1
+  [0-9a-f]+:	d5185327 	msr	errselr_el1, x7
   [0-9a-f]+:	d5385327 	mrs	x7, errselr_el1
   [0-9a-f]+:	d5385405 	mrs	x5, erxfr_el1
   [0-9a-f]+:	d5185425 	msr	erxctlr_el1, x5
diff --git a/gas/testsuite/gas/aarch64/sysreg-2.s b/gas/testsuite/gas/aarch64/sysreg-2.s
index 57eb08f33521076314260b68f3e322280d9ff93b..ae2bb145e72a0786078fe60b0082dd09a618ce4d 100644
--- a/gas/testsuite/gas/aarch64/sysreg-2.s
+++ b/gas/testsuite/gas/aarch64/sysreg-2.s
@@ -13,6 +13,8 @@
 
 	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
+	rw_sys_reg sys_reg=id_aa64mmfr3_el1 xreg=x9 r=1 w=0
+	rw_sys_reg sys_reg=id_aa64mmfr4_el1 xreg=x11 r=1 w=0
 
 	/* RAS extension.  */
 
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index 881a4211eabfad2cc4442efc78eb37c06d26973d..03ef907cac1c574516f1e1cc4d0537b33c803986 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -175,6 +175,14 @@ enum aarch64_feature_bit {
   AARCH64_FEATURE_THE,
   /* LSE128.  */
   AARCH64_FEATURE_LSE128,
+  /* ARMv8.9-A RAS Extensions.  */
+  AARCH64_FEATURE_RASv2,
+  /* System Control Register2.  */
+  AARCH64_FEATURE_SCTLR2,
+  /* Fine Grained Traps.  */
+  AARCH64_FEATURE_FGT2,
+  /* Physical Fault Address.  */
+  AARCH64_FEATURE_PFAR,
   AARCH64_NUM_FEATURES
 };
 
@@ -233,7 +241,11 @@ enum aarch64_feature_bit {
 #define AARCH64_ARCH_V8_9A_FEATURES(X)	(AARCH64_FEATBIT (X, V8_9A)	\
 					 | AARCH64_FEATBIT (X, SPEv1p4) \
 					 | AARCH64_FEATBIT (X, SPE_CRR)	\
-					 | AARCH64_FEATBIT (X, SPE_FDS))
+					 | AARCH64_FEATBIT (X, SPE_FDS) \
+					 | AARCH64_FEATBIT (X, RASv2)	\
+					 | AARCH64_FEATBIT (X, SCTLR2)	\
+					 | AARCH64_FEATBIT (X, FGT2)	\
+					 | AARCH64_FEATBIT (X, PFAR))
 
 #define AARCH64_ARCH_V9A_FEATURES(X)	(AARCH64_FEATBIT (X, V9A)	\
 					 | AARCH64_FEATBIT (X, F16)	\
diff --git a/opcodes/aarch64-sys-regs.def b/opcodes/aarch64-sys-regs.def
index aab2c7264cab0b4ca34ab8135194abd0126b7430..b51c5aa14598abe8628d6a1363b43d6604dc8fda 100644
--- a/opcodes/aarch64-sys-regs.def
+++ b/opcodes/aarch64-sys-regs.def
@@ -400,6 +400,7 @@
   SYSREG ("erxaddr_el1",	CPENC (3,0,5,4,3),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
   SYSREG ("erxctlr_el1",	CPENC (3,0,5,4,1),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
   SYSREG ("erxfr_el1",		CPENC (3,0,5,4,0),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (RAS))
+  SYSREG ("erxgsr_el1",		CPENC (3,0,5,3,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (RASv2))
   SYSREG ("erxmisc0_el1",	CPENC (3,0,5,5,0),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
   SYSREG ("erxmisc1_el1",	CPENC (3,0,5,5,1),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
   SYSREG ("erxmisc2_el1",	CPENC (3,0,5,5,2),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
@@ -438,10 +439,14 @@
   SYSREG ("hcr_el2",		CPENC (3,4,1,1,0),	0,			AARCH64_NO_FEATURES)
   SYSREG ("hcrx_el2",		CPENC (3,4,1,2,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
   SYSREG ("hdfgrtr_el2",	CPENC (3,4,3,1,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
+  SYSREG ("hdfgrtr2_el2",	CPENC (3,4,3,1,0),	F_ARCHEXT,		AARCH64_FEATURE (FGT2))
   SYSREG ("hdfgwtr_el2",	CPENC (3,4,3,1,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
+  SYSREG ("hdfgwtr2_el2",	CPENC (3,4,3,1,1),	F_ARCHEXT,		AARCH64_FEATURE (FGT2))
   SYSREG ("hfgitr_el2",		CPENC (3,4,1,1,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
   SYSREG ("hfgrtr_el2",		CPENC (3,4,1,1,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
+  SYSREG ("hfgrtr2_el2",	CPENC (3,4,3,1,2),	F_ARCHEXT,		AARCH64_FEATURE (FGT2))
   SYSREG ("hfgwtr_el2",		CPENC (3,4,1,1,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
+  SYSREG ("hfgwtr2_el2",	CPENC (3,4,3,1,3),	F_ARCHEXT,		AARCH64_FEATURE (FGT2))
   SYSREG ("hpfar_el2",		CPENC (3,4,6,0,4),	0,			AARCH64_NO_FEATURES)
   SYSREG ("hstr_el2",		CPENC (3,4,1,1,3),	0,			AARCH64_NO_FEATURES)
   SYSREG ("icc_ap0r0_el1",	CPENC (3,0,12,8,4),	0,			AARCH64_NO_FEATURES)
@@ -515,6 +520,8 @@
   SYSREG ("id_aa64mmfr0_el1",	CPENC (3,0,0,7,0),	F_REG_READ,		AARCH64_NO_FEATURES)
   SYSREG ("id_aa64mmfr1_el1",	CPENC (3,0,0,7,1),	F_REG_READ,		AARCH64_NO_FEATURES)
   SYSREG ("id_aa64mmfr2_el1",	CPENC (3,0,0,7,2),	F_REG_READ,		AARCH64_NO_FEATURES)
+  SYSREG ("id_aa64mmfr3_el1",	CPENC (3,0,0,7,3),	F_REG_READ,		AARCH64_NO_FEATURES)
+  SYSREG ("id_aa64mmfr4_el1",	CPENC (3,0,0,7,4),	F_REG_READ,		AARCH64_NO_FEATURES)
   SYSREG ("id_aa64pfr0_el1",	CPENC (3,0,0,4,0),	F_REG_READ,		AARCH64_NO_FEATURES)
   SYSREG ("id_aa64pfr1_el1",	CPENC (3,0,0,4,1),	F_REG_READ,		AARCH64_NO_FEATURES)
   SYSREG ("id_aa64smfr0_el1",	CPENC (3,0,0,4,5),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (SME))
@@ -595,6 +602,9 @@
   SYSREG ("oslsr_el1",		CPENC (2,0,1,1,4),	F_REG_READ,		AARCH64_NO_FEATURES)
   SYSREG ("pan",		CPENC (3,0,4,2,3),	F_ARCHEXT,		AARCH64_FEATURE (PAN))
   SYSREG ("par_el1",		CPENC (3,0,7,4,0),	F_REG_128,		AARCH64_NO_FEATURES)
+  SYSREG ("pfar_el1",		CPENC (3,0,6,0,5),      F_ARCHEXT,              AARCH64_FEATURE (PFAR))
+  SYSREG ("pfar_el12",		CPENC (3,5,6,0,5),      F_ARCHEXT,              AARCH64_FEATURE (PFAR))
+  SYSREG ("pfar_el2",		CPENC (3,4,6,0,5),      F_ARCHEXT,              AARCH64_FEATURE (PFAR))
   SYSREG ("pmbidr_el1",		CPENC (3,0,9,10,7),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PROFILE))
   SYSREG ("pmblimitr_el1",	CPENC (3,0,9,10,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
   SYSREG ("pmbptr_el1",		CPENC (3,0,9,10,1),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
@@ -774,6 +784,10 @@
   SYSREG ("sctlr_el12",		CPENC (3,5,1,0,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
   SYSREG ("sctlr_el2",		CPENC (3,4,1,0,0),	0,			AARCH64_NO_FEATURES)
   SYSREG ("sctlr_el3",		CPENC (3,6,1,0,0),	0,			AARCH64_NO_FEATURES)
+  SYSREG ("sctlr2_el1",		CPENC (3,0,1,0,3),	F_ARCHEXT,		AARCH64_FEATURE (SCTLR2))
+  SYSREG ("sctlr2_el12",	CPENC (3,5,1,0,3),	F_ARCHEXT,		AARCH64_FEATURE (SCTLR2))
+  SYSREG ("sctlr2_el2",		CPENC (3,4,1,0,3),	F_ARCHEXT,		AARCH64_FEATURE (SCTLR2))
+  SYSREG ("sctlr2_el3",		CPENC (3,6,1,0,3),	F_ARCHEXT,		AARCH64_FEATURE (SCTLR2))
   SYSREG ("scxtnum_el0",	CPENC (3,3,13,0,7),	F_ARCHEXT,		AARCH64_FEATURE (SCXTNUM))
   SYSREG ("scxtnum_el1",	CPENC (3,0,13,0,7),	F_ARCHEXT,		AARCH64_FEATURE (SCXTNUM))
   SYSREG ("scxtnum_el12",	CPENC (3,5,13,0,7),	F_ARCHEXT,		AARCH64_FEATURE (SCXTNUM))

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions.
  2023-11-16 11:31   ` [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension Srinath Parvathaneni
@ 2023-11-16 11:38     ` Srinath Parvathaneni
  2023-11-16 11:39       ` [PATCH 5/5][BINUTILS] aarch64: Add support for VMSA feature enhancements Srinath Parvathaneni
  2023-11-16 14:13       ` [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions Richard Earnshaw
  2023-11-16 12:04     ` [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension Richard Earnshaw
  1 sibling, 2 replies; 11+ messages in thread
From: Srinath Parvathaneni @ 2023-11-16 11:38 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, nickc

[-- Attachment #1: Type: text/plain, Size: 254 bytes --]

HI,

This patch adds 3 new AT system instructions through FEAT_ATS1A
feature, which are available by default from Armv9.4-A architecture.

Regression tested for aarch64-none-elf target and found
no regressions.

Ok for binutils-master?

Regards,
Srinath.

[-- Attachment #2: rb18001.patch --]
[-- Type: text/plain, Size: 3715 bytes --]

diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
index 63397bcb162747c9fe77ebcf6f0066c286c6c620..1b67843a4dd1744ef1ab2a7f9af3013922b7dbec 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
@@ -24,3 +24,6 @@
 .*: Error: selected processor does not support system register name 'pfar_el1'
 .*: Error: selected processor does not support system register name 'pfar_el2'
 .*: Error: selected processor does not support system register name 'pfar_el12'
+.*: Error: selected processor does not support system register name 's1e1a'
+.*: Error: selected processor does not support system register name 's1e2a'
+.*: Error: selected processor does not support system register name 's1e3a'
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
index 3b66e2bc57c1be243737679e2b85758bfe2af871..18376bb5ac19d821c8fcef2dcb272cdc2b9c5e52 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
@@ -31,3 +31,6 @@ Disassembly of section \.text:
 .*:	d51860a0 	msr	pfar_el1, x0
 .*:	d51c60a0 	msr	pfar_el2, x0
 .*:	d51d60a0 	msr	pfar_el12, x0
+.*:	d5087941 	at	s1e1a, x1
+.*:	d50c7943 	at	s1e2a, x3
+.*:	d50e7945 	at	s1e3a, x5
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
index 9ad0a532acc1bd8714f89b193d1b41f57ffb80d2..4e494a965f6a9196395b2da1f8fb7da3e42faa7c 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
@@ -27,3 +27,8 @@
 	msr PFAR_EL1, x0
 	msr PFAR_EL2, x0
 	msr PFAR_EL12, x0
+
+	/* AT.  */
+	at s1e1a, x1
+	at s1e2a, x3
+	at s1e3a, x5
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index 03ef907cac1c574516f1e1cc4d0537b33c803986..792d6a4f4a7603487899f175c2b49763cbb47697 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -183,6 +183,8 @@ enum aarch64_feature_bit {
   AARCH64_FEATURE_FGT2,
   /* Physical Fault Address.  */
   AARCH64_FEATURE_PFAR,
+  /* Address Translate Stage 1.  */
+  AARCH64_FEATURE_ATS1A,
   AARCH64_NUM_FEATURES
 };
 
@@ -245,7 +247,8 @@ enum aarch64_feature_bit {
 					 | AARCH64_FEATBIT (X, RASv2)	\
 					 | AARCH64_FEATBIT (X, SCTLR2)	\
 					 | AARCH64_FEATBIT (X, FGT2)	\
-					 | AARCH64_FEATBIT (X, PFAR))
+					 | AARCH64_FEATBIT (X, PFAR)	\
+					 | AARCH64_FEATBIT (X, ATS1A))
 
 #define AARCH64_ARCH_V9A_FEATURES(X)	(AARCH64_FEATBIT (X, V9A)	\
 					 | AARCH64_FEATBIT (X, F16)	\
diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index 80816d633661eb5a39e0da28c1cd5d4c87df308f..126a4aa0a4cd559a4697eab678cca160660d615a 100644
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -4810,6 +4810,9 @@ const aarch64_sys_ins_reg aarch64_sys_regs_at[] =
     { "s1e3w",      CPENS (6, C7, C8, 1), F_HASXT },
     { "s1e1rp",     CPENS (0, C7, C9, 0), F_HASXT | F_ARCHEXT },
     { "s1e1wp",     CPENS (0, C7, C9, 1), F_HASXT | F_ARCHEXT },
+    { "s1e1a",      CPENS (0, C7, C9, 2), F_HASXT | F_ARCHEXT },
+    { "s1e2a",      CPENS (4, C7, C9, 2), F_HASXT | F_ARCHEXT },
+    { "s1e3a",      CPENS (6, C7, C9, 2), F_HASXT | F_ARCHEXT },
     { 0,       CPENS(0,0,0,0), 0 }
 };
 
@@ -5041,6 +5044,12 @@ aarch64_sys_ins_reg_supported_p (const aarch64_feature_set features,
       && AARCH64_CPU_HAS_FEATURE (features, THE))
     return true;
 
+  if ((reg_value == CPENS (0, C7, C9, 2)
+       || reg_value == CPENS (4, C7, C9, 2)
+       || reg_value == CPENS (6, C7, C9, 2))
+      && AARCH64_CPU_HAS_FEATURE (features, ATS1A))
+    return true;
+
   return false;
 }
 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 5/5][BINUTILS] aarch64: Add support for VMSA feature enhancements.
  2023-11-16 11:38     ` [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions Srinath Parvathaneni
@ 2023-11-16 11:39       ` Srinath Parvathaneni
  2023-11-16 14:16         ` Richard Earnshaw
  2023-11-28 14:01         ` Jan Beulich
  2023-11-16 14:13       ` [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions Richard Earnshaw
  1 sibling, 2 replies; 11+ messages in thread
From: Srinath Parvathaneni @ 2023-11-16 11:39 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, nickc

[-- Attachment #1: Type: text/plain, Size: 564 bytes --]

Hi,

This patch adds the permission model enhancement and memory
attribute index enhancement features and their corresponding
system registers in AArch64 assembler.
Permission Indirection Extension (FEAT_S1PIE, FEAT_S2PIE)
Permission Overlay Extension (FEAT_S1POE, FEAT_S2POE)
Memory Attribute Index Enhancement (FEAT_AIE)
Extension to Translation Control Registers (FEAT_TCR2)

These features are available by default from Armv9.4-A architecture.

Regression tested for aarch64-none-elf target and found
no regressions.

Ok for binutils-master?

Regards,
Srinath.

[-- Attachment #2: rb18002.patch --]
[-- Type: text/plain, Size: 14614 bytes --]

diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
index 1b67843a4dd1744ef1ab2a7f9af3013922b7dbec..71ec06e3cb47ae629e9fd023268c9e5b0c55cda6 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
@@ -27,3 +27,53 @@
 .*: Error: selected processor does not support system register name 's1e1a'
 .*: Error: selected processor does not support system register name 's1e2a'
 .*: Error: selected processor does not support system register name 's1e3a'
+.*: Error: selected processor does not support system register name 'amair2_el1'
+.*: Error: selected processor does not support system register name 'amair2_el12'
+.*: Error: selected processor does not support system register name 'amair2_el2'
+.*: Error: selected processor does not support system register name 'amair2_el3'
+.*: Error: selected processor does not support system register name 'mair2_el1'
+.*: Error: selected processor does not support system register name 'mair2_el12'
+.*: Error: selected processor does not support system register name 'mair2_el2'
+.*: Error: selected processor does not support system register name 'mair2_el3'
+.*: Error: selected processor does not support system register name 'amair2_el1'
+.*: Error: selected processor does not support system register name 'amair2_el12'
+.*: Error: selected processor does not support system register name 'amair2_el2'
+.*: Error: selected processor does not support system register name 'amair2_el3'
+.*: Error: selected processor does not support system register name 'mair2_el1'
+.*: Error: selected processor does not support system register name 'mair2_el12'
+.*: Error: selected processor does not support system register name 'mair2_el2'
+.*: Error: selected processor does not support system register name 'mair2_el3'
+.*: Error: selected processor does not support system register name 'pir_el1'
+.*: Error: selected processor does not support system register name 'pir_el12'
+.*: Error: selected processor does not support system register name 'pir_el2'
+.*: Error: selected processor does not support system register name 'pir_el3'
+.*: Error: selected processor does not support system register name 'pire0_el1'
+.*: Error: selected processor does not support system register name 'pire0_el12'
+.*: Error: selected processor does not support system register name 'pire0_el2'
+.*: Error: selected processor does not support system register name 'pir_el1'
+.*: Error: selected processor does not support system register name 'pir_el12'
+.*: Error: selected processor does not support system register name 'pir_el2'
+.*: Error: selected processor does not support system register name 'pir_el3'
+.*: Error: selected processor does not support system register name 'pire0_el1'
+.*: Error: selected processor does not support system register name 'pire0_el12'
+.*: Error: selected processor does not support system register name 'pire0_el2'
+.*: Error: selected processor does not support system register name 's2pir_el2'
+.*: Error: selected processor does not support system register name 's2pir_el2'
+.*: Error: selected processor does not support system register name 'por_el0'
+.*: Error: selected processor does not support system register name 'por_el1'
+.*: Error: selected processor does not support system register name 'por_el12'
+.*: Error: selected processor does not support system register name 'por_el2'
+.*: Error: selected processor does not support system register name 'por_el3'
+.*: Error: selected processor does not support system register name 'por_el0'
+.*: Error: selected processor does not support system register name 'por_el1'
+.*: Error: selected processor does not support system register name 'por_el12'
+.*: Error: selected processor does not support system register name 'por_el2'
+.*: Error: selected processor does not support system register name 'por_el3'
+.*: Error: selected processor does not support system register name 's2por_el1'
+.*: Error: selected processor does not support system register name 's2por_el1'
+.*: Error: selected processor does not support system register name 'tcr2_el1'
+.*: Error: selected processor does not support system register name 'tcr2_el12'
+.*: Error: selected processor does not support system register name 'tcr2_el2'
+.*: Error: selected processor does not support system register name 'tcr2_el1'
+.*: Error: selected processor does not support system register name 'tcr2_el12'
+.*: Error: selected processor does not support system register name 'tcr2_el2'
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
index 18376bb5ac19d821c8fcef2dcb272cdc2b9c5e52..ea4cc867ec3ea9595f7076e49d5d48c7794921dd 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
@@ -34,3 +34,53 @@ Disassembly of section \.text:
 .*:	d5087941 	at	s1e1a, x1
 .*:	d50c7943 	at	s1e2a, x3
 .*:	d50e7945 	at	s1e3a, x5
+.*:	d538a320 	mrs	x0, amair2_el1
+.*:	d53da320 	mrs	x0, amair2_el12
+.*:	d53ca320 	mrs	x0, amair2_el2
+.*:	d53ea320 	mrs	x0, amair2_el3
+.*:	d538a220 	mrs	x0, mair2_el1
+.*:	d53da220 	mrs	x0, mair2_el12
+.*:	d53ca120 	mrs	x0, mair2_el2
+.*:	d53ea120 	mrs	x0, mair2_el3
+.*:	d518a320 	msr	amair2_el1, x0
+.*:	d51da320 	msr	amair2_el12, x0
+.*:	d51ca320 	msr	amair2_el2, x0
+.*:	d51ea320 	msr	amair2_el3, x0
+.*:	d518a220 	msr	mair2_el1, x0
+.*:	d51da220 	msr	mair2_el12, x0
+.*:	d51ca120 	msr	mair2_el2, x0
+.*:	d51ea120 	msr	mair2_el3, x0
+.*:	d538a260 	mrs	x0, pir_el1
+.*:	d53da260 	mrs	x0, pir_el12
+.*:	d53ca260 	mrs	x0, pir_el2
+.*:	d53ea260 	mrs	x0, pir_el3
+.*:	d538a240 	mrs	x0, pire0_el1
+.*:	d53da240 	mrs	x0, pire0_el12
+.*:	d53ca240 	mrs	x0, pire0_el2
+.*:	d518a260 	msr	pir_el1, x0
+.*:	d51da260 	msr	pir_el12, x0
+.*:	d51ca260 	msr	pir_el2, x0
+.*:	d51ea260 	msr	pir_el3, x0
+.*:	d518a240 	msr	pire0_el1, x0
+.*:	d51da240 	msr	pire0_el12, x0
+.*:	d51ca240 	msr	pire0_el2, x0
+.*:	d53ca2a0 	mrs	x0, s2pir_el2
+.*:	d51ca2a0 	msr	s2pir_el2, x0
+.*:	d53ba280 	mrs	x0, por_el0
+.*:	d538a280 	mrs	x0, por_el1
+.*:	d53da280 	mrs	x0, por_el12
+.*:	d53ca280 	mrs	x0, por_el2
+.*:	d53ea280 	mrs	x0, por_el3
+.*:	d51ba280 	msr	por_el0, x0
+.*:	d518a280 	msr	por_el1, x0
+.*:	d51da280 	msr	por_el12, x0
+.*:	d51ca280 	msr	por_el2, x0
+.*:	d51ea280 	msr	por_el3, x0
+.*:	d538a2a0 	mrs	x0, s2por_el1
+.*:	d518a2a0 	msr	s2por_el1, x0
+.*:	d5382060 	mrs	x0, tcr2_el1
+.*:	d53d2060 	mrs	x0, tcr2_el12
+.*:	d53c2060 	mrs	x0, tcr2_el2
+.*:	d5182060 	msr	tcr2_el1, x0
+.*:	d51d2060 	msr	tcr2_el12, x0
+.*:	d51c2060 	msr	tcr2_el2, x0
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
index 4e494a965f6a9196395b2da1f8fb7da3e42faa7c..2768c2686903629d88ca36ef1404b4ea0a0c477a 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
@@ -32,3 +32,69 @@
 	at s1e1a, x1
 	at s1e2a, x3
 	at s1e3a, x5
+
+	/* FEAT_AIE.  */
+	mrs x0, amair2_el1
+	mrs x0, amair2_el12
+	mrs x0, amair2_el2
+	mrs x0, amair2_el3
+	mrs x0, mair2_el1
+	mrs x0, mair2_el12
+	mrs x0, mair2_el2
+	mrs x0, mair2_el3
+
+	msr amair2_el1, x0
+	msr amair2_el12, x0
+	msr amair2_el2, x0
+	msr amair2_el3, x0
+	msr mair2_el1, x0
+	msr mair2_el12, x0
+	msr mair2_el2, x0
+	msr mair2_el3, x0
+
+	/* FEAT_S1PIE.  */
+	mrs x0, pir_el1
+	mrs x0, pir_el12
+	mrs x0, pir_el2
+	mrs x0, pir_el3
+	mrs x0, pire0_el1
+	mrs x0, pire0_el12
+	mrs x0, pire0_el2
+
+	msr pir_el1, x0
+	msr pir_el12, x0
+	msr pir_el2, x0
+	msr pir_el3, x0
+	msr pire0_el1, x0
+	msr pire0_el12, x0
+	msr pire0_el2, x0
+
+	/* FEAT_S2PIE.  */
+	mrs x0, s2pir_el2
+	msr s2pir_el2, x0
+
+	/* FEAT_S1POE.  */
+	mrs x0, por_el0
+	mrs x0, por_el1
+	mrs x0, por_el12
+	mrs x0, por_el2
+	mrs x0, por_el3
+
+	msr por_el0, x0
+	msr por_el1, x0
+	msr por_el12, x0
+	msr por_el2, x0
+	msr por_el3, x0
+
+	/* FEAT_S21POE.  */
+	mrs x0, s2por_el1
+	msr s2por_el1, x0
+
+	/* FEAT_TCR2.  */
+	mrs x0, tcr2_el1
+	mrs x0, tcr2_el12
+	mrs x0, tcr2_el2
+
+	msr tcr2_el1, x0
+	msr tcr2_el12, x0
+	msr tcr2_el2, x0
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index 792d6a4f4a7603487899f175c2b49763cbb47697..df0864009fe145028aef9c8d5e5e76badd616f1b 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -185,6 +185,18 @@ enum aarch64_feature_bit {
   AARCH64_FEATURE_PFAR,
   /* Address Translate Stage 1.  */
   AARCH64_FEATURE_ATS1A,
+  /* Memory Attribute Index Enhancement.  */
+  AARCH64_FEATURE_AIE,
+  /* Stage 1 Permission Indirection Extension.  */
+  AARCH64_FEATURE_S1PIE,
+  /* Stage 2 Permission Indirection Extension.  */
+  AARCH64_FEATURE_S2PIE,
+  /* Stage 1 Permission Overlay Extension.  */
+  AARCH64_FEATURE_S1POE,
+  /* Stage 2 Permission Overlay Extension.  */
+  AARCH64_FEATURE_S2POE,
+  /* Extension to Translation Control Registers.  */
+  AARCH64_FEATURE_TCR2,
   AARCH64_NUM_FEATURES
 };
 
@@ -248,7 +260,13 @@ enum aarch64_feature_bit {
 					 | AARCH64_FEATBIT (X, SCTLR2)	\
 					 | AARCH64_FEATBIT (X, FGT2)	\
 					 | AARCH64_FEATBIT (X, PFAR)	\
-					 | AARCH64_FEATBIT (X, ATS1A))
+					 | AARCH64_FEATBIT (X, ATS1A)	\
+					 | AARCH64_FEATBIT (X, AIE)	\
+					 | AARCH64_FEATBIT (X, S1PIE)	\
+					 | AARCH64_FEATBIT (X, S2PIE)	\
+					 | AARCH64_FEATBIT (X, S1POE)	\
+					 | AARCH64_FEATBIT (X, S2POE)	\
+					 | AARCH64_FEATBIT (X, TCR2))
 
 #define AARCH64_ARCH_V9A_FEATURES(X)	(AARCH64_FEATBIT (X, V9A)	\
 					 | AARCH64_FEATBIT (X, F16)	\
diff --git a/opcodes/aarch64-sys-regs.def b/opcodes/aarch64-sys-regs.def
index b51c5aa14598abe8628d6a1363b43d6604dc8fda..0f647efca7e46a8554ac5c850fb315860bbede33 100644
--- a/opcodes/aarch64-sys-regs.def
+++ b/opcodes/aarch64-sys-regs.def
@@ -54,6 +54,10 @@
   SYSREG ("amair_el12",		CPENC (3,5,10,3,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
   SYSREG ("amair_el2",		CPENC (3,4,10,3,0),	0,			AARCH64_NO_FEATURES)
   SYSREG ("amair_el3",		CPENC (3,6,10,3,0),	0,			AARCH64_NO_FEATURES)
+  SYSREG ("amair2_el1",		CPENC (3,0,10,3,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
+  SYSREG ("amair2_el12",	CPENC (3,5,10,3,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
+  SYSREG ("amair2_el2",		CPENC (3,4,10,3,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
+  SYSREG ("amair2_el3",		CPENC (3,6,10,3,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
   SYSREG ("amcfgr_el0",		CPENC (3,3,13,2,1),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_4A))
   SYSREG ("amcg1idr_el0",	CPENC (3,3,13,2,6),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_6A))
   SYSREG ("amcgcr_el0",		CPENC (3,3,13,2,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_4A))
@@ -556,6 +560,10 @@
   SYSREG ("mair_el12",		CPENC (3,5,10,2,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
   SYSREG ("mair_el2",		CPENC (3,4,10,2,0),	0,			AARCH64_NO_FEATURES)
   SYSREG ("mair_el3",		CPENC (3,6,10,2,0),	0,			AARCH64_NO_FEATURES)
+  SYSREG ("mair2_el1",		CPENC (3,0,10,2,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
+  SYSREG ("mair2_el12",		CPENC (3,5,10,2,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
+  SYSREG ("mair2_el2",		CPENC (3,4,10,1,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
+  SYSREG ("mair2_el3",		CPENC (3,6,10,1,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
   SYSREG ("mdccint_el1",	CPENC (2,0,0,2,0),	0,			AARCH64_NO_FEATURES)
   SYSREG ("mdccsr_el0",		CPENC (2,3,0,1,0),	F_REG_READ,		AARCH64_NO_FEATURES)
   SYSREG ("mdcr_el2",		CPENC (3,4,1,1,1),	0,			AARCH64_NO_FEATURES)
@@ -600,6 +608,13 @@
   SYSREG ("oseccr_el1",		CPENC (2,0,0,6,2),	0,			AARCH64_NO_FEATURES)
   SYSREG ("oslar_el1",		CPENC (2,0,1,0,4),	F_REG_WRITE,		AARCH64_NO_FEATURES)
   SYSREG ("oslsr_el1",		CPENC (2,0,1,1,4),	F_REG_READ,		AARCH64_NO_FEATURES)
+  SYSREG ("pir_el1",		CPENC (3,0,10,2,3),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
+  SYSREG ("pir_el12",		CPENC (3,5,10,2,3),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
+  SYSREG ("pir_el2",		CPENC (3,4,10,2,3),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
+  SYSREG ("pir_el3",		CPENC (3,6,10,2,3),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
+  SYSREG ("pire0_el1",		CPENC (3,0,10,2,2),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
+  SYSREG ("pire0_el12",		CPENC (3,5,10,2,2),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
+  SYSREG ("pire0_el2",		CPENC (3,4,10,2,2),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
   SYSREG ("pan",		CPENC (3,0,4,2,3),	F_ARCHEXT,		AARCH64_FEATURE (PAN))
   SYSREG ("par_el1",		CPENC (3,0,7,4,0),	F_REG_128,		AARCH64_NO_FEATURES)
   SYSREG ("pfar_el1",		CPENC (3,0,6,0,5),      F_ARCHEXT,              AARCH64_FEATURE (PFAR))
@@ -699,6 +714,11 @@
   SYSREG ("pmuserenr_el0",	CPENC (3,3,9,14,0),	0,			AARCH64_NO_FEATURES)
   SYSREG ("pmxevcntr_el0",	CPENC (3,3,9,13,2),	0,			AARCH64_NO_FEATURES)
   SYSREG ("pmxevtyper_el0",	CPENC (3,3,9,13,1),	0,			AARCH64_NO_FEATURES)
+  SYSREG ("por_el0",		CPENC (3,3,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
+  SYSREG ("por_el1",		CPENC (3,0,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
+  SYSREG ("por_el12",		CPENC (3,5,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
+  SYSREG ("por_el2",		CPENC (3,4,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
+  SYSREG ("por_el3",		CPENC (3,6,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
   SYSREG ("prbar10_el1",	CPENC (3,0,6,13,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
   SYSREG ("prbar10_el2",	CPENC (3,4,6,13,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
   SYSREG ("prbar11_el1",	CPENC (3,0,6,13,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
@@ -818,11 +838,16 @@
   SYSREG ("spsr_und",		CPENC (3,4,4,3,2),	0,			AARCH64_NO_FEATURES)
   SYSREG ("ssbs",		CPENC (3,3,4,2,6),	F_ARCHEXT,		AARCH64_FEATURE (SSBS))
   SYSREG ("svcr",		CPENC (3,3,4,2,2),	F_ARCHEXT,		AARCH64_FEATURE (SME))
+  SYSREG ("s2pir_el2",		CPENC (3,4,10,2,5),	F_ARCHEXT,		AARCH64_FEATURE (S2PIE))
+  SYSREG ("s2por_el1",		CPENC (3,0,10,2,5),	F_ARCHEXT,		AARCH64_FEATURE (S2POE))
   SYSREG ("tco",		CPENC (3,3,4,2,7),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))
   SYSREG ("tcr_el1",		CPENC (3,0,2,0,2),	0,			AARCH64_NO_FEATURES)
   SYSREG ("tcr_el12",		CPENC (3,5,2,0,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
   SYSREG ("tcr_el2",		CPENC (3,4,2,0,2),	0,			AARCH64_NO_FEATURES)
   SYSREG ("tcr_el3",		CPENC (3,6,2,0,2),	0,			AARCH64_NO_FEATURES)
+  SYSREG ("tcr2_el1",		CPENC (3,0,2,0,3),	F_ARCHEXT,		AARCH64_FEATURE (TCR2))
+  SYSREG ("tcr2_el12",		CPENC (3,5,2,0,3),	F_ARCHEXT,		AARCH64_FEATURE (TCR2))
+  SYSREG ("tcr2_el2",		CPENC (3,4,2,0,3),	F_ARCHEXT,		AARCH64_FEATURE (TCR2))
   SYSREG ("teecr32_el1",	CPENC (2,2,0,0,0),	0,			AARCH64_NO_FEATURES)
   SYSREG ("teehbr32_el1",	CPENC (2,2,1,0,0),	0,			AARCH64_NO_FEATURES)
   SYSREG ("tfsr_el1",		CPENC (3,0,5,6,0),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/5][BINUTILS] aarch64: Add SLC target for PRFM instruction.
  2023-11-16 11:26 [PATCH 1/5][BINUTILS] aarch64: Add SLC target for PRFM instruction Srinath Parvathaneni
  2023-11-16 11:28 ` [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension Srinath Parvathaneni
@ 2023-11-16 11:55 ` Richard Earnshaw
  1 sibling, 0 replies; 11+ messages in thread
From: Richard Earnshaw @ 2023-11-16 11:55 UTC (permalink / raw)
  To: Srinath Parvathaneni, binutils; +Cc: Richard Earnshaw, nickc



On 16/11/2023 11:26, Srinath Parvathaneni wrote:
> Hi,
> 
> This patch adds support for FEAT_PRFMSLC feature which enables
> SLC target for PRFM instructions.
> 
> Regression testing for aarch64-none-elf target and found no regressions.
> 
> Ok for binutils-master?
> 
> Regards,
> Srinath.

OK.

R.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension.
  2023-11-16 11:28 ` [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension Srinath Parvathaneni
  2023-11-16 11:31   ` [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension Srinath Parvathaneni
@ 2023-11-16 11:58   ` Richard Earnshaw
  1 sibling, 0 replies; 11+ messages in thread
From: Richard Earnshaw @ 2023-11-16 11:58 UTC (permalink / raw)
  To: Srinath Parvathaneni, binutils; +Cc: Richard Earnshaw, nickc



On 16/11/2023 11:28, Srinath Parvathaneni wrote:
> Hi,
> 
> This patch adds features to the Statistical Profiling Extension,
> identified as FEAT_SPEv1p4, FEAT_SPE_FDS, and FEAT_SPE_CRR, which
> are enabled by default from Armv9.4-A.
> 
> Also adds support for system register "pmsdsfr_el1".
> 
> Regression tested for aarch64-none-elf target and found no regressions.
> 
> Ok for binutils-master?
> 
> Regards,
> Srinath.

OK.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension.
  2023-11-16 11:31   ` [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension Srinath Parvathaneni
  2023-11-16 11:38     ` [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions Srinath Parvathaneni
@ 2023-11-16 12:04     ` Richard Earnshaw
  1 sibling, 0 replies; 11+ messages in thread
From: Richard Earnshaw @ 2023-11-16 12:04 UTC (permalink / raw)
  To: Srinath Parvathaneni, binutils; +Cc: Richard Earnshaw, nickc



On 16/11/2023 11:31, Srinath Parvathaneni wrote:
> Hi,
> 
> This patch also adds support for:
> 1. FEAT_RASv2 feature and "ERXGSR_EL1" system register.
> RASv2 feature is enabled by passing +rasv2 to -march (eg: 
> -march=armv8-a+rasv2).
> 
> 2. FEAT_SCTLR2 and following system registers.
> SCTLR2_EL1, SCTLR2_EL12, SCTLR2_EL2 and SCTLR2_EL3.
> 
> 3. FEAT_FGT2 and following system registers.
> HDFGRTR2_EL2, HDFGWTR2_EL2, HFGRTR2_EL2, HFGWTR2_EL2
> 
> 4. FEAT_PFAR and following system registers.
> PFAR_EL1, PFAR_EL2 and PFAR_EL12.
> 
> FEAT_RASv2, FEAT_SCTLR2, FEAT_FGT2 and FEAT_PFAR features are by default
> enabled from Armv9.4-A architecture.
> 
> This patch also adds support for two read only system registers
> id_aa64mmfr3_el1 and id_aa64mmfr4_el1, which are available from
> Armv8-A Architecture.
> 
> Regression testing for aarch64-none-elf target and found no regressions.
> 
> Ok for binutils-master?
> 
> Regards,
> Srinath.

OK.

R.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions.
  2023-11-16 11:38     ` [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions Srinath Parvathaneni
  2023-11-16 11:39       ` [PATCH 5/5][BINUTILS] aarch64: Add support for VMSA feature enhancements Srinath Parvathaneni
@ 2023-11-16 14:13       ` Richard Earnshaw
  1 sibling, 0 replies; 11+ messages in thread
From: Richard Earnshaw @ 2023-11-16 14:13 UTC (permalink / raw)
  To: Srinath Parvathaneni, binutils; +Cc: Richard Earnshaw, nickc



On 16/11/2023 11:38, Srinath Parvathaneni wrote:
> HI,
> 
> This patch adds 3 new AT system instructions through FEAT_ATS1A
> feature, which are available by default from Armv9.4-A architecture.
> 
> Regression tested for aarch64-none-elf target and found
> no regressions.
> 
> Ok for binutils-master?
> 
> Regards,
> Srinath.
@@ -245,7 +247,8 @@ enum aarch64_feature_bit {
  					 | AARCH64_FEATBIT (X, RASv2)	\
  					 | AARCH64_FEATBIT (X, SCTLR2)	\
  					 | AARCH64_FEATBIT (X, FGT2)	\
-					 | AARCH64_FEATBIT (X, PFAR))
+					 | AARCH64_FEATBIT (X, PFAR)	\
+					 | AARCH64_FEATBIT (X, ATS1A))

If you put the final closing parenthesis on the following line, then the 
next update will cause less churn in the diffs.

Otherwise OK.

R.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 5/5][BINUTILS] aarch64: Add support for VMSA feature enhancements.
  2023-11-16 11:39       ` [PATCH 5/5][BINUTILS] aarch64: Add support for VMSA feature enhancements Srinath Parvathaneni
@ 2023-11-16 14:16         ` Richard Earnshaw
  2023-11-28 14:01         ` Jan Beulich
  1 sibling, 0 replies; 11+ messages in thread
From: Richard Earnshaw @ 2023-11-16 14:16 UTC (permalink / raw)
  To: Srinath Parvathaneni, binutils; +Cc: Richard Earnshaw, nickc



On 16/11/2023 11:39, Srinath Parvathaneni wrote:
> Hi,
> 
> This patch adds the permission model enhancement and memory
> attribute index enhancement features and their corresponding
> system registers in AArch64 assembler.
> Permission Indirection Extension (FEAT_S1PIE, FEAT_S2PIE)
> Permission Overlay Extension (FEAT_S1POE, FEAT_S2POE)
> Memory Attribute Index Enhancement (FEAT_AIE)
> Extension to Translation Control Registers (FEAT_TCR2)
> 
> These features are available by default from Armv9.4-A architecture.
> 
> Regression tested for aarch64-none-elf target and found
> no regressions.
> 
> Ok for binutils-master?
> 
> Regards,
> Srinath.
@@ -248,7 +260,13 @@ enum aarch64_feature_bit {
  					 | AARCH64_FEATBIT (X, SCTLR2)	\
  					 | AARCH64_FEATBIT (X, FGT2)	\
  					 | AARCH64_FEATBIT (X, PFAR)	\
-					 | AARCH64_FEATBIT (X, ATS1A))
+					 | AARCH64_FEATBIT (X, ATS1A)	\
+					 | AARCH64_FEATBIT (X, AIE)	\
+					 | AARCH64_FEATBIT (X, S1PIE)	\
+					 | AARCH64_FEATBIT (X, S2PIE)	\
+					 | AARCH64_FEATBIT (X, S1POE)	\
+					 | AARCH64_FEATBIT (X, S2POE)	\
+					 | AARCH64_FEATBIT (X, TCR2))

Hmm, it's this one where the change I suggested on patch 4 really needs 
doing so that next time we win.

Otherwise OK.

R.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 5/5][BINUTILS] aarch64: Add support for VMSA feature enhancements.
  2023-11-16 11:39       ` [PATCH 5/5][BINUTILS] aarch64: Add support for VMSA feature enhancements Srinath Parvathaneni
  2023-11-16 14:16         ` Richard Earnshaw
@ 2023-11-28 14:01         ` Jan Beulich
  1 sibling, 0 replies; 11+ messages in thread
From: Jan Beulich @ 2023-11-28 14:01 UTC (permalink / raw)
  To: Srinath Parvathaneni; +Cc: Richard Earnshaw, nickc, binutils

On 16.11.2023 12:39, Srinath Parvathaneni wrote:
> This patch adds the permission model enhancement and memory
> attribute index enhancement features and their corresponding
> system registers in AArch64 assembler.
> Permission Indirection Extension (FEAT_S1PIE, FEAT_S2PIE)
> Permission Overlay Extension (FEAT_S1POE, FEAT_S2POE)
> Memory Attribute Index Enhancement (FEAT_AIE)
> Extension to Translation Control Registers (FEAT_TCR2)

With the public documentation not (yet) mentioning these registers
(and you also not providing references to, perhaps, incremental
documentation which is going to be folded into the ARM), it's
pretty hard to judge whether what might look like a typo actually
is one. In particular in

@@ -556,6 +560,10 @@
   SYSREG ("mair_el12",		CPENC (3,5,10,2,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
   SYSREG ("mair_el2",		CPENC (3,4,10,2,0),	0,			AARCH64_NO_FEATURES)
   SYSREG ("mair_el3",		CPENC (3,6,10,2,0),	0,			AARCH64_NO_FEATURES)
+  SYSREG ("mair2_el1",		CPENC (3,0,10,2,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
+  SYSREG ("mair2_el12",		CPENC (3,5,10,2,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
+  SYSREG ("mair2_el2",		CPENC (3,4,10,1,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
+  SYSREG ("mair2_el3",		CPENC (3,6,10,1,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))

the EL2 and EL3 values using 1s where the EL1 and EL12 values use 2s
looks somewhat suspicious. No similar inconsistency exists for AMAIR2,
for example.

Jan

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-11-28 14:01 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-16 11:26 [PATCH 1/5][BINUTILS] aarch64: Add SLC target for PRFM instruction Srinath Parvathaneni
2023-11-16 11:28 ` [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension Srinath Parvathaneni
2023-11-16 11:31   ` [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension Srinath Parvathaneni
2023-11-16 11:38     ` [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions Srinath Parvathaneni
2023-11-16 11:39       ` [PATCH 5/5][BINUTILS] aarch64: Add support for VMSA feature enhancements Srinath Parvathaneni
2023-11-16 14:16         ` Richard Earnshaw
2023-11-28 14:01         ` Jan Beulich
2023-11-16 14:13       ` [PATCH 4/5][BINUTILS] aarch64: Add new AT system instructions Richard Earnshaw
2023-11-16 12:04     ` [PATCH 3/5][BINUTILS] aarch64: Add support to new features in RAS extension Richard Earnshaw
2023-11-16 11:58   ` [PATCH 2/5][BINUTILS] aarch64: Add features to the Statistical Profiling Extension Richard Earnshaw
2023-11-16 11:55 ` [PATCH 1/5][BINUTILS] aarch64: Add SLC target for PRFM instruction Richard Earnshaw

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).