aarch64: Support 2024 Debug Architecture system registers.

This patch adds support for following system registers and the spec
can be found here[1].
1. PMBSR_EL12, PMBSR_EL2, PMBSR_EL3, PMBMAR_EL1 depends on FEAT_SPE
   and Armv9.5-A architecture and these are enabled by passing
   -march=armv9.5-a+profile.
2. TRBSR_EL12, TRBSR_EL2, and TRBSR_EL3 depends Armv9.5-A architecture
   and these are enabled by passing -march=armv9.5-a.
3. HFGITR2_EL2 depends on Armv8.8-A architecture and enabled by passing
   -march=armv8.8-a.

[1]: https://developer.arm.com/documentation/ddi0601/2025-03/AArch64-Registers?lang=en
This commit is contained in:
Srinath Parvathaneni
2025-06-20 17:21:14 +01:00
parent ba4bedeafa
commit ed62a5351c
10 changed files with 157 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
#source: sysreg-10.s
#as: -march=armv8.7-a -I$srcdir/$subdir
#error_output: sysreg-10-bad.l

View File

@@ -0,0 +1,3 @@
.*: Assembler messages:
.*: Error: selected processor does not support system register name 'hfgitr2_el2'
.*: Error: selected processor does not support system register name 'hfgitr2_el2'

View File

@@ -0,0 +1,12 @@
#source: sysreg-10.s
#as: -march=armv8.8-a -I$srcdir/$subdir
#objdump: -dr
[^:]+: file format .*
[^:]+:
[^:]+:
.*: d53c31e0 mrs x0, hfgitr2_el2
.*: d51c31e0 msr hfgitr2_el2, x0

View File

@@ -0,0 +1,2 @@
mrs x0, hfgitr2_el2
msr hfgitr2_el2, x0

View File

@@ -0,0 +1,3 @@
#source: sysreg-9-bad.s
#as: -I$srcdir/$subdir
#error_output: sysreg-9-bad.l

View File

@@ -0,0 +1,61 @@
.*: Assembler messages:
.*: Error: selected processor does not support system register name 'pmbmar_el1'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbmar_el1'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el2'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el2'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el3'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el3'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbmar_el1'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbmar_el1'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el2'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el2'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el3'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el3'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbmar_el1'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbmar_el1'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el2'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el2'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el3'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'pmbsr_el3'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'trbsr_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'trbsr_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'trbsr_el2'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'trbsr_el2'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'trbsr_el3'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'trbsr_el3'
.*: Info: macro invoked from here

View File

@@ -0,0 +1,26 @@
.include "sysreg-test-utils.inc"
.text
.arch armv9.4-a+profile
rw_sys_reg pmbmar_el1
rw_sys_reg pmbsr_el12
rw_sys_reg pmbsr_el2
rw_sys_reg pmbsr_el3
.arch armv9.5-a
rw_sys_reg pmbmar_el1
rw_sys_reg pmbsr_el12
rw_sys_reg pmbsr_el2
rw_sys_reg pmbsr_el3
.arch armv9.4-a
rw_sys_reg pmbmar_el1
rw_sys_reg pmbsr_el12
rw_sys_reg pmbsr_el2
rw_sys_reg pmbsr_el3
.arch armv9.4-a
rw_sys_reg trbsr_el12
rw_sys_reg trbsr_el2
rw_sys_reg trbsr_el3

View File

@@ -0,0 +1,25 @@
#source: sysreg-9.s
#as: -I$srcdir/$subdir
#objdump: -dr
[^:]+: file format .*
[^:]+:
[^:]+:
.*: d5189aa0 msr pmbmar_el1, x0
.*: d5389aa0 mrs x0, pmbmar_el1
.*: d51d9a60 msr pmbsr_el12, x0
.*: d53d9a60 mrs x0, pmbsr_el12
.*: d51c9a60 msr pmbsr_el2, x0
.*: d53c9a60 mrs x0, pmbsr_el2
.*: d51e9a60 msr pmbsr_el3, x0
.*: d53e9a60 mrs x0, pmbsr_el3
.*: d51d9b60 msr trbsr_el12, x0
.*: d53d9b60 mrs x0, trbsr_el12
.*: d51c9b60 msr trbsr_el2, x0
.*: d53c9b60 mrs x0, trbsr_el2
.*: d51e9b60 msr trbsr_el3, x0
.*: d53e9b60 mrs x0, trbsr_el3

View File

@@ -0,0 +1,14 @@
.include "sysreg-test-utils.inc"
.text
.arch armv9.5-a+profile
rw_sys_reg pmbmar_el1
rw_sys_reg pmbsr_el12
rw_sys_reg pmbsr_el2
rw_sys_reg pmbsr_el3
.arch armv9.5-a
rw_sys_reg trbsr_el12
rw_sys_reg trbsr_el2
rw_sys_reg trbsr_el3

View File

@@ -449,6 +449,7 @@
SYSREG ("hdfgwtr_el2", CPENC (3,4,3,1,5), F_ARCHEXT, AARCH64_FEATURE (V8_6A))
SYSREG ("hdfgwtr2_el2", CPENC (3,4,3,1,1), F_ARCHEXT, AARCH64_FEATURE (FGT2))
SYSREG ("hfgitr_el2", CPENC (3,4,1,1,6), F_ARCHEXT, AARCH64_FEATURE (V8_6A))
SYSREG ("hfgitr2_el2", CPENC (3,4,3,1,7), F_ARCHEXT, AARCH64_FEATURE (V8_8A))
SYSREG ("hfgrtr_el2", CPENC (3,4,1,1,4), F_ARCHEXT, AARCH64_FEATURE (V8_6A))
SYSREG ("hfgrtr2_el2", CPENC (3,4,3,1,2), F_ARCHEXT, AARCH64_FEATURE (FGT2))
SYSREG ("hfgwtr_el2", CPENC (3,4,1,1,5), F_ARCHEXT, AARCH64_FEATURE (V8_6A))
@@ -638,8 +639,12 @@
SYSREG ("pfar_el2", CPENC (3,4,6,0,5), F_ARCHEXT, AARCH64_FEATURE (PFAR))
SYSREG ("pmbidr_el1", CPENC (3,0,9,10,7), F_REG_READ|F_ARCHEXT, AARCH64_FEATURE (PROFILE))
SYSREG ("pmblimitr_el1", CPENC (3,0,9,10,0), F_ARCHEXT, AARCH64_FEATURE (PROFILE))
SYSREG ("pmbmar_el1", CPENC (3,0,9,10,5), F_ARCHEXT, AARCH64_FEATURES (2, PROFILE, V9_5A))
SYSREG ("pmbptr_el1", CPENC (3,0,9,10,1), F_ARCHEXT, AARCH64_FEATURE (PROFILE))
SYSREG ("pmbsr_el1", CPENC (3,0,9,10,3), F_ARCHEXT, AARCH64_FEATURE (PROFILE))
SYSREG ("pmbsr_el12", CPENC (3,5,9,10,3), F_ARCHEXT, AARCH64_FEATURES (2, V9_5A, PROFILE))
SYSREG ("pmbsr_el2", CPENC (3,4,9,10,3), F_ARCHEXT, AARCH64_FEATURES (2, V9_5A, PROFILE))
SYSREG ("pmbsr_el3", CPENC (3,6,9,10,3), F_ARCHEXT, AARCH64_FEATURES (2, V9_5A, PROFILE))
SYSREG ("pmccfiltr_el0", CPENC (3,3,14,15,7), 0, AARCH64_NO_FEATURES)
SYSREG ("pmccntr_el0", CPENC (3,3,9,13,0), 0, AARCH64_NO_FEATURES)
SYSREG ("pmccntsvr_el1", CPENC (2,0,14,11,7), F_REG_READ|F_ARCHEXT, AARCH64_FEATURE (PMUv3_SS))
@@ -1007,6 +1012,9 @@
SYSREG ("trbmar_el1", CPENC (3,0,9,11,4), 0, AARCH64_NO_FEATURES)
SYSREG ("trbptr_el1", CPENC (3,0,9,11,1), 0, AARCH64_NO_FEATURES)
SYSREG ("trbsr_el1", CPENC (3,0,9,11,3), 0, AARCH64_NO_FEATURES)
SYSREG ("trbsr_el12", CPENC (3,5,9,11,3), F_ARCHEXT, AARCH64_FEATURE (V9_5A))
SYSREG ("trbsr_el2", CPENC (3,4,9,11,3), F_ARCHEXT, AARCH64_FEATURE (V9_5A))
SYSREG ("trbsr_el3", CPENC (3,6,9,11,3), F_ARCHEXT, AARCH64_FEATURE (V9_5A))
SYSREG ("trbtrg_el1", CPENC (3,0,9,11,6), 0, AARCH64_NO_FEATURES)
SYSREG ("trcacatr0", CPENC (2,1,2,0,2), 0, AARCH64_NO_FEATURES)
SYSREG ("trcacatr1", CPENC (2,1,2,2,2), 0, AARCH64_NO_FEATURES)