[v3,6/7] aarch64: Remove +mpamv2 feature option

Message ID 20260630094203.2328048-7-rearnsha@arm.com
State Superseded
Headers
Series aarch64: deprecate some ISA features |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 fail Patch failed to apply

Commit Message

Richard Earnshaw June 30, 2026, 9:42 a.m. UTC
  The remaining mpamv2 details only use system registers; so by our
conventions we do not use a feature option to enable them.  Remove the
now +mpamv2 architecture option and adjust the tests accordingly.
---
 gas/config/tc-aarch64.c                       | 1 -
 gas/doc/c-aarch64.texi                        | 2 --
 gas/testsuite/gas/aarch64/sysreg/mpamv2-bad.d | 2 +-
 gas/testsuite/gas/aarch64/sysreg/mpamv2.d     | 2 +-
 include/opcode/aarch64.h                      | 2 --
 opcodes/aarch64-sys-regs.def                  | 8 ++++----
 6 files changed, 6 insertions(+), 11 deletions(-)
  

Comments

Alice Carlotti July 1, 2026, 5:21 p.m. UTC | #1
On Tue, Jun 30, 2026 at 10:42:02AM +0100, Richard Earnshaw wrote:
> The remaining mpamv2 details only use system registers; so by our
> conventions we do not use a feature option to enable them.  Remove the
> now +mpamv2 architecture option and adjust the tests accordingly.

Is "now" a typo?

...
> diff --git a/opcodes/aarch64-sys-regs.def b/opcodes/aarch64-sys-regs.def
> index 6f9f2b4c0a8..1fbf56f0926 100644
> --- a/opcodes/aarch64-sys-regs.def
> +++ b/opcodes/aarch64-sys-regs.def
> @@ -922,10 +922,10 @@
>    SYSREG ("mpambwcap_el2",	CPENC (3,4,10,5,6),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
>    SYSREG ("mpambwidr_el1",	CPENC (3,0,10,4,5),	F_REG_READ,	AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
>    SYSREG ("mpambwsm_el1",	CPENC (3,0,10,5,7),	0,		AARCH64_FEATURES (2, SME, V9_3A)) /* SME && MPAM_PE_BW_CTRL */
> -  SYSREG ("mpamctl_el1",	CPENC (3,0,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
> -  SYSREG ("mpamctl_el12",	CPENC (3,5,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
> -  SYSREG ("mpamctl_el2",	CPENC (3,4,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
> -  SYSREG ("mpamctl_el3",	CPENC (3,6,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
> +  SYSREG ("mpamctl_el1",	CPENC (3,0,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
> +  SYSREG ("mpamctl_el12",	CPENC (3,5,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
> +  SYSREG ("mpamctl_el2",	CPENC (3,4,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
> +  SYSREG ("mpamctl_el3",	CPENC (3,6,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */

MPAMv2 is now optional from Armv9.3-a.  This series is ok with that change.

Alice

>    SYSREG ("mpamhcr_el2",	CPENC (3,4,10,4,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
>    SYSREG ("mpamidr_el1",	CPENC (3,0,10,4,4),	F_REG_READ,	AARCH64_FEATURE (V8_2A)) /* MPAM */
>    SYSREG ("mpamsm_el1",		CPENC (3,0,10,5,3),	0,		AARCH64_FEATURES (2, SME, V8_2A)) /* SME && MPAM */
> -- 
> 2.43.0
>
  
Richard Earnshaw (foss) July 2, 2026, 12:38 p.m. UTC | #2
On 01/07/2026 18:21, Alice Carlotti wrote:
> On Tue, Jun 30, 2026 at 10:42:02AM +0100, Richard Earnshaw wrote:
>> The remaining mpamv2 details only use system registers; so by our
>> conventions we do not use a feature option to enable them.  Remove the
>> now +mpamv2 architecture option and adjust the tests accordingly.
> 
> Is "now" a typo?
> 
No, but the word 'redundant' should have been after it :)


> ...
>> diff --git a/opcodes/aarch64-sys-regs.def b/opcodes/aarch64-sys-regs.def
>> index 6f9f2b4c0a8..1fbf56f0926 100644
>> --- a/opcodes/aarch64-sys-regs.def
>> +++ b/opcodes/aarch64-sys-regs.def
>> @@ -922,10 +922,10 @@
>>    SYSREG ("mpambwcap_el2",	CPENC (3,4,10,5,6),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
>>    SYSREG ("mpambwidr_el1",	CPENC (3,0,10,4,5),	F_REG_READ,	AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
>>    SYSREG ("mpambwsm_el1",	CPENC (3,0,10,5,7),	0,		AARCH64_FEATURES (2, SME, V9_3A)) /* SME && MPAM_PE_BW_CTRL */
>> -  SYSREG ("mpamctl_el1",	CPENC (3,0,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
>> -  SYSREG ("mpamctl_el12",	CPENC (3,5,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
>> -  SYSREG ("mpamctl_el2",	CPENC (3,4,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
>> -  SYSREG ("mpamctl_el3",	CPENC (3,6,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
>> +  SYSREG ("mpamctl_el1",	CPENC (3,0,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
>> +  SYSREG ("mpamctl_el12",	CPENC (3,5,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
>> +  SYSREG ("mpamctl_el2",	CPENC (3,4,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
>> +  SYSREG ("mpamctl_el3",	CPENC (3,6,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
> 
> MPAMv2 is now optional from Armv9.3-a.  This series is ok with that change.
> 

That wasn't the case at the time I posted this...

> Alice
> 
>>    SYSREG ("mpamhcr_el2",	CPENC (3,4,10,4,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
>>    SYSREG ("mpamidr_el1",	CPENC (3,0,10,4,4),	F_REG_READ,	AARCH64_FEATURE (V8_2A)) /* MPAM */
>>    SYSREG ("mpamsm_el1",		CPENC (3,0,10,5,3),	0,		AARCH64_FEATURES (2, SME, V8_2A)) /* SME && MPAM */
>> -- 
>> 2.43.0
>>
  

Patch

diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index ae59edcdce9..715df4de4bf 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -11138,7 +11138,6 @@  static const struct aarch64_option_cpu_value_table aarch64_features[] = {
   {"f16f32mm",		AARCH64_FEATURE (F16F32MM), AARCH64_FEATURES (2, SIMD, F16)},
   {"f16mm",		AARCH64_FEATURE (F16MM), AARCH64_FEATURES (2, SIMD, F16)},
   {"sve-b16mm",		AARCH64_FEATURE (SVE_B16MM), AARCH64_FEATURE (SVE)},
-  {"mpamv2",		AARCH64_FEATURE (MPAMv2), AARCH64_NO_FEATURES},
   {"mtetc",		AARCH64_FEATURE (MTETC), AARCH64_FEATURE (MEMTAG)},
   {"tlbid",		AARCH64_FEATURE (TLBID), AARCH64_NO_FEATURES},
   {NULL,		AARCH64_NO_FEATURES, AARCH64_NO_FEATURES},
diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi
index 0620ad8f4d2..4ac0ae6dae1 100644
--- a/gas/doc/c-aarch64.texi
+++ b/gas/doc/c-aarch64.texi
@@ -268,8 +268,6 @@  automatically cause those extensions to be disabled.
  @tab Enable Armv8.8-A memcpy and memset acceleration instructions.
 @item @code{mops-go} @tab @code{mops}, @code{memtag}
  @tab Enable tag only variants of MOPS instructions.
-@item @code{mpamv2} @tab
- @tab Enable MPAMv2 system registers.
 @item @code{mtetc} @tab @code{memtag}
  @tab Enable Data cache tag block operations.
 @item @code{occmo} @tab
diff --git a/gas/testsuite/gas/aarch64/sysreg/mpamv2-bad.d b/gas/testsuite/gas/aarch64/sysreg/mpamv2-bad.d
index af47db767c9..8490318937b 100644
--- a/gas/testsuite/gas/aarch64/sysreg/mpamv2-bad.d
+++ b/gas/testsuite/gas/aarch64/sysreg/mpamv2-bad.d
@@ -1,3 +1,3 @@ 
-#as: -march=armv9.4-a -menable-sysreg-checking -I$srcdir/$subdir
+#as: -march=armv9.3-a -menable-sysreg-checking -I$srcdir/$subdir
 #source: mpamv2.s
 #error_output: mpamv2-bad.l
diff --git a/gas/testsuite/gas/aarch64/sysreg/mpamv2.d b/gas/testsuite/gas/aarch64/sysreg/mpamv2.d
index 159f6a3ec61..270e3c20848 100644
--- a/gas/testsuite/gas/aarch64/sysreg/mpamv2.d
+++ b/gas/testsuite/gas/aarch64/sysreg/mpamv2.d
@@ -1,4 +1,4 @@ 
-#as: -menable-sysreg-checking -march=armv8-a+mpamv2 -I$srcdir/$subdir
+#as: -menable-sysreg-checking -march=armv9.4-a -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index ea5c507d06e..9851f4ad248 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -284,8 +284,6 @@  enum aarch64_feature_bit {
   AARCH64_FEATURE_POE2,
   /* TEV instructions.  */
   AARCH64_FEATURE_TEV,
-  /* MPAMv2.  */
-  AARCH64_FEATURE_MPAMv2,
   /* MTETC.  */
   AARCH64_FEATURE_MTETC,
   /* TLBI Domains.  */
diff --git a/opcodes/aarch64-sys-regs.def b/opcodes/aarch64-sys-regs.def
index 6f9f2b4c0a8..1fbf56f0926 100644
--- a/opcodes/aarch64-sys-regs.def
+++ b/opcodes/aarch64-sys-regs.def
@@ -922,10 +922,10 @@ 
   SYSREG ("mpambwcap_el2",	CPENC (3,4,10,5,6),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
   SYSREG ("mpambwidr_el1",	CPENC (3,0,10,4,5),	F_REG_READ,	AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
   SYSREG ("mpambwsm_el1",	CPENC (3,0,10,5,7),	0,		AARCH64_FEATURES (2, SME, V9_3A)) /* SME && MPAM_PE_BW_CTRL */
-  SYSREG ("mpamctl_el1",	CPENC (3,0,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
-  SYSREG ("mpamctl_el12",	CPENC (3,5,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
-  SYSREG ("mpamctl_el2",	CPENC (3,4,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
-  SYSREG ("mpamctl_el3",	CPENC (3,6,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
+  SYSREG ("mpamctl_el1",	CPENC (3,0,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
+  SYSREG ("mpamctl_el12",	CPENC (3,5,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
+  SYSREG ("mpamctl_el2",	CPENC (3,4,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
+  SYSREG ("mpamctl_el3",	CPENC (3,6,10,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* MPAMv2 */
   SYSREG ("mpamhcr_el2",	CPENC (3,4,10,4,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
   SYSREG ("mpamidr_el1",	CPENC (3,0,10,4,4),	F_REG_READ,	AARCH64_FEATURE (V8_2A)) /* MPAM */
   SYSREG ("mpamsm_el1",		CPENC (3,0,10,5,3),	0,		AARCH64_FEATURES (2, SME, V8_2A)) /* SME && MPAM */