For additional information, see the CoreSight Architecture Specification.
For a System PMU that has affinity with a single PE or a group of PEs, SPMDEVAFF_EL1 is a copy of MPIDR_EL1 or part of MPIDR_EL1:
For example, if the group of PEs is a subset of the PEs at affinity level 1 then all of the following are true:
Depending on the IMPLEMENTATION DEFINED nature of the system, it might be possible that SPMDEVAFF_EL1 is read before system firmware has configured the System PMU and/or the PE or group of PEs that the System PMU has affinity with. When this is the case, SPMDEVAFF_EL1 reads-as-zero.
This register is present only when FEAT_SPMU is implemented. Otherwise, direct accesses to SPMDEVAFF_EL1 are UNDEFINED.
SPMDEVAFF_EL1 is a 64-bit register.
63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RES0 | Aff3 | ||||||||||||||||||||||||||||||
F0V | U | RES0 | MT | Aff2 | Aff1 | Aff0 |
Reserved, RES0.
PE affinity level 3. The MPIDR_EL1.Aff3 field, viewed from the highest Exception level of the associated PE or PEs.
This field has an IMPLEMENTATION DEFINED value.
Access to this field is RO.
Indicates that the SPMDEVAFF_EL1.Aff0 field is valid.
The value of this field is an IMPLEMENTATION DEFINED choice of:
F0V | Meaning |
---|---|
0b0 |
SPMDEVAFF_EL1.Aff0 is not valid, and the PE affinity is above level 0 or a subset of level 0. |
0b1 |
SPMDEVAFF_EL1.Aff0 is valid, and the PE affinity is at level 0. |
Access to this field is RO.
Uniprocessor. The MPIDR_EL1.U field, viewed from the highest Exception level of the associated PE.
This field has an IMPLEMENTATION DEFINED value.
Access to this field is RO.
Reserved, UNKNOWN.
Reserved, RES0.
Multithreaded. The MPIDR_EL1.MT field, viewed from the highest Exception level of the associated PE.
This field has an IMPLEMENTATION DEFINED value.
Access to this field is RO.
Reserved, UNKNOWN.
PE affinity level 2. The MPIDR_EL1.Aff2 field, viewed from the highest Exception level of the associated PE or PEs.
This field has an IMPLEMENTATION DEFINED value.
Access to this field is RO.
PE affinity level 2. Defines part of the MPIDR_EL1.Aff2 field, viewed from the highest Exception level of the associated PEs.
The value of this field is an IMPLEMENTATION DEFINED choice of:
Aff2 | Meaning |
---|---|
0bxxxxxxx1 |
SPMDEVAFF_EL1.Aff2[7:1] is the value of MPIDR_EL1.Aff2[7:1], viewed from the highest Exception level of the associated PEs. |
0bxxxxxx10 |
SPMDEVAFF_EL1.Aff2[7:2] is the value of MPIDR_EL1.Aff2[7:2], viewed from the highest Exception level of the associated PEs. |
0bxxxxx100 |
SPMDEVAFF_EL1.Aff2[7:3] is the value of MPIDR_EL1.Aff2[7:3], viewed from the highest Exception level of the associated PEs. |
0bxxxx1000 |
SPMDEVAFF_EL1.Aff2[7:4] is the value of MPIDR_EL1.Aff2[7:4], viewed from the highest Exception level of the associated PEs. |
0bxxx10000 |
SPMDEVAFF_EL1.Aff2[7:5] is the value of MPIDR_EL1.Aff2[7:5], viewed from the highest Exception level of the associated PEs. |
0bxx100000 |
SPMDEVAFF_EL1.Aff2[7:6] is the value of MPIDR_EL1.Aff2[7:6], viewed from the highest Exception level of the associated PEs. |
0bx1000000 |
SPMDEVAFF_EL1.Aff2[7] is the value of MPIDR_EL1.Aff2[7], viewed from the highest Exception level of the associated PEs. |
Access to this field is RO.
PE affinity level NOT DEFINED. Indicates whether the PE affinity is at level 3.
Aff2 | Meaning |
---|---|
0x80 |
PE affinity is at level 3. |
All other values are reserved.
Access to this field is RO.
PE affinity level 1. The MPIDR_EL1.Aff1 field, viewed from the highest Exception level of the associated PE or PEs.
This field has an IMPLEMENTATION DEFINED value.
Access to this field is RO.
PE affinity level 1. Defines part of the MPIDR_EL1.Aff1 field, viewed from the highest Exception level of the associated PEs.
The value of this field is an IMPLEMENTATION DEFINED choice of:
Aff1 | Meaning |
---|---|
0bxxxxxxx1 |
SPMDEVAFF_EL1.Aff1[7:1] is the value of MPIDR_EL1.Aff1[7:1], viewed from the highest Exception level of the associated PEs. |
0bxxxxxx10 |
SPMDEVAFF_EL1.Aff1[7:2] is the value of MPIDR_EL1.Aff1[7:2], viewed from the highest Exception level of the associated PEs. |
0bxxxxx100 |
SPMDEVAFF_EL1.Aff1[7:3] is the value of MPIDR_EL1.Aff1[7:3], viewed from the highest Exception level of the associated PEs. |
0bxxxx1000 |
SPMDEVAFF_EL1.Aff1[7:4] is the value of MPIDR_EL1.Aff1[7:4], viewed from the highest Exception level of the associated PEs. |
0bxxx10000 |
SPMDEVAFF_EL1.Aff1[7:5] is the value of MPIDR_EL1.Aff1[7:5], viewed from the highest Exception level of the associated PEs. |
0bxx100000 |
SPMDEVAFF_EL1.Aff1[7:6] is the value of MPIDR_EL1.Aff1[7:6], viewed from the highest Exception level of the associated PEs. |
0bx1000000 |
SPMDEVAFF_EL1.Aff1[7] is the value of MPIDR_EL1.Aff1[7], viewed from the highest Exception level of the associated PEs. |
Access to this field is RO.
PE affinity level 1. Indicates whether the PE affinity is at level 2.
The value of this field is an IMPLEMENTATION DEFINED choice of:
Aff1 | Meaning |
---|---|
0x00 |
PE affinity is above level 2 or a subset of level 2. |
0x80 |
PE affinity is at level 2. |
Access to this field is RO.
PE affinity level 0. The MPIDR_EL1.Aff0 field, viewed from the highest Exception level of the associated PE.
This field has an IMPLEMENTATION DEFINED value.
Access to this field is RO.
PE affinity level 0. Defines part of the MPIDR_EL1.Aff0 field, viewed from the highest Exception level of the associated PEs.
The value of this field is an IMPLEMENTATION DEFINED choice of:
Aff0 | Meaning |
---|---|
0bxxxxxxx1 |
SPMDEVAFF_EL1.Aff0[7:1] is the value of MPIDR_EL1.Aff0[7:1], viewed from the highest Exception level of the associated PEs. |
0bxxxxxx10 |
SPMDEVAFF_EL1.Aff0[7:2] is the value of MPIDR_EL1.Aff0[7:2], viewed from the highest Exception level of the associated PEs. |
0bxxxxx100 |
SPMDEVAFF_EL1.Aff0[7:3] is the value of MPIDR_EL1.Aff0[7:3], viewed from the highest Exception level of the associated PEs. |
0bxxxx1000 |
SPMDEVAFF_EL1.Aff0[7:4] is the value of MPIDR_EL1.Aff0[7:4], viewed from the highest Exception level of the associated PEs. |
0bxxx10000 |
SPMDEVAFF_EL1.Aff0[7:5] is the value of MPIDR_EL1.Aff0[7:5], viewed from the highest Exception level of the associated PEs. |
0bxx100000 |
SPMDEVAFF_EL1.Aff0[7:6] is the value of MPIDR_EL1.Aff0[7:6], viewed from the highest Exception level of the associated PEs. |
0bx1000000 |
SPMDEVAFF_EL1.Aff0[7] is the value of MPIDR_EL1.Aff0[7], viewed from the highest Exception level of the associated PEs. |
Access to this field is RO.
PE affinity level 0. Indicates whether the PE affinity is at level 1.
The value of this field is an IMPLEMENTATION DEFINED choice of:
Aff0 | Meaning |
---|---|
0x00 |
PE affinity is above level 1 or a subset of level 1. |
0x80 |
PE affinity is at level 1. |
Access to this field is RO.
Reads of SPMDEVAFF_EL1 are not affected by the value of VMPIDR_EL2 at any Exception level.
If System PMU <s> has affinity only with this PE, then it is IMPLEMENTATION DEFINED whether SPMDEVAFF_EL1 reads-as-zero or reads the same value as MPIDR_EL1.
To access SPMDEVAFF_EL1 for System PMU <s>, set SPMSELR_EL0.SYSPMUSEL to s.
SPMDEVAFF_EL1 reads-as-zero if any of the following are true:
Accesses to this register use the following encodings in the System register encoding space:
MRS <Xt>, SPMDEVAFF_EL1
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b10 | 0b000 | 0b1001 | 0b1101 | 0b110 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if HaveEL(EL3) && EL3SDDUndefPriority() && MDCR_EL3.EnPM2 == '0' then UNDEFINED; elsif HaveEL(EL3) && EL3SDDUndefPriority() && SPMACCESSR_EL3<(UInt(SPMSELR_EL0.SYSPMUSEL) * 2) + 1:UInt(SPMSELR_EL0.SYSPMUSEL) * 2> == '00' then UNDEFINED; elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT2) && ((HaveEL(EL3) && SCR_EL3.FGTEn2 == '0') || HDFGRTR2_EL2.nSPMDEVAFF_EL1 == '0') then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && MDCR_EL2.EnSPM == '0' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && SPMACCESSR_EL2<(UInt(SPMSELR_EL0.SYSPMUSEL) * 2) + 1:UInt(SPMSELR_EL0.SYSPMUSEL) * 2> == '00' then AArch64.SystemAccessTrap(EL2, 0x18); elsif HaveEL(EL3) && MDCR_EL3.EnPM2 == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); elsif HaveEL(EL3) && SPMACCESSR_EL3<(UInt(SPMSELR_EL0.SYSPMUSEL) * 2) + 1:UInt(SPMSELR_EL0.SYSPMUSEL) * 2> == '00' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); else X[t, 64] = SPMDEVAFF_EL1[UInt(SPMSELR_EL0.SYSPMUSEL)]; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && MDCR_EL3.EnPM2 == '0' then UNDEFINED; elsif HaveEL(EL3) && EL3SDDUndefPriority() && SPMACCESSR_EL3<(UInt(SPMSELR_EL0.SYSPMUSEL) * 2) + 1:UInt(SPMSELR_EL0.SYSPMUSEL) * 2> == '00' then UNDEFINED; elsif HaveEL(EL3) && MDCR_EL3.EnPM2 == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); elsif HaveEL(EL3) && SPMACCESSR_EL3<(UInt(SPMSELR_EL0.SYSPMUSEL) * 2) + 1:UInt(SPMSELR_EL0.SYSPMUSEL) * 2> == '00' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); else X[t, 64] = SPMDEVAFF_EL1[UInt(SPMSELR_EL0.SYSPMUSEL)]; elsif PSTATE.EL == EL3 then X[t, 64] = SPMDEVAFF_EL1[UInt(SPMSELR_EL0.SYSPMUSEL)];