[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