[PATCH v2 3/3] aarch64: deprecate mpamv2_vid sysregs

Alice Carlotti alice.carlotti@arm.com
Fri Jun 26 15:45:54 GMT 2026


On Fri, Jun 26, 2026 at 02:35:16PM +0100, Richard Earnshaw wrote:
> These registers were never implemented in any products and have been
> withdrawn from the architecture.  Mark the registers as deprecated
> and update the testsuite accordingly.

This was only added in the previous Binutils release, so I think we can avoid
marking stuff as deprecated and just delete it.  I also discussed with the LLVM
team that we wouldn't have created the +mpamv2 flag without the presence of the
corresponding system instructions (which this patch doesn't address at all),
and we agreed that we should remove that flag as well.

Alice

> ---
>  gas/NEWS                                          |  7 ++++---
>  gas/testsuite/gas/aarch64/sysreg/mpamv2_vid-bad.l | 12 ++++++++++++
>  .../gas/aarch64/sysreg/mpamv2_vid-depr.l          |  7 +++++++
>  gas/testsuite/gas/aarch64/sysreg/mpamv2_vid.d     | 15 ++++++++-------
>  opcodes/aarch64-sys-regs.def                      |  6 +++---
>  5 files changed, 34 insertions(+), 13 deletions(-)
>  create mode 100644 gas/testsuite/gas/aarch64/sysreg/mpamv2_vid-depr.l
> 
> diff --git a/gas/NEWS b/gas/NEWS
> index 116d5e62be6..62c28932189 100644
> --- a/gas/NEWS
> +++ b/gas/NEWS
> @@ -1,8 +1,9 @@
>  -*- text -*-
>  
> -* The aarch64 TME extension has never been implemented in any products.  Arm
> -  has withdrawn it from the architecture.  The assembler will now warn if
> -  instructions from the extension are detected during assembly.
> +* The aarch64 extensions TME and MPAMv2_VID have never been implemented in any
> +  products.  Arm has withdrawn them from the architecture.  The assembler will
> +  now warn if instructions or system registers from either extension are
> +  detected during assembly.
>  
>  * The legacy .vtable_entry and .vtable_inherit directives that were
>    needed for versions of GCC prior to gcc-3.0 (when the generic C++
> diff --git a/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid-bad.l b/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid-bad.l
> index 6ab3d16fba0..a61ec858e73 100644
> --- a/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid-bad.l
> +++ b/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid-bad.l
> @@ -1,13 +1,25 @@
>  .*: Assembler messages:
>  .*: Error: selected processor does not support system register name 'mpamvidcr_el2'
>  .*:  Info: macro invoked from here
> +.*: Warning: system register name 'mpamvidcr_el2' is deprecated and may be removed in a future release
> +.*:  Info: macro invoked from here
>  .*: Error: selected processor does not support system register name 'mpamvidcr_el2'
>  .*:  Info: macro invoked from here
> +.*: Warning: system register name 'mpamvidcr_el2' is deprecated and may be removed in a future release
> +.*:  Info: macro invoked from here
>  .*: Error: selected processor does not support system register name 'mpamvidsr_el2'
>  .*:  Info: macro invoked from here
> +.*: Warning: system register name 'mpamvidsr_el2' is deprecated and may be removed in a future release
> +.*:  Info: macro invoked from here
>  .*: Error: selected processor does not support system register name 'mpamvidsr_el2'
>  .*:  Info: macro invoked from here
> +.*: Warning: system register name 'mpamvidsr_el2' is deprecated and may be removed in a future release
> +.*:  Info: macro invoked from here
>  .*: Error: selected processor does not support system register name 'mpamvidsr_el3'
>  .*:  Info: macro invoked from here
> +.*: Warning: system register name 'mpamvidsr_el3' is deprecated and may be removed in a future release
> +.*:  Info: macro invoked from here
>  .*: Error: selected processor does not support system register name 'mpamvidsr_el3'
>  .*:  Info: macro invoked from here
> +.*: Warning: system register name 'mpamvidsr_el3' is deprecated and may be removed in a future release
> +.*:  Info: macro invoked from here
> diff --git a/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid-depr.l b/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid-depr.l
> new file mode 100644
> index 00000000000..6fc9b23b70b
> --- /dev/null
> +++ b/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid-depr.l
> @@ -0,0 +1,7 @@
> +.*: Assembler messages:
> +.*: Warning: system register name 'mpamvidcr_el2' is deprecated and may be removed in a future release
> +.*: Warning: system register name 'mpamvidcr_el2' is deprecated and may be removed in a future release
> +.*: Warning: system register name 'mpamvidsr_el2' is deprecated and may be removed in a future release
> +.*: Warning: system register name 'mpamvidsr_el2' is deprecated and may be removed in a future release
> +.*: Warning: system register name 'mpamvidsr_el3' is deprecated and may be removed in a future release
> +.*: Warning: system register name 'mpamvidsr_el3' is deprecated and may be removed in a future release
> diff --git a/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid.d b/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid.d
> index 88c0c1883d8..1399d095d54 100644
> --- a/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid.d
> +++ b/gas/testsuite/gas/aarch64/sysreg/mpamv2_vid.d
> @@ -1,4 +1,5 @@
> -#as: -menable-sysreg-checking -march=armv8-a+mpamv2 -I$srcdir/$subdir
> +#as: -menable-sysreg-checking -march=armv8-a+mpamv2 -I$srcdir/$subdir --no-info
> +#warning_output: mpamv2_vid-depr.l
>  #objdump: -dr
>  
>  .*:     file format .*
> @@ -6,9 +7,9 @@
>  Disassembly of section \.text:
>  
>  0+ <.*>:
> -.*:	d51ca700 	msr	mpamvidcr_el2, x0
> -.*:	d53ca700 	mrs	x0, mpamvidcr_el2
> -.*:	d51ca720 	msr	mpamvidsr_el2, x0
> -.*:	d53ca720 	mrs	x0, mpamvidsr_el2
> -.*:	d51ea720 	msr	mpamvidsr_el3, x0
> -.*:	d53ea720 	mrs	x0, mpamvidsr_el3
> +.*:	d51ca700 	msr	s3_4_c10_c7_0, x0
> +.*:	d53ca700 	mrs	x0, s3_4_c10_c7_0
> +.*:	d51ca720 	msr	s3_4_c10_c7_1, x0
> +.*:	d53ca720 	mrs	x0, s3_4_c10_c7_1
> +.*:	d51ea720 	msr	s3_6_c10_c7_1, x0
> +.*:	d53ea720 	mrs	x0, s3_6_c10_c7_1
> diff --git a/opcodes/aarch64-sys-regs.def b/opcodes/aarch64-sys-regs.def
> index 9daa178ed7b..e8eee8a7c66 100644
> --- a/opcodes/aarch64-sys-regs.def
> +++ b/opcodes/aarch64-sys-regs.def
> @@ -929,9 +929,9 @@
>    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 */
> -  SYSREG ("mpamvidcr_el2",	CPENC (3,4,10,7,0),	0,		AARCH64_FEATURE (MPAMv2))
> -  SYSREG ("mpamvidsr_el2",	CPENC (3,4,10,7,1),	0,		AARCH64_FEATURE (MPAMv2))
> -  SYSREG ("mpamvidsr_el3",	CPENC (3,6,10,7,1),	0,		AARCH64_FEATURE (MPAMv2))
> +  SYSREG ("mpamvidcr_el2",	CPENC (3,4,10,7,0),	F_DEPRECATED,	AARCH64_FEATURE (MPAMv2))
> +  SYSREG ("mpamvidsr_el2",	CPENC (3,4,10,7,1),	F_DEPRECATED,	AARCH64_FEATURE (MPAMv2))
> +  SYSREG ("mpamvidsr_el3",	CPENC (3,6,10,7,1),	F_DEPRECATED,	AARCH64_FEATURE (MPAMv2))
>    SYSREG ("mpamvpm0_el2",	CPENC (3,4,10,6,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
>    SYSREG ("mpamvpm1_el2",	CPENC (3,4,10,6,1),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
>    SYSREG ("mpamvpm2_el2",	CPENC (3,4,10,6,2),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
> -- 
> 2.43.0
> 


More information about the Binutils mailing list