PAR_EL1, Physical Address Register
The PAR_EL1 characteristics are:
Purpose
Returns the output address (OA) from an Address translation instruction that executed successfully, or fault information if the instruction did not execute successfully.
Configuration
AArch64 System register PAR_EL1 bits [63:0] are architecturally mapped to AArch32 System register PAR[63:0] .
RW fields in this register reset to architecturally UNKNOWN values.
Attributes
PAR_EL1 is a 64-bit register.
Field descriptions
The PAR_EL1 bit assignments are:
When PAR_EL1.F == 0b0:
This section describes the register value returned by the successful execution of an Address translation instruction. Software might subsequently write a different value to the register, and that write does not affect the operation of the PE.
On a successful conversion, the PAR_EL1 can return a value that indicates the resulting attributes, rather than the values that appear in the translation table descriptors. More precisely:
- The PAR_EL1.{ATTR, SH} fields are permitted to report the resulting attributes, as determined by any permitted implementation choices and any applicable configuration bits, instead of reporting the values that appear in the translation table descriptors.
- See the PAR_EL1.NS bit description for constraints on the value it returns.
ATTR, bits [63:56]
Memory attributes for the returned output address. This field uses the same encoding as the Attr<n> fields in MAIR_EL1, MAIR_EL2, and MAIR_EL3.
The value returned in this field can be the resulting attribute, as determined by any permitted implementation choices and any applicable configuration bits, instead of the value that appears in the translation table descriptor.
This field resets to an architecturally UNKNOWN value.
Bits [55:52]
Reserved, RES0.
PA[51:48], bits [51:48]
When ARMv8.2-LPA is implemented:
When ARMv8.2-LPA is implemented:
Extension to PA[47:12]. See PA[47:12] for more details.
This field resets to an architecturally UNKNOWN value.
Otherwise:
Otherwise:
Reserved, RES0.
PA[47:12], bits [47:12]
Output address. The output address (OA) corresponding to the supplied input address. This field returns address bits[47:12].
When ARMv8.2-LPA is implemented, and 52-bit addresses and a 64KB translation granule are in use, the PA[51:48] bits form the upper part of the address value. Otherwise the PA[51:48] bits are RES0.
For implementations with fewer than 48 physical address bits, the corresponding upper bits in this field are RES0.
This field resets to an architecturally UNKNOWN value.
Bit [11]
Reserved, RES1.
IMPLEMENTATION DEFINED, bit [10]
IMPLEMENTATION DEFINED.
This field resets to an architecturally UNKNOWN value.
NS, bit [9]
Non-secure. The NS attribute for a translation table entry from a Secure translation regime.
For a result from a Secure translation regime, when SCR_EL3.EEL2 is 1, this bit reflects the Security state of the intermediate physical address space of the translation for the instructions:
- In AArch64 state: AT S1E1R, AT S1E1W, AT S1E1RP, AT S1E1WP, AT S1E0R, and AT S1E0W.
- In AArch32 state: ATS1CPR, ATS1CPW, ATS1CPRP, ATS1CPWP, ATS1CUR, and ATS1CUW.
Otherwise, this bit reflects the Security state of the physical address space of the translation. This means it reflects the effect of the NSTable bits of earlier levels of the translation table walk if those NSTable bits have an effect on the translation.
For a result from a Non-secure translation regime, this bit is UNKNOWN.
This field resets to an architecturally UNKNOWN value.
SH, bits [8:7]
Shareability attribute, for the returned output address. Permitted values are:
SH | Meaning |
---|---|
0b00 |
Non-shareable. |
0b10 |
Outer Shareable. |
0b11 |
Inner Shareable. |
The value 0b01 is reserved.
This field returns the value 0b10 for:
- Any type of Device memory.
- Normal memory with both Inner Non-cacheable and Outer Non-cacheable attributes.
The value returned in this field can be the resulting attribute, as determined by any permitted implementation choices and any applicable configuration bits, instead of the value that appears in the translation table descriptor.
This field resets to an architecturally UNKNOWN value.
Bits [6:1]
Reserved, RES0.
F, bit [0]
Indicates whether the instruction performed a successful address translation.
F | Meaning |
---|---|
0b0 |
Address translation completed successfully. |
This field resets to an architecturally UNKNOWN value.
When PAR_EL1.F == 0b1: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 IMPLEMENTATION DEFINED IMPLEMENTATION DEFINED IMPLEMENTATION DEFINED RES0 RES0 RES1 RES0 S PTW RES0 FST F 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 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
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 |
IMPLEMENTATION DEFINED | IMPLEMENTATION DEFINED | IMPLEMENTATION DEFINED | RES0 | ||||||||||||||||||||||||||||
RES0 | RES1 | RES0 | S | PTW | RES0 | FST | F | ||||||||||||||||||||||||
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 |
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 |
This section describes the register value returned by a fault on the execution of an Address translation instruction. Software might subsequently write a different value to the register, and that write does not affect the operation of the PE.
IMPLEMENTATION DEFINED, bits [63:56]
IMPLEMENTATION DEFINED.
This field resets to an architecturally UNKNOWN value.
IMPLEMENTATION DEFINED, bits [55:52]
IMPLEMENTATION DEFINED.
This field resets to an architecturally UNKNOWN value.
IMPLEMENTATION DEFINED, bits [51:48]
IMPLEMENTATION DEFINED.
This field resets to an architecturally UNKNOWN value.
Bits [47:12]
Reserved, RES0.
Bit [11]
Reserved, RES1.
Bit [10]
Reserved, RES0.
S, bit [9]
Indicates the translation stage at which the translation aborted:
S | Meaning |
---|---|
0b0 |
Translation aborted because of a fault in the stage 1 translation. |
0b1 |
Translation aborted because of a fault in the stage 2 translation. |
This field resets to an architecturally UNKNOWN value.
PTW, bit [8]
If this bit is set to 1, it indicates the translation aborted because of a stage 2 fault during a stage 1 translation table walk.
This field resets to an architecturally UNKNOWN value.
Bit [7]
Reserved, RES0.
FST, bits [6:1]
Fault status code, as shown in the Data Abort ESR encoding.
This field resets to an architecturally UNKNOWN value.
F, bit [0]
Indicates whether the instruction performed a successful address translation.
F | Meaning |
---|---|
0b1 |
Address translation aborted. |
This field resets to an architecturally UNKNOWN value.
Accessing the PAR_EL1
Accesses to this register use the following encodings:
MRS <Xt>, PAR_EL1
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b0111 | 0b0100 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then return PAR_EL1; elsif PSTATE.EL == EL2 then return PAR_EL1; elsif PSTATE.EL == EL3 then return PAR_EL1;
MSR PAR_EL1, <Xt>
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b0111 | 0b0100 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then PAR_EL1 = X[t]; elsif PSTATE.EL == EL2 then PAR_EL1 = X[t]; elsif PSTATE.EL == EL3 then PAR_EL1 = X[t];