[v3,6/7] aarch64: Remove +mpamv2 feature option
Checks
Commit Message
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
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
>
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
>>
@@ -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},
@@ -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
@@ -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
@@ -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 .*
@@ -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. */
@@ -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 */