[PATCH] aarch64: Add FEAT_MPAMv2 system registers
Alice Carlotti
alice.carlotti@arm.com
Wed Jan 14 18:10:23 GMT 2026
On Wed, Jan 14, 2026 at 04:47:40PM +0000, Ezra.Sitorus@arm.com wrote:
> From: Ezra Sitorus <ezra.sitorus@arm.com>
>
> ---
> This patch adds the MPAMv2 sysregs.
> Regression tested on aarch64-none-linux-gnu.
>
> Ezra
>
> gas/testsuite/gas/aarch64/sysreg/mpamv2.d | 14 ++++++++++++++
> gas/testsuite/gas/aarch64/sysreg/mpamv2.s | 5 +++++
> opcodes/aarch64-sys-regs.def | 3 +++
> 3 files changed, 22 insertions(+)
> create mode 100644 gas/testsuite/gas/aarch64/sysreg/mpamv2.d
> create mode 100644 gas/testsuite/gas/aarch64/sysreg/mpamv2.s
>
> diff --git a/gas/testsuite/gas/aarch64/sysreg/mpamv2.d b/gas/testsuite/gas/aarch64/sysreg/mpamv2.d
> new file mode 100644
> index 00000000000..fee7d2b9f0e
> --- /dev/null
> +++ b/gas/testsuite/gas/aarch64/sysreg/mpamv2.d
> @@ -0,0 +1,14 @@
> +#as: -march=armv9.4-a -I$srcdir/$subdir
> +#objdump: -dr
> +
> +.*: file format .*
> +
> +Disassembly of section \.text:
> +
> +0+ <.*>:
> +.*: d51da540 msr mpamctl_el1, x0
> +.*: d53da540 mrs x0, mpamctl_el1
> +.*: d518a540 msr mpamctl_el2, x0
> +.*: d538a540 mrs x0, mpamctl_el2
> +.*: d51ea540 msr mpamctl_el3, x0
> +.*: d53ea540 mrs x0, mpamctl_el3
> diff --git a/gas/testsuite/gas/aarch64/sysreg/mpamv2.s b/gas/testsuite/gas/aarch64/sysreg/mpamv2.s
> new file mode 100644
> index 00000000000..882ec40c5c5
> --- /dev/null
> +++ b/gas/testsuite/gas/aarch64/sysreg/mpamv2.s
> @@ -0,0 +1,5 @@
> +.include "sysreg-test-utils.inc"
> +
> + rw_sys_reg mpamctl_el1
> + rw_sys_reg mpamctl_el2
> + rw_sys_reg mpamctl_el3
> diff --git a/opcodes/aarch64-sys-regs.def b/opcodes/aarch64-sys-regs.def
> index 818c2adbec7..f57e02cecdf 100644
> --- a/opcodes/aarch64-sys-regs.def
> +++ b/opcodes/aarch64-sys-regs.def
> @@ -922,6 +922,9 @@
> 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,5,10,5,2), 0, AARCH64_FEATURE (V9_4A)) /* MPAMV2 */
> + SYSREG ("mpamctl_el2", CPENC (3,0,10,5,2), 0, AARCH64_FEATURE (V9_4A)) /* MPAMV2 */
> + SYSREG ("mpamctl_el3", CPENC (3,6,10,5,2), 0, AARCH64_FEATURE (V9_4A)) /* MPAMV2 */
This is missing mpamctl_el12.
Also, we've agreed (with LLVM developers) to add a +mpamv2 flag to gate the
system instructions, so that should also be used as the feature constraint here
(and for the FEAT_MPAMv2_VID system instructions and sysregs as well).
Thanks,
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
>
More information about the Binutils
mailing list