The ESR_EL2 characteristics are:
Holds syndrome information for an exception taken to EL2.
AArch64 System register ESR_EL2 bits [31:0] are architecturally mapped to AArch32 System register HSR[31:0].
If EL2 is not implemented, this register is RES0 from EL3.
This register has no effect if EL2 is not enabled in the current Security state.
ESR_EL2 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 | ISS2 | ||||||||||||||||||||||||||||||
EC | IL | ISS |
ESR_EL2 is made UNKNOWN as a result of an exception return from EL2.
When an UNPREDICTABLE instruction is treated as UNDEFINED, and the exception is taken to EL2, the value of ESR_EL2 is UNKNOWN. The value written to ESR_EL2 must be consistent with a value that could be created as a result of an exception from the same Exception level that generated the exception as a result of a situation that is not UNPREDICTABLE at that Exception level, in order to avoid the possibility of a privilege violation.
Reserved, RES0.
ISS2 encoding for an exception, the bit assignments are:
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 | HDBSSF | TnD | TagAccess | GCS | AssuredOnly | Overlay | DirtyBit | Xs |
Reserved, RES0.
Indicates that the fault was caused by the HDBSS.
When DFSC indicates a Permission fault, this field indicates whether that fault was caused by the HDBSS being full.
When DFSC indicates a synchronous External abort on translation table walk or hardware update of translation table, this field indicates whether the fault was caused by a write to the HDBSS.
When DFSC indicates a Granule Protection Fault on translation table walk or hardware update of translation table, this field indicates whether the fault was caused by a write to the HDBSS.
HDBSSF | Meaning |
---|---|
0b0 |
Fault was not caused by HDBSS. |
0b1 |
Fault was caused by HDBSS. |
For any other fault, this field is RES0.
The reset behavior of this field is:
Reserved, RES0.
Tag not Data.
If a memory access generates a Data Abort for a stage 1 Permission fault, this field indicates whether the fault is due to an Allocation Tag access.
TnD | Meaning |
---|---|
0b0 |
Permission fault is not due to a write of an Allocation Tag to Canonically Tagged memory. |
0b1 |
Permission fault is due to a write of an Allocation Tag to Canonically Tagged memory. |
For any other fault, this field is RES0.
The reset behavior of this field is:
Reserved, RES0.
NoTagAccess fault.
If a memory access generates a Data Abort for a Permission fault, this field indicates whether the fault is due to the NoTagAccess memory attribute.
TagAccess | Meaning |
---|---|
0b0 |
Permission fault is not due to the NoTagAccess memory attribute. |
0b1 |
Permission fault is due to the NoTagAccess memory attribute. |
For any other fault, this field is RES0.
The reset behavior of this field is:
Reserved, RES0.
Guarded Control Stack data access.
If a memory access generates a Data Abort, this field indicates whether the fault is due to a Guarded Control Stack data access.
GCS | Meaning |
---|---|
0b0 |
The Data Abort is not due to a Guarded control stack data access. |
0b1 |
The Data Abort is due to a Guarded control stack data access. |
The reset behavior of this field is:
Reserved, RES0.
AssuredOnly flag.
If a memory access generates a stage 2 Data Abort for a Permission fault, this field holds information about the fault.
AssuredOnly | Meaning |
---|---|
0b0 |
The Data Abort is not due to AssuredOnly. |
0b1 |
The Data Abort is due to AssuredOnly. |
For any other fault, this field is RES0.
The reset behavior of this field is:
Reserved, RES0.
Overlay flag.
If a memory access generates a Data Abort for a Permission fault, this field holds information about the fault.
Overlay | Meaning |
---|---|
0b0 |
The Data Abort is not due to Overlay Permissions. |
0b1 |
The Data Abort is due to Overlay Permissions. |
For any other fault, this field is RES0.
The reset behavior of this field is:
Reserved, RES0.
DirtyBit flag.
If a write access to memory generates a Data Abort for a Permission fault using Indirect Permission, this field holds information about the fault.
DirtyBit | Meaning |
---|---|
0b0 |
Permission Fault is not due to dirty state. |
0b1 |
Permission Fault is due to dirty state. |
For any other fault or Access, this field is RES0.
The reset behavior of this field is:
Reserved, RES0.
When FEAT_LS64_V is implemented, if a memory access generated by an ST64BV instruction generates a Data Abort exception for a Translation fault, Access flag fault, or Permission fault, then this field holds register specifier, Xs.
When FEAT_LS64_ACCDATA is implemented, if a memory access generated by an ST64BV0 instruction generates a Data Abort exception for a Translation fault, Access flag fault, or Permission fault, then this field holds register specifier, Xs.
Otherwise, this field is RES0.
Reserved, RES0.
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 | HDBSSF | RES0 | AssuredOnly | Overlay | RES0 |
Reserved, RES0.
Indicates that the fault was caused by the HDBSS.
When IFSC indicates a Permission fault, this field indicates whether the fault was caused by the HDBSS being full.
When IFSC indicates a synchronous External abort on translation table walk or hardware update of translation table, this field indicates whether the fault was caused by a write to the HDBSS.
When IFSC indicates a Granule Protection Fault on translation table walk or hardware update of translation table, this field indicates whether the fault was caused by a write to the HDBSS.
HDBSSF | Meaning |
---|---|
0b0 |
Fault was not caused by HDBSS. |
0b1 |
Fault was caused by HDBSS. |
For any other fault, this field is RES0.
The reset behavior of this field is:
Reserved, RES0.
Reserved, RES0.
AssuredOnly flag.
If a memory access generates a Instruction Abort for a Permission fault, then this field holds information about the fault.
AssuredOnly | Meaning |
---|---|
0b0 |
Instruction Abort is not due to AssuredOnly. |
0b1 |
Instruction Abort is due to stage 2 AssuredOnly attribute. |
For any other fault, this field is RES0.
The reset behavior of this field is:
Reserved, RES0.
Overlay flag.
If a memory access generates a Instruction Abort for a Permission fault, then this field holds information about the fault.
Overlay | Meaning |
---|---|
0b0 |
Instruction Abort is not due to Overlay Permissions. |
0b1 |
Instruction Abort is due to Overlay Permissions. |
For any other fault, this field is RES0.
The reset behavior of this field is:
Reserved, RES0.
Reserved, RES0.
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 | GCS | RES0 |
Reserved, RES0.
Guarded control stack data access.
Indicates that the Watchpoint exception is due to a Guarded control stack data access.
GCS | Meaning |
---|---|
0b0 |
The Watchpoint exception is not due to a Guarded control stack data access. |
0b1 |
The Watchpoint exception is due to a Guarded control stack data access. |
The reset behavior of this field is:
Reserved, RES0.
Reserved, RES0.
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 |
Reserved, RES0.
Exception Class. Indicates the reason for the exception that this register holds information about.
For each EC value, the table references a subsection that gives information about:
Possible values of the EC field are:
EC | Meaning | ISS | ISS2 | Applies when |
---|---|---|---|---|
0b000000 |
Unknown reason. | ISS encoding for exceptions with an unknown reason | ISS2 encoding for all other exceptions | |
0b000001 | Trapped WF* instruction execution. Conditional WF* instructions that fail their condition code check do not cause an exception. | ISS encoding for an exception from a WF* instruction | ISS2 encoding for all other exceptions | |
0b000011 |
Trapped MCR or MRC access with (coproc==0b1111) that is not reported using EC 0b000000. | ISS encoding for an exception from an MCR or MRC access | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b000100 |
Trapped MCRR or MRRC access with (coproc==0b1111) that is not reported using EC 0b000000. | ISS encoding for an exception from an MCRR or MRRC access | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b000101 |
Trapped MCR or MRC access with (coproc==0b1110). | ISS encoding for an exception from an MCR or MRC access | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b000110 | Trapped LDC or STC access. The only architected uses of these instruction are:
| ISS encoding for an exception from an LDC or STC instruction | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b000111 | Access to SME, SVE, Advanced SIMD or floating-point functionality trapped by CPACR_EL1.FPEN, CPTR_EL2.FPEN, CPTR_EL2.TFP, or CPTR_EL3.TFP control. Excludes exceptions resulting from CPACR_EL1 when the value of HCR_EL2.TGE is 1, or because SVE or Advanced SIMD and floating-point are not implemented. These are reported with EC value 0b000000. | ISS encoding for an exception from an access to SVE, Advanced SIMD or floating-point functionality, resulting from the FPEN and TFP traps | ISS2 encoding for all other exceptions | |
0b001000 |
Trapped VMRS access, from ID group trap, that is not reported using EC 0b000111. | ISS encoding for an exception from an MCR or MRC access | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b001001 |
Trapped use of a Pointer authentication instruction because HCR_EL2.API == 0 || SCR_EL3.API == 0. | ISS encoding for an exception from a Pointer Authentication instruction when HCR_EL2.API == 0 || SCR_EL3.API == 0 | ISS2 encoding for all other exceptions | When FEAT_PAuth is implemented |
0b001010 |
An exception from an LD64B or ST64B* instruction. | ISS encoding for an exception from an LD64B or ST64B* instruction | ISS2 encoding for all other exceptions | When FEAT_LS64 is implemented |
0b001100 |
Trapped MRRC access with (coproc==0b1110). | ISS encoding for an exception from an MCRR or MRRC access | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b001101 |
Branch Target Exception. | ISS encoding for an exception from Branch Target Identification instruction | ISS2 encoding for all other exceptions | When FEAT_BTI is implemented |
0b001110 |
Illegal Execution state. | ISS encoding for an exception from an Illegal Execution state, or a PC or SP alignment fault | ISS2 encoding for all other exceptions | |
0b010001 | SVC instruction execution in AArch32 state. This is reported in ESR_EL2 only when the exception is generated because the value of HCR_EL2.TGE is 1. | ISS encoding for an exception from HVC or SVC instruction execution | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b010010 |
HVC instruction execution in AArch32 state, when HVC is not disabled. | ISS encoding for an exception from HVC or SVC instruction execution | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b010011 | SMC instruction execution in AArch32 state, when SMC is not disabled. This is reported in ESR_EL2 only when the exception is generated because the value of HCR_EL2.TSC is 1. | ISS encoding for an exception from SMC instruction execution in AArch32 state | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b010100 |
Trapped MSRR, MRRS or System instruction execution in AArch64 state, that is not reported using EC 0b000000. | ISS encoding for an exception from MSRR, MRRS, or 128-bit System instruction execution in AArch64 state | ISS2 encoding for all other exceptions | When FEAT_SYSREG128 is implemented or FEAT_SYSINSTR128 is implemented |
0b010101 |
SVC instruction execution in AArch64 state. | ISS encoding for an exception from HVC or SVC instruction execution | ISS2 encoding for all other exceptions | When AArch64 is supported |
0b010110 |
HVC instruction execution in AArch64 state, when HVC is not disabled. | ISS encoding for an exception from HVC or SVC instruction execution | ISS2 encoding for all other exceptions | When AArch64 is supported |
0b010111 | SMC instruction execution in AArch64 state, when SMC is not disabled. This is reported in ESR_EL2 only when the exception is generated because the value of HCR_EL2.TSC is 1. | ISS encoding for an exception from SMC instruction execution in AArch64 state | ISS2 encoding for all other exceptions | When AArch64 is supported |
0b011000 | Trapped MSR, MRS or System instruction execution in AArch64 state, that is not reported using EC 0b000000, 0b000001 or 0b000111. This includes all instructions that cause exceptions that are part of the encoding space defined in 'System instruction class encoding overview', except for those exceptions reported using EC values 0b000000, 0b000001, or 0b000111. | ISS encoding for an exception from MSR, MRS, or System instruction execution in AArch64 state | ISS2 encoding for all other exceptions | When AArch64 is supported |
0b011001 |
Access to SVE functionality trapped as a result of CPACR_EL1.ZEN, CPTR_EL2.ZEN, CPTR_EL2.TZ, or CPTR_EL3.EZ, that is not reported using EC 0b000000. | ISS encoding for an exception from an access to SVE functionality, resulting from CPACR_EL1.ZEN, CPTR_EL2.ZEN, CPTR_EL2.TZ, or CPTR_EL3.EZ | ISS2 encoding for all other exceptions | When FEAT_SVE is implemented |
0b011010 |
Trapped ERET, ERETAA, or ERETAB instruction execution. | ISS encoding for an exception from an ERET, ERETAA, or ERETAB instruction | ISS2 encoding for all other exceptions | When FEAT_FGT is implemented or FEAT_NV is implemented |
0b011011 |
Exception from an access to a TSTART instruction at EL0 when SCTLR_EL1.TME0 == 0, EL0 when SCTLR_EL2.TME0 == 0, at EL1 when SCTLR_EL1.TME == 0, at EL2 when SCTLR_EL2.TME == 0 or at EL3 when SCTLR_EL3.TME == 0. | ISS encoding for an exception from a TSTART instruction | ISS2 encoding for all other exceptions | When FEAT_TME is implemented |
0b011100 |
Exception from a PAC Fail | ISS encoding for a PAC Fail exception | ISS2 encoding for all other exceptions | When FEAT_FPAC is implemented |
0b011101 |
Access to SME functionality trapped as a result of CPACR_EL1.SMEN, CPTR_EL2.SMEN, CPTR_EL2.TSM, CPTR_EL3.ESM, or an attempted execution of an instruction that is illegal because of the value of PSTATE.SM or PSTATE.ZA, that is not reported using EC 0b000000. | ISS encoding for an exception due to SME functionality | ISS2 encoding for all other exceptions | When FEAT_SME is implemented |
0b100000 | Instruction Abort from a lower Exception level. Used for MMU faults generated by instruction accesses and synchronous External aborts, including synchronous parity or ECC errors. Not used for debug-related exceptions. | ISS encoding for an exception from an Instruction Abort | ISS2 encoding for an exception from an Instruction Abort | |
0b100001 | Instruction Abort taken without a change in Exception level. Used for MMU faults generated by instruction accesses and synchronous External aborts, including synchronous parity or ECC errors. Not used for debug-related exceptions. | ISS encoding for an exception from an Instruction Abort | ISS2 encoding for an exception from an Instruction Abort | |
0b100010 |
PC alignment fault exception. | ISS encoding for an exception from an Illegal Execution state, or a PC or SP alignment fault | ISS2 encoding for all other exceptions | |
0b100100 | Data Abort exception from a lower Exception level, excluding Data Abort exceptions taken to EL2 as a result of accesses generated associated with VNCR_EL2 as part of nested virtualization support. These Data Abort exceptions might be generated from Exception levels in any Execution state. Used for MMU faults generated by data accesses, alignment faults other than those caused by Stack Pointer misalignment, and synchronous External aborts, including synchronous parity or ECC errors. Not used for debug-related exceptions. | ISS encoding for an exception from a Data Abort | ISS2 encoding for an exception from a Data Abort | |
0b100101 | Data Abort exception without a change in Exception level, or Data Abort exceptions taken to EL2 as a result of accesses generated associated with VNCR_EL2 as part of nested virtualization support. Used for MMU faults generated by data accesses, alignment faults other than those caused by Stack Pointer misalignment, and synchronous External aborts, including synchronous parity or ECC errors. Not used for debug-related exceptions. | ISS encoding for an exception from a Data Abort | ISS2 encoding for an exception from a Data Abort | |
0b100110 |
SP alignment fault exception. | ISS encoding for an exception from an Illegal Execution state, or a PC or SP alignment fault | ISS2 encoding for all other exceptions | |
0b100111 |
Memory Operation Exception. | ISS encoding for an exception from the Memory Copy and Memory Set instructions | ISS2 encoding for all other exceptions | When FEAT_MOPS is implemented |
0b101000 | Trapped floating-point exception taken from AArch32 state. This EC value is valid if the implementation supports trapping of floating-point exceptions, otherwise it is reserved. Whether a floating-point implementation supports trapping of floating-point exceptions is IMPLEMENTATION DEFINED. | ISS encoding for an exception from a trapped floating-point exception | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b101100 | Trapped floating-point exception taken from AArch64 state. This EC value is valid if the implementation supports trapping of floating-point exceptions, otherwise it is reserved. Whether a floating-point implementation supports trapping of floating-point exceptions is IMPLEMENTATION DEFINED. | ISS encoding for an exception from a trapped floating-point exception | ISS2 encoding for all other exceptions | When AArch64 is supported |
0b101101 |
GCS exception. | ISS encoding for a GCS exception | ISS2 encoding for all other exceptions | When FEAT_GCS is implemented |
0b101111 |
SError exception. | ISS encoding for an SError exception | ISS2 encoding for all other exceptions | |
0b110000 |
Breakpoint exception from a lower Exception level. | ISS encoding for an exception from a Breakpoint or Vector Catch debug exception | ISS2 encoding for all other exceptions | |
0b110001 |
Breakpoint exception taken without a change in Exception level. | ISS encoding for an exception from a Breakpoint or Vector Catch debug exception | ISS2 encoding for all other exceptions | |
0b110010 |
Software Step exception from a lower Exception level. | ISS encoding for an exception from a Software Step exception | ISS2 encoding for all other exceptions | |
0b110011 |
Software Step exception taken without a change in Exception level. | ISS encoding for an exception from a Software Step exception | ISS2 encoding for all other exceptions | |
0b110100 | Watchpoint from a lower Exception level, excluding Watchpoint Exceptions taken to EL2 as a result of accesses generated associated with VNCR_EL2 as part of nested virtualization support. These Watchpoint Exceptions might be generated from Exception levels using any Execution state. | ISS encoding for an exception from a Watchpoint exception | ISS2 encoding for an exception from a Watchpoint exception | |
0b110101 |
Watchpoint exceptions without a change in Exception level, or Watchpoint exceptions taken to EL2 as a result of accesses generated associated with VNCR_EL2 as part of nested virtualization support. | ISS encoding for an exception from a Watchpoint exception | ISS2 encoding for an exception from a Watchpoint exception | |
0b111000 |
BKPT instruction execution in AArch32 state. | ISS encoding for an exception from execution of a Breakpoint instruction | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b111010 | Vector Catch exception from AArch32 state. The only case where a Vector Catch exception is taken to an Exception level that is using AArch64 is when the exception is routed to EL2 and EL2 is using AArch64. | ISS encoding for an exception from a Breakpoint or Vector Catch debug exception | ISS2 encoding for all other exceptions | When AArch32 is supported |
0b111100 |
BRK instruction execution in AArch64 state. | ISS encoding for an exception from execution of a Breakpoint instruction | ISS2 encoding for all other exceptions | When AArch64 is supported |
0b111101 |
PMU exception | ISS encoding for a PMU exception | ISS2 encoding for all other exceptions | When FEAT_EBEP is implemented |
All other EC values are reserved by Arm, and:
The effect of programming this field to a reserved value is that behavior is CONSTRAINED UNPREDICTABLE.
The reset behavior of this field is:
Instruction Length for synchronous exceptions. Possible values of this bit are:
IL | Meaning |
---|---|
0b0 |
16-bit instruction trapped. |
0b1 | 32-bit instruction trapped. This value is also used when the exception is one of the following:
|
The reset behavior of this field is:
Instruction Specific Syndrome. Architecturally, this field can be defined independently for each defined Exception class. However, in practice, some ISS encodings are used for more than one Exception class.
Typically, an ISS encoding has a number of subfields. When an ISS subfield holds a register number, the value returned in that field is the AArch64 view of the register number.
For an exception taken from AArch32 state, see 'Mapping of the general-purpose registers between the Execution states'.
If the AArch32 register descriptor is 0b1111, then:
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 |
Reserved, RES0.
When an exception is reported using this EC value, the IL field is set to 1.
This EC value is used for all exceptions that are not covered by any other EC value. This includes exceptions that are generated in the following situations:
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 |
CV | COND | RES0 | RN | RES0 | RV | TI |
Condition code valid.
CV | Meaning |
---|---|
0b0 |
The COND field is not valid. |
0b1 |
The COND field is valid. |
For exceptions taken from AArch64, CV is set to 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
For exceptions taken from AArch64, this field is set to 0b1110.
The condition code for the trapped instruction. This field is valid only for exceptions taken from AArch32, and only when the value of CV is 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
Reserved, RES0.
Register Number. Indicates the register number supplied for a WFET or WFIT instruction.
The reset behavior of this field is:
Reserved, RES0.
Reserved, RES0.
Register field Valid.
If TI[1] == 1, then this field indicates whether RN holds a valid register number for the register argument to the trapped WFET or WFIT instruction.
RV | Meaning |
---|---|
0b0 |
Register field invalid. |
0b1 |
Register field valid. |
If TI[1] == 0, then this field is RES0.
This field is set to 1 on a trap on WFET or WFIT.
The reset behavior of this field is:
Reserved, RES0.
Trapped instruction. Possible values of this bit are:
TI | Meaning | Applies when |
---|---|---|
0b00 |
WFI trapped. | |
0b01 |
WFE trapped. | |
0b10 |
WFIT trapped. | When FEAT_WFxT is implemented |
0b11 |
WFET trapped. | When FEAT_WFxT is implemented |
When FEAT_WFxT is implemented, this is a two bit field as shown. Otherwise, bit[1] is RES0.
The reset behavior of this field is:
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 |
CV | COND | Opc2 | Opc1 | CRn | Rt | CRm | Direction |
Condition code valid.
CV | Meaning |
---|---|
0b0 |
The COND field is not valid. |
0b1 |
The COND field is valid. |
For exceptions taken from AArch64, CV is set to 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
For exceptions taken from AArch64, this field is set to 0b1110.
The condition code for the trapped instruction. This field is valid only for exceptions taken from AArch32, and only when the value of CV is 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
The Opc2 value from the issued instruction.
For a trapped VMRS access, holds the value 0b000.
The reset behavior of this field is:
The Opc1 value from the issued instruction.
For a trapped VMRS access, holds the value 0b111.
The reset behavior of this field is:
The CRn value from the issued instruction.
For a trapped VMRS access, holds the reg field from the VMRS instruction encoding.
The reset behavior of this field is:
The Rt value from the issued instruction, the general-purpose register used for the transfer.
If the Rt value is not 0b1111, then the reported value gives the AArch64 view of the register. Otherwise, if the Rt value is 0b1111:
If the instruction that generated the exception is not UNPREDICTABLE, then the register specifier takes the value 0b11111.
If the instruction that generated the exception is UNPREDICTABLE, then the register specifier takes an UNKNOWN value, which is restricted to either:
The AArch64 view of one of the registers that could have been used in AArch32 state at the Exception level that the instruction was executed at.
The value 0b11111.
See 'Mapping of the general-purpose registers between the Execution states'.
The reset behavior of this field is:
The CRm value from the issued instruction.
For a trapped VMRS access, holds the value 0b0000.
The reset behavior of this field is:
Indicates the direction of the trapped instruction.
Direction | Meaning |
---|---|
0b0 |
Write to System register space. MCR instruction. |
0b1 |
Read from System register space. MRC or VMRS instruction. |
The reset behavior of this field is:
The following fields describe configuration settings for generating exceptions from an MCR or MRC access using coproc 0b1111, that are reported using EC value 0b000011:
The following fields describe configuration settings for generating exceptions from an MCR or MRC access using coproc 0b1110, that are reported using EC value 0b000101:
The following fields describe configuration settings for generating exceptions from a VMSR or VMRS access, that are reported using EC value 0b001000:
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 |
ISS |
ISS | Meaning | Applies when |
---|---|---|
0b0000000000000000000000000 |
ST64BV instruction trapped. | When FEAT_LS64_V is implemented |
0b0000000000000000000000001 |
ST64BV0 instruction trapped. | When FEAT_LS64_ACCDATA is implemented |
0b0000000000000000000000010 |
LD64B or ST64B instruction trapped. | When FEAT_LS64 is implemented |
All other values are reserved.
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 |
CV | COND | Opc1 | RES0 | Rt2 | Rt | CRm | Direction |
Condition code valid.
CV | Meaning |
---|---|
0b0 |
The COND field is not valid. |
0b1 |
The COND field is valid. |
For exceptions taken from AArch64, CV is set to 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
For exceptions taken from AArch64, this field is set to 0b1110.
The condition code for the trapped instruction. This field is valid only for exceptions taken from AArch32, and only when the value of CV is 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
The Opc1 value from the issued instruction.
The reset behavior of this field is:
Reserved, RES0.
The Rt2 value from the issued instruction, the second general-purpose register used for the transfer.
If the Rt2 value is not 0b1111, then the reported value gives the AArch64 view of the register. Otherwise, if the Rt2 value is 0b1111:
If the instruction that generated the exception is not UNPREDICTABLE, then the register specifier takes the value 0b11111.
If the instruction that generated the exception is UNPREDICTABLE, then the register specifier takes an UNKNOWN value, which is restricted to either:
The AArch64 view of one of the registers that could have been used in AArch32 state at the Exception level that the instruction was executed at.
The value 0b11111.
See 'Mapping of the general-purpose registers between the Execution states'.
The reset behavior of this field is:
The Rt value from the issued instruction, the first general-purpose register used for the transfer.
If the Rt value is not 0b1111, then the reported value gives the AArch64 view of the register. Otherwise, if the Rt value is 0b1111:
If the instruction that generated the exception is not UNPREDICTABLE, then the register specifier takes the value 0b11111.
If the instruction that generated the exception is UNPREDICTABLE, then the register specifier takes an UNKNOWN value, which is restricted to either:
The AArch64 view of one of the registers that could have been used in AArch32 state at the Exception level that the instruction was executed at.
The value 0b11111.
See 'Mapping of the general-purpose registers between the Execution states'.
The reset behavior of this field is:
The CRm value from the issued instruction.
The reset behavior of this field is:
Indicates the direction of the trapped instruction.
Direction | Meaning |
---|---|
0b0 |
Write to System register space. MCRR instruction. |
0b1 |
Read from System register space. MRRC instruction. |
The reset behavior of this field is:
The following fields describe configuration settings for generating exceptions from an MCRR or MRRC access using coproc 0b1111, that are reported using EC value 0b000100:
The following fields describe configuration settings for generating exceptions from an MCRR or MRRC access using coproc 0b1110, that are reported using EC value 0b001100:
If the Armv8-A architecture is implemented with an ETMv4 implementation, MCRR and MRRC accesses to trace registers are UNDEFINED and the resulting exception is higher priority than an exception due to these traps.
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 |
CV | COND | imm8 | RES0 | Rn | Offset | AM | Direction |
Condition code valid.
CV | Meaning |
---|---|
0b0 |
The COND field is not valid. |
0b1 |
The COND field is valid. |
For exceptions taken from AArch64, CV is set to 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
For exceptions taken from AArch64, this field is set to 0b1110.
The condition code for the trapped instruction. This field is valid only for exceptions taken from AArch32, and only when the value of CV is 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
The immediate value from the issued instruction.
The reset behavior of this field is:
Reserved, RES0.
The Rn value from the issued instruction, the general-purpose register used for the transfer.
If the Rn value is not 0b1111, then the reported value gives the AArch64 view of the register. Otherwise, if the Rn value is 0b1111:
If the instruction that generated the exception is not UNPREDICTABLE, then the register specifier takes the value 0b11111.
If the instruction that generated the exception is UNPREDICTABLE, then the register specifier takes an UNKNOWN value, which is restricted to either:
The AArch64 view of one of the registers that could have been used in AArch32 state at the Exception level that the instruction was executed at.
The value 0b11111.
See 'Mapping of the general-purpose registers between the Execution states'.
This field is valid only when AM[2] is 0, indicating an immediate form of the LDC or STC instruction. When AM[2] is 1, indicating a literal form of the LDC or STC instruction, this field is UNKNOWN.
The reset behavior of this field is:
Indicates whether the offset is added or subtracted:
Offset | Meaning |
---|---|
0b0 |
Subtract offset. |
0b1 |
Add offset. |
This bit corresponds to the U bit in the instruction encoding.
The reset behavior of this field is:
Addressing mode. The permitted values of this field are:
AM | Meaning |
---|---|
0b000 |
Immediate unindexed. |
0b001 |
Immediate post-indexed. |
0b010 |
Immediate offset. |
0b011 |
Immediate pre-indexed. |
0b100 |
For a trapped STC instruction or a trapped T32 LDC instruction this encoding is reserved. |
0b110 |
For a trapped STC instruction, this encoding is reserved. |
The values 0b101 and 0b111 are reserved. The effect of programming this field to a reserved value is that behavior is CONSTRAINED UNPREDICTABLE, as described in 'Reserved values in System and memory-mapped registers and translation table entries'.
Bit [2] in this subfield indicates the instruction form, immediate or literal.
Bits [1:0] in this subfield correspond to the bits {P, W} in the instruction encoding.
The reset behavior of this field is:
Indicates the direction of the trapped instruction.
Direction | Meaning |
---|---|
0b0 |
Write to memory. STC instruction. |
0b1 |
Read from memory. LDC instruction. |
The reset behavior of this field is:
The following fields describe the configuration settings from an LDC or STC access for the traps that are reported using EC value 0b000110:
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 |
CV | COND | RES0 |
The accesses covered by this trap include:
For an implementation that does not include either SVE or support for Advanced SIMD and floating-point, the exception is reported using the EC value 0b000000.
Condition code valid.
CV | Meaning |
---|---|
0b0 |
The COND field is not valid. |
0b1 |
The COND field is valid. |
For exceptions taken from AArch64, CV is set to 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
For exceptions taken from AArch64, this field is set to 0b1110.
The condition code for the trapped instruction. This field is valid only for exceptions taken from AArch32, and only when the value of CV is 1.
For exceptions taken from AArch32:
The reset behavior of this field is:
Reserved, RES0.
The following fields describe the configuration settings for the traps that are reported using EC value 0b000111:
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 |
The accesses covered by this trap include:
For an implementation that does not include SVE, the exception is reported using the EC value 0b000000.
Reserved, RES0.
The following fields describe the configuration settings for the traps that are reported using EC value 0b011001:
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 | SYNC |
Reserved, RES0.
Indicates whether the exception was taken synchronously or asynchronously.
SYNC | Meaning | Applies when |
---|---|---|
0b0 |
The exception was taken asynchronously because an overflow status flag was set. | |
0b1 |
The exception was taken synchronously because PSTATE.PPEND was set. | When FEAT_SEBEP is implemented |
The reset behavior of this field is:
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 |
Reserved, RES0.
There are no configuration settings for generating Illegal Execution state exceptions and PC alignment fault exceptions. For more information about PC alignment fault exceptions, see 'PC alignment checking'.
'SP alignment checking' describes the configuration settings for generating SP alignment fault exceptions.
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 |
MemInst | isSETG | Options | FromEpilogue | WrongOption | OptionA | RES0 | destreg | srcreg | sizereg |
Indicates the memory instruction class causing the exception.
MemInst | Meaning |
---|---|
0b0 |
CPYFE*, CPYFM*, CPYE*, and CPYM* instructions. |
0b1 |
SETE*, SETM*, SETGE*, and SETGM* instructions. |
The reset behavior of this field is:
Indicates whether the instruction belongs to SETGM* or SETGE* class of instruction.
isSETG | Meaning |
---|---|
0b0 |
Not a SETGM* or SETGE* instruction. |
0b1 |
SETGM* or SETGE* instruction. |
The reset behavior of this field is:
Options : the Options field of the instruction.
For Memory Copy instructions, bits[22:19] forms the Options field, which holds the bits[15:12] of the instruction.
For Memory Set instructions:
The reset behavior of this field is:
Indicates whether the instruction belongs to the epilogue class of Memory Copy or Memory Set instructions.
FromEpilogue | Meaning |
---|---|
0b0 |
Not an epilogue instruction. |
0b1 |
CPYE*, CPYFE*, SETE*, or SETGE* instruction. |
The reset behavior of this field is:
Algorithm option.
WrongOption | Meaning |
---|---|
0b0 |
WrongOption is false. |
0b1 |
WrongOption is true. |
The reset behavior of this field is:
Algorithm type indicated by the PSTATE.C bit.
OptionA | Meaning |
---|---|
0b0 |
OptionB indicated by PSTATE.C is 0. |
0b1 |
OptionA indicated by PSTATE.C is 1. |
The reset behavior of this field is:
Reserved, RES0.
The destination register value from the issued instruction, containing the destination address.
The reset behavior of this field is:
The source register value from the issued instruction, containing either the source address or the source data.
The reset behavior of this field is:
The size register value from the issued instruction, containing the number of bytes to be transfered or set.
The reset behavior of this field is:
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 | imm16 |
Reserved, RES0.
The value of the immediate field from the HVC or SVC instruction.
For an HVC instruction, and for an A64 SVC instruction, this is the value of the imm16 field of the issued instruction.
For an A32 or T32 SVC instruction:
The reset behavior of this field is:
In AArch32 state, the HVC instruction is unconditional, and a conditional SVC instruction generates an exception only if it passes its condition code check. Therefore, the syndrome information for these exceptions does not require conditionality information.
For T32 and A32 instructions, see 'SVC' and 'HVC'.
For A64 instructions, see 'SVC' and 'HVC'.
If FEAT_FGT is implemented, HFGITR_EL2.{SVC_EL1, SVC_EL0} control fine-grained traps on SVC execution.
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 |
CV | COND | CCKNOWNPASS | RES0 |
For an SMC instruction that completes normally and generates an exception that is taken to EL3, the ISS encoding is RES0.
For an SMC instruction that is trapped to EL2 from EL1 because HCR_EL2.TSC is 1, the ISS encoding is as shown in the diagram.
Condition code valid.
CV | Meaning |
---|---|
0b0 |
The COND field is not valid. |
0b1 |
The COND field is valid. |
For exceptions taken from AArch64, CV is set to 1.
For exceptions taken from AArch32:
This field is valid only if CCKNOWNPASS is 1, otherwise it is RES0.
The reset behavior of this field is:
For exceptions taken from AArch64, this field is set to 0b1110.
The condition code for the trapped instruction. This field is valid only for exceptions taken from AArch32, and only when the value of CV is 1.
For exceptions taken from AArch32:
This field is valid only if CCKNOWNPASS is 1, otherwise it is RES0.
The reset behavior of this field is:
Indicates whether the instruction might have failed its condition code check.
CCKNOWNPASS | Meaning |
---|---|
0b0 |
The instruction was unconditional, or was conditional and passed its condition code check. |
0b1 |
The instruction was conditional, and might have failed its condition code check. |
In an implementation in which an SMC instruction that fails it code check is not trapped, this field can always return the value 0.
The reset behavior of this field is:
Reserved, RES0.
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 | imm16 |
Reserved, RES0.
The value of the immediate field from the issued SMC instruction.
The reset behavior of this field is:
The value of ISS[24:0] described here is used both:
HCR_EL2.TSC describes the configuration settings for trapping SMC from EL1 modes.
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 | Op0 | Op2 | Op1 | CRn | Rt | CRm | Direction |
Reserved, RES0.
The Op0 value from the issued instruction.
The reset behavior of this field is:
The Op2 value from the issued instruction.
The reset behavior of this field is:
The Op1 value from the issued instruction.
The reset behavior of this field is:
The CRn value from the issued instruction.
The reset behavior of this field is:
The Rt value from the issued instruction, the general-purpose register used for the transfer.
The reset behavior of this field is:
The CRm value from the issued instruction.
The reset behavior of this field is:
Indicates the direction of the trapped instruction.
Direction | Meaning |
---|---|
0b0 |
Write access, including MSR instructions. |
0b1 |
Read access, including MRS instructions. |
The reset behavior of this field is:
For exceptions caused by System instructions, see 'System instructions' subsection of 'Branches, exception generating and System instructions' for the encoding values returned by an instruction.
The following fields describe configuration settings for generating the exception that is reported using EC value 0b011000:
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 | Op0 | Op2 | Op1 | CRn | Rt | RES0 | CRm | Direction |
Reserved, RES0.
The Op0 value from the issued instruction.
The reset behavior of this field is:
The Op2 value from the issued instruction.
The reset behavior of this field is:
The Op1 value from the issued instruction.
The reset behavior of this field is:
The CRn value from the issued instruction.
The reset behavior of this field is:
The Rt value from the issued instruction, the general-purpose register used for the transfer.
This value represents register pair of X[Rt:0], X[Rt:1].
The reset behavior of this field is:
Reserved, RES0.
The CRm value from the issued instruction.
The reset behavior of this field is:
Indicates the direction of the trapped instruction.
Direction | Meaning |
---|---|
0b0 |
Write access, MSRR instructions. |
0b1 |
Read access, MRRS instructions. |
The reset behavior of this field is:
The following fields describe configuration settings for generating exceptions from an MSRR or MRRS access that are reported using EC value 0b010100:
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 | TopLevel | RES0 | PFV | RES0 | SET | FnV | EA | RES0 | S1PTW | RES0 | IFSC |
When FEAT_THE is implemented, if a memory access generates an Instruction Abort for AssuredOnly, the ISS2 encoding for an exception from an Instruction Abort includes further information about the exception.
When FEAT_S1POE or FEAT_S2POE is implemented, if a memory access generates an Instruction Abort due to a Permission fault, the ISS2 encoding for an exception from an Instruction Abort includes further information about the exception.
Reserved, RES0.
Indicates if the fault was due to TopLevel.
TopLevel | Meaning |
---|---|
0b0 |
Fault is not due to TopLevel. |
0b1 |
Fault is due to TopLevel. |
The reset behavior of this field is:
Reserved, RES0.
Reserved, RES0.
FAR Valid. Describes whether the PFAR_EL2 is valid.
PFV | Meaning |
---|---|
0b0 |
PFAR_EL2 is UNKNOWN. |
0b1 |
PFAR_EL2 is valid. |
This field is valid only if the IFSC code is 0b10000, 0b01001x, or 0b0101xx.
The reset behavior of this field is:
Reserved, RES0.
Reserved, RES0.
Synchronous Error Type. When IFSC is 0b010000, describes the PE error state after taking the Instruction Abort exception.
SET | Meaning | Applies when |
---|---|---|
0b00 |
Recoverable state (UER). | |
0b10 |
Uncontainable (UC). | When FEAT_RASv2 is not implemented |
0b11 |
Restartable state (UEO). |
All other values are reserved.
Software can use this information to determine what recovery might be possible. Taking a synchronous External abort exception might result in a PE state that is not recoverable.
The reset behavior of this field is:
Reserved, RES0.
FAR not Valid, for a synchronous External abort other than a synchronous External abort on a translation table walk.
FnV | Meaning |
---|---|
0b0 |
FAR is valid. |
0b1 |
FAR is not valid, and holds an UNKNOWN value. |
The reset behavior of this field is:
Reserved, RES0.
External abort type. This bit can provide an IMPLEMENTATION DEFINED classification of External aborts.
For any abort other than an External abort this bit returns a value of 0.
The reset behavior of this field is:
Reserved, RES0.
For a stage 2 fault, indicates whether the fault was a stage 2 fault on an access made for a stage 1 translation table walk:
S1PTW | Meaning |
---|---|
0b0 |
Fault not on a stage 2 translation for a stage 1 translation table walk. |
0b1 |
Fault on the stage 2 translation of an access for a stage 1 translation table walk. |
For any abort other than a stage 2 fault this bit is RES0.
The reset behavior of this field is:
Reserved, RES0.
Instruction Fault Status Code.
IFSC | Meaning | Applies when |
---|---|---|
0b000000 |
Address size fault, level 0 of translation or translation table base register. | |
0b000001 |
Address size fault, level 1. | |
0b000010 |
Address size fault, level 2. | |
0b000011 |
Address size fault, level 3. | |
0b000100 |
Translation fault, level 0. | |
0b000101 |
Translation fault, level 1. | |
0b000110 |
Translation fault, level 2. | |
0b000111 |
Translation fault, level 3. | |
0b001001 |
Access flag fault, level 1. | |
0b001010 |
Access flag fault, level 2. | |
0b001011 |
Access flag fault, level 3. | |
0b001000 |
Access flag fault, level 0. | When FEAT_LPA2 is implemented |
0b001100 |
Permission fault, level 0. | When FEAT_LPA2 is implemented |
0b001101 |
Permission fault, level 1. | |
0b001110 |
Permission fault, level 2. | |
0b001111 |
Permission fault, level 3. | |
0b010000 |
Synchronous External abort, not on translation table walk or hardware update of translation table. | |
0b010010 |
Synchronous External abort on translation table walk or hardware update of translation table, level -2. | When FEAT_D128 is implemented |
0b010011 |
Synchronous External abort on translation table walk or hardware update of translation table, level -1. | When FEAT_LPA2 is implemented |
0b010100 |
Synchronous External abort on translation table walk or hardware update of translation table, level 0. | |
0b010101 |
Synchronous External abort on translation table walk or hardware update of translation table, level 1. | |
0b010110 |
Synchronous External abort on translation table walk or hardware update of translation table, level 2. | |
0b010111 |
Synchronous External abort on translation table walk or hardware update of translation table, level 3. | |
0b011000 |
Synchronous parity or ECC error on memory access, not on translation table walk. | When FEAT_RAS is not implemented |
0b011011 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level -1. | When FEAT_LPA2 is implemented and FEAT_RAS is not implemented |
0b011100 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level 0. | When FEAT_RAS is not implemented |
0b011101 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level 1. | When FEAT_RAS is not implemented |
0b011110 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level 2. | When FEAT_RAS is not implemented |
0b011111 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level 3. | When FEAT_RAS is not implemented |
0b100010 |
Granule Protection Fault on translation table walk or hardware update of translation table, level -2. | When FEAT_D128 is implemented and FEAT_RME is implemented |
0b100011 |
Granule Protection Fault on translation table walk or hardware update of translation table, level -1. | When FEAT_RME is implemented and FEAT_LPA2 is implemented |
0b100100 |
Granule Protection Fault on translation table walk or hardware update of translation table, level 0. | When FEAT_RME is implemented |
0b100101 |
Granule Protection Fault on translation table walk or hardware update of translation table, level 1. | When FEAT_RME is implemented |
0b100110 |
Granule Protection Fault on translation table walk or hardware update of translation table, level 2. | When FEAT_RME is implemented |
0b100111 |
Granule Protection Fault on translation table walk or hardware update of translation table, level 3. | When FEAT_RME is implemented |
0b101000 |
Granule Protection Fault, not on translation table walk or hardware update of translation table. | When FEAT_RME is implemented |
0b101001 |
Address size fault, level -1. | When FEAT_LPA2 is implemented |
0b101010 |
Translation fault, level -2. | When FEAT_D128 is implemented |
0b101011 |
Translation fault, level -1. | When FEAT_LPA2 is implemented |
0b101100 |
Address Size fault, level -2. | When FEAT_D128 is implemented |
0b110000 |
TLB conflict abort. | |
0b110001 |
Unsupported atomic hardware update fault. | When FEAT_HAFDBS is implemented |
All other values are reserved.
For more information about the lookup level associated with a fault, see 'The lookup level associated with MMU faults'.
If the S1PTW bit is set, then the level refers the level of the stage2 translation that is translating a stage 1 translation walk.
The reset behavior of this field is:
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 | SMTC |
The accesses covered by this trap include:
Reserved, RES0.
SME Trap Code. Identifies the reason for instruction trapping.
SMTC | Meaning | Applies when |
---|---|---|
0b000 |
Access to SME functionality trapped as a result of CPACR_EL1.SMEN, CPTR_EL2.SMEN, CPTR_EL2.TSM, or CPTR_EL3.ESM, that is not reported using EC 0b000000. | |
0b001 |
Advanced SIMD, SVE, or SVE2 instruction trapped because PSTATE.SM is 1. | |
0b010 |
SME instruction trapped because PSTATE.SM is 0. | |
0b011 |
SME instruction trapped because PSTATE.ZA is 0. | |
0b100 |
Access to the SME2 ZT0 register trapped as a result of SMCR_EL1.EZT0, SMCR_EL2.EZT0, or SMCR_EL3.EZT0. | When FEAT_SME2 is implemented |
All other values are reserved.
The following fields describe the configuration settings for the traps that are reported using the EC value 0b011101:
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 |
ISV | SAS | Bit[21] | Bits[20:16] | Bit[15] | Bit[14] | VNCR | Bits[12:11] | FnV | EA | CM | S1PTW | WnR | DFSC |
The ISS2 encoding for an exception from a Data Abort includes further information about the exception when any of the following features are implemented:
FEAT_LS64_V.
FEAT_LS64_ACCDATA.
FEAT_THE.
FEAT_S1POE or FEAT_S2POE.
FEAT_S1PIE or FEAT_S2PIE.
FEAT_GCS.
FEAT_MTE_CANONICAL_TAGS.
FEAT_MTE_PERM.
Instruction Syndrome Valid. Indicates whether the syndrome information in ISS[23:14] is valid.
ISV | Meaning |
---|---|
0b0 |
No valid instruction syndrome. ISS[23:14] are RES0. |
0b1 |
ISS[23:14] hold a valid instruction syndrome. |
In ESR_EL2, ISV is 1 when FEAT_LS64 is implemented and a memory access generated by an LD64B or ST64B instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault.
In ESR_EL2, ISV is 1 when FEAT_LS64_V is implemented and a memory access generated by an ST64BV instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault.
In ESR_EL2, ISV is 1 when FEAT_LS64_ACCDATA is implemented and a memory access generated by an ST64BV0 instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault.
For other faults reported in ESR_EL2, ISV is 0 except for the following stage 2 aborts:
For these stage 2 aborts, ISV is UNKNOWN if the exception was generated in Debug state in memory access mode, and otherwise indicates whether ISS[23:14] hold a valid syndrome.
For faults reported in ESR_EL1 or ESR_EL3, ISV is 1 when FEAT_LS64 is implemented and a memory access generated by an LD64B or ST64B instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault.
For faults reported in ESR_EL1 or ESR_EL3, ISV is 1 when FEAT_LS64_V is implemented and a memory access generated by an ST64BV instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault.
For faults reported in ESR_EL1 or ESR_EL3, ISV is 1 when FEAT_LS64_ACCDATA is implemented and a memory access generated by an ST64BV0 instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault.
When FEAT_RAS is implemented, ISV is 0 for any synchronous External abort.
When FEAT_RAS is not implemented, it is IMPLEMENTATION DEFINED whether ISV is set to 1 or 0 on a synchronous External abort on a stage 2 translation table walk.
For ISS reporting, a stage 2 abort on a stage 1 translation table walk does not return a valid instruction syndrome, and therefore ISV is 0 for these aborts.
When FEAT_MOPS is implemented, for a synchronous Data Abort on a Memory Copy and Memory Set instruction, ISV is 0.
When FEAT_MTE is implemented, for a synchronous Data Abort on an instruction that directly accesses Allocation Tags, ISV is 0.
The reset behavior of this field is:
Syndrome Access Size. Indicates the size of the access attempted by the faulting operation.
SAS | Meaning |
---|---|
0b00 |
Byte |
0b01 |
Halfword |
0b10 |
Word |
0b11 |
Doubleword |
When FEAT_LS64 is implemented, if a memory access generated by an LD64B or ST64B instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 0b11.
When FEAT_LS64_V is implemented, if a memory access generated by an ST64BV instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 0b11.
When FEAT_LS64_ACCDATA is implemented, if a memory access generated by an ST64BV0 instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 0b11.
This field is UNKNOWN when the value of ISV is UNKNOWN.
The reset behavior of this field is:
Reserved, RES0.
Syndrome Sign Extend. For a byte, halfword, or word load operation, indicates whether the data item must be sign extended.
SSE | Meaning |
---|---|
0b0 |
Sign-extension not required. |
0b1 |
Data item must be sign-extended. |
When FEAT_LS64 is implemented, if a memory access generated by an LD64B or ST64B instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 0.
When FEAT_LS64_V is implemented, if a memory access generated by an ST64BV instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 0.
When FEAT_LS64_ACCDATA is implemented, if a memory access generated by an ST64BV0 instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 0.
For all other operations, this field is 0.
This field is UNKNOWN when the value of ISV is UNKNOWN.
The reset behavior of this field is:
Indicates if the fault was due to TopLevel.
TopLevel | Meaning |
---|---|
0b0 |
Fault is not due to TopLevel. |
0b1 |
Fault is due to TopLevel. |
The reset behavior of this field is:
Reserved, RES0.
Syndrome Register Transfer. The register number of the Wt/Xt/Rt operand of the faulting instruction.
If the exception was taken from an Exception level that is using AArch32, then this is the AArch64 view of the register. See 'Mapping of the general-purpose registers between the Execution states'.
This field is UNKNOWN when the value of ISV is UNKNOWN.
The reset behavior of this field is:
Reserved, RES0.
Write Update. Describes whether a store instruction that generated an External abort updated the location.
WU | Meaning |
---|---|
0b00 |
Not a store instruction or translation table update, or the location might have been updated. |
0b10 |
Store instruction or translation table update that did not update the location. |
0b11 |
Store instruction or translation table update that updated the location. |
In the description of this field, a store instruction is any memory-writing instruction that explicitly performs a store. This includes instructions that both read and write memory.
The reset behavior of this field is:
Reserved, RES0.
Sixty Four bit general-purpose register transfer. Width of the register accessed by the instruction is 64-bit.
SF | Meaning |
---|---|
0b0 |
Instruction loads/stores a 32-bit general-purpose register. |
0b1 |
Instruction loads/stores a 64-bit general-purpose register. |
This field specifies the register width identified by the instruction, not the Execution state.
When FEAT_LS64 is implemented, if a memory access generated by an LD64B or ST64B instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 1.
When FEAT_LS64_V is implemented, if a memory access generated by an ST64BV instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 1.
When FEAT_LS64_ACCDATA is implemented, if a memory access generated by an ST64BV0 instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 1.
This field is UNKNOWN when the value of ISV is UNKNOWN.
The reset behavior of this field is:
FAR not Precise.
FnP | Meaning | Applies when |
---|---|---|
0b0 |
The FAR holds the faulting virtual address that generated the Data Abort. | |
0b1 | The FAR holds any virtual address within the naturally-aligned granule that contains the faulting virtual address that generated a Data Abort due to an SVE contiguous vector load/store instruction, or an SME load/store instruction. For more information about the naturally-aligned fault granule, see FAR_ELx (for example, FAR_EL1). | When FEAT_SME is implemented or FEAT_SVE is implemented |
The reset behavior of this field is:
Reserved, RES0.
Acquire/Release.
AR | Meaning |
---|---|
0b0 |
Instruction did not have acquire/release semantics. |
0b1 |
Instruction did have acquire/release semantics. |
When FEAT_LS64 is implemented, if a memory access generated by an LD64B or ST64B instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 0.
When FEAT_LS64_V is implemented, if a memory access generated by an ST64BV instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 0.
When FEAT_LS64_ACCDATA is implemented, if a memory access generated by an ST64BV0 instruction generates a Data Abort for a Translation fault, Access flag fault, or Permission fault, then this field is 0.
This field is UNKNOWN when the value of ISV is UNKNOWN.
The reset behavior of this field is:
FAR Valid. Describes whether the PFAR_EL2 is valid.
PFV | Meaning |
---|---|
0b0 |
PFAR_EL2 is UNKNOWN. |
0b1 |
PFAR_EL2 is valid. |
The reset behavior of this field is:
Reserved, RES0.
Indicates that the fault came from use of VNCR_EL2 register by EL1 code.
VNCR | Meaning | Applies when |
---|---|---|
0b0 |
The fault was not generated by the use of VNCR_EL2 by EL1 code. | |
0b1 |
The fault was generated by the use of VNCR_EL2 by EL1 code. | When FEAT_NV2 is implemented |
The reset behavior of this field is:
Load/Store Type. Used when a Translation fault, Access flag fault, or Permission fault generates a Data Abort.
LST | Meaning | Applies when |
---|---|---|
0b00 |
The instruction that generated the Data Abort is not specified. | |
0b01 |
An ST64BV instruction generated the Data Abort. | When FEAT_LS64_V is implemented |
0b10 |
An LD64B or ST64B instruction generated the Data Abort. | When FEAT_LS64 is implemented |
0b11 |
An ST64BV0 instruction generated the Data Abort. | When FEAT_LS64_ACCDATA is implemented |
The reset behavior of this field is:
Synchronous Error Type. Used when a synchronous External abort, not on a Translation table walk or hardware update of the Translation table, generated the Data Abort. Describes the PE error state after taking the Data Abort exception.
SET | Meaning | Applies when |
---|---|---|
0b00 |
Recoverable state (UER). | |
0b10 | Uncontainable (UC). If FEAT_RASv2 is implemented, this value is reserved. | When FEAT_RASv2 is implemented |
0b11 |
Restartable state (UEO). |
Software can use this information to determine what recovery might be possible. Taking a synchronous External abort exception might result in a PE state that is not recoverable.
The reset behavior of this field is:
Reserved, RES0.
FAR not Valid, for a synchronous External abort other than a synchronous External abort on a translation table walk.
FnV | Meaning |
---|---|
0b0 |
FAR is valid. |
0b1 |
FAR is not valid, and holds an UNKNOWN value. |
This field is valid only if the DFSC code is 0b010000. It is RES0 for all other aborts.
The reset behavior of this field is:
External abort type. This bit can provide an IMPLEMENTATION DEFINED classification of External aborts.
For any abort other than an External abort this bit returns a value of 0.
The reset behavior of this field is:
Cache maintenance. Indicates whether the Data Abort came from a cache maintenance or address translation instruction:
CM | Meaning |
---|---|
0b0 |
The Data Abort was not generated by the execution of one of the System instructions identified in the description of value 1. |
0b1 |
The Data Abort was generated by either the execution of a cache maintenance instruction or by a synchronous fault on the execution of an address translation instruction. The DC ZVA, DC GVA, and DC GZVA instructions are not classified as cache maintenance instructions, and therefore their execution cannot cause this field to be set to 1. |
The reset behavior of this field is:
For a stage 2 fault, indicates whether the fault was a stage 2 fault on an access made for a stage 1 translation table walk:
S1PTW | Meaning |
---|---|
0b0 |
Fault not on a stage 2 translation for a stage 1 translation table walk. |
0b1 |
Fault on the stage 2 translation of an access for a stage 1 translation table walk. |
For any abort other than a stage 2 fault this bit is RES0.
The reset behavior of this field is:
Write not Read. Indicates whether a synchronous abort was caused by an instruction writing to a memory location, or by an instruction reading from a memory location.
WnR | Meaning |
---|---|
0b0 |
Abort caused by an instruction reading from a memory location. |
0b1 |
Abort caused by an instruction writing to a memory location. |
For faults on cache maintenance and address translation instructions, this bit always returns a value of 1.
For faults from an atomic instruction that both reads and writes from a memory location, this bit is set to 0 if a read of the address specified by the instruction would have generated the fault which is being reported, otherwise it is set to 1. The architecture permits, but does not require, a relaxation of this requirement such that for all stage 2 aborts on stage 1 translation table walks for atomic instructions, the WnR bit is always 0.
This field is UNKNOWN for:
The reset behavior of this field is:
Data Fault Status Code.
DFSC | Meaning | Applies when |
---|---|---|
0b000000 |
Address size fault, level 0 of translation or translation table base register. | |
0b000001 |
Address size fault, level 1. | |
0b000010 |
Address size fault, level 2. | |
0b000011 |
Address size fault, level 3. | |
0b000100 |
Translation fault, level 0. | |
0b000101 |
Translation fault, level 1. | |
0b000110 |
Translation fault, level 2. | |
0b000111 |
Translation fault, level 3. | |
0b001001 |
Access flag fault, level 1. | |
0b001010 |
Access flag fault, level 2. | |
0b001011 |
Access flag fault, level 3. | |
0b001000 |
Access flag fault, level 0. | When FEAT_LPA2 is implemented |
0b001100 |
Permission fault, level 0. | When FEAT_LPA2 is implemented |
0b001101 |
Permission fault, level 1. | |
0b001110 |
Permission fault, level 2. | |
0b001111 |
Permission fault, level 3. | |
0b010000 |
Synchronous External abort, not on translation table walk or hardware update of translation table. | |
0b010001 |
Synchronous Tag Check Fault. | When FEAT_MTE2 is implemented |
0b010010 |
Synchronous External abort on translation table walk or hardware update of translation table, level -2. | When FEAT_D128 is implemented |
0b010011 |
Synchronous External abort on translation table walk or hardware update of translation table, level -1. | When FEAT_LPA2 is implemented |
0b010100 |
Synchronous External abort on translation table walk or hardware update of translation table, level 0. | |
0b010101 |
Synchronous External abort on translation table walk or hardware update of translation table, level 1. | |
0b010110 |
Synchronous External abort on translation table walk or hardware update of translation table, level 2. | |
0b010111 |
Synchronous External abort on translation table walk or hardware update of translation table, level 3. | |
0b011000 |
Synchronous parity or ECC error on memory access, not on translation table walk. | When FEAT_RAS is not implemented |
0b011011 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level -1. | When FEAT_LPA2 is implemented and FEAT_RAS is not implemented |
0b011100 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level 0. | When FEAT_RAS is not implemented |
0b011101 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level 1. | When FEAT_RAS is not implemented |
0b011110 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level 2. | When FEAT_RAS is not implemented |
0b011111 |
Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level 3. | When FEAT_RAS is not implemented |
0b100001 |
Alignment fault. | |
0b100010 |
Granule Protection Fault on translation table walk or hardware update of translation table, level -2. | When FEAT_D128 is implemented and FEAT_RME is implemented |
0b100011 |
Granule Protection Fault on translation table walk or hardware update of translation table, level -1. | When FEAT_RME is implemented and FEAT_LPA2 is implemented |
0b100100 |
Granule Protection Fault on translation table walk or hardware update of translation table, level 0. | When FEAT_RME is implemented |
0b100101 |
Granule Protection Fault on translation table walk or hardware update of translation table, level 1. | When FEAT_RME is implemented |
0b100110 |
Granule Protection Fault on translation table walk or hardware update of translation table, level 2. | When FEAT_RME is implemented |
0b100111 |
Granule Protection Fault on translation table walk or hardware update of translation table, level 3. | When FEAT_RME is implemented |
0b101000 |
Granule Protection Fault, not on translation table walk or hardware update of translation table. | When FEAT_RME is implemented |
0b101001 |
Address size fault, level -1. | When FEAT_LPA2 is implemented |
0b101010 |
Translation fault, level -2. | When FEAT_D128 is implemented |
0b101011 |
Translation fault, level -1. | When FEAT_LPA2 is implemented |
0b101100 |
Address Size fault, level -2. | When FEAT_D128 is implemented |
0b110000 |
TLB conflict abort. | |
0b110001 |
Unsupported atomic hardware update fault. | When FEAT_HAFDBS is implemented |
0b110100 |
IMPLEMENTATION DEFINED fault (Lockdown). | |
0b110101 |
IMPLEMENTATION DEFINED fault (Unsupported Exclusive or Atomic access). |
All other values are reserved.
For more information about the lookup level associated with a fault, see 'The lookup level associated with MMU faults'.
If the S1PTW bit is set, then the level refers the level of the stage2 translation that is translating a stage 1 translation walk.
The reset behavior of this field is:
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 | TFV | RES0 | VECITR | IDF | RES0 | IXF | UFF | OFF | DZF | IOF |
Reserved, RES0.
Trapped Fault Valid bit. Indicates whether the IDF, IXF, UFF, OFF, DZF, and IOF bits hold valid information about trapped floating-point exceptions.
TFV | Meaning |
---|---|
0b0 |
The IDF, IXF, UFF, OFF, DZF, and IOF bits do not hold valid information about trapped floating-point exceptions and are UNKNOWN. |
0b1 |
One or more floating-point exceptions occurred during an operation performed while executing the reported instruction. The IDF, IXF, UFF, OFF, DZF, and IOF bits indicate trapped floating-point exceptions that occurred. For more information, see 'Floating-point exceptions and exception traps'. |
It is IMPLEMENTATION DEFINED whether this field is set to 0 on an exception generated by a trapped floating-point exception from an instruction that is performing floating-point operations on more than one lane of a vector.
This is not a requirement. Implementations can set this field to 1 on a trapped floating-point exception from an instruction and return valid information in the {IDF, IXF, UFF, OFF, DZF, IOF} fields.
The reset behavior of this field is:
Reserved, RES0.
For a trapped floating-point exception from an instruction executed in AArch32 state this field is RES1.
For a trapped floating-point exception from an instruction executed in AArch64 state this field is UNKNOWN.
The reset behavior of this field is:
Input Denormal floating-point exception trapped bit. If the TFV field is 0, this bit is UNKNOWN. Otherwise, the possible values of this bit are:
IDF | Meaning |
---|---|
0b0 |
Input denormal floating-point exception has not occurred. |
0b1 |
Input denormal floating-point exception occurred during execution of the reported instruction. |
The reset behavior of this field is:
Reserved, RES0.
Inexact floating-point exception trapped bit. If the TFV field is 0, this bit is UNKNOWN. Otherwise, the possible values of this bit are:
IXF | Meaning |
---|---|
0b0 |
Inexact floating-point exception has not occurred. |
0b1 |
Inexact floating-point exception occurred during execution of the reported instruction. |
The reset behavior of this field is:
Underflow floating-point exception trapped bit. If the TFV field is 0, this bit is UNKNOWN. Otherwise, the possible values of this bit are:
UFF | Meaning |
---|---|
0b0 |
Underflow floating-point exception has not occurred. |
0b1 |
Underflow floating-point exception occurred during execution of the reported instruction. |
The reset behavior of this field is:
Overflow floating-point exception trapped bit. If the TFV field is 0, this bit is UNKNOWN. Otherwise, the possible values of this bit are:
OFF | Meaning |
---|---|
0b0 |
Overflow floating-point exception has not occurred. |
0b1 |
Overflow floating-point exception occurred during execution of the reported instruction. |
The reset behavior of this field is:
Divide by Zero floating-point exception trapped bit. If the TFV field is 0, this bit is UNKNOWN. Otherwise, the possible values of this bit are:
DZF | Meaning |
---|---|
0b0 |
Divide by Zero floating-point exception has not occurred. |
0b1 |
Divide by Zero floating-point exception occurred during execution of the reported instruction. |
The reset behavior of this field is:
Invalid Operation floating-point exception trapped bit. If the TFV field is 0, this bit is UNKNOWN. Otherwise, the possible values of this bit are:
IOF | Meaning |
---|---|
0b0 |
Invalid Operation floating-point exception has not occurred. |
0b1 |
Invalid Operation floating-point exception occurred during execution of the reported instruction. |
The reset behavior of this field is:
In an implementation that supports the trapping of floating-point exceptions:
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 | ExType | RES0 | Raddr | Bits[9:5] | IT |
Reserved, RES0.
The first level classification of GCS exceptions.
ExType | Meaning |
---|---|
0b0000 |
The exception reported is a Guarded Control Stack Data Check Exception. |
0b0001 |
The exception reported is an EXLOCK Exception. |
0b0010 |
The exception reported is a trap exception on GCSSTR or GCSSTTR instruction execution. |
The reset behavior of this field is:
Reserved, RES0.
Indicates the data address register number supplied in the instruction that has been trapped.
The reset behavior of this field is:
Reserved, RES0.
Indicates a register number used by the instruction that caused the Guarded Control Stack Data Check Exception.
For a procedure return instruction reported with ESR_EL2.ISS.IT as 0b00000, contains the register number for the register which contains the target address of the branch.
For a GCSPOPM instruction reported with ESR_EL2.ISS.IT as 0b00001, contains the register number for the register which is the destination register of the instruction.
For a procedure return instruction reported with ESR_EL2.ISS.IT as 0b00010 or 0b00011, contains the value 0b11110, indicating X30.
For a GCSSS1 instruction reported with ESR_EL2.ISS.IT as 0b00100, contains the register number for the register which is the input register of the instruction.
If ESR_EL2.ISS.IT is reported as 0b00101 or 0b01000, this field is UNKNOWN
If ESR_EL2.ISS.IT is reported as 0b01001, this field is 0b11111
The reset behavior of this field is:
Indicates the data value register number supplied in the instruction that has been trapped.
The reset behavior of this field is:
Reserved, RES0.
Type of the instruction that caused the Guarded Control Stack Data Check Exception.
IT | Meaning |
---|---|
0b00000 |
Guarded Control Stack Data Check Exception is from a procedure return instruction without Pointer authentication. |
0b00001 |
Guarded Control Stack Data Check Exception is from a GCSPOPM instruction. |
0b00010 |
Guarded Control Stack Data Check Exception is from a procedure return instruction with Pointer authentication that uses key A. |
0b00011 |
Guarded Control Stack Data Check Exception is from a procedure return instruction with Pointer authentication that uses key B. |
0b00100 |
Guarded Control Stack Data Check Exception is from a GCSSS1 instruction. |
0b00101 |
Guarded Control Stack Data Check Exception is from a GCSSS2 instruction. |
0b01000 |
Guarded Control Stack Data Check Exception is from a GCSPOPCX instruction. |
0b01001 |
Guarded Control Stack Data Check Exception is from a GCSPOPX instruction. |
All other values are reserved
The reset behavior of this field is:
Reserved, RES0.
The following fields describe the configuration settings for the traps that are reported using EC value 0b101101 and ExType value 0b0010:
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 |
IDS | RES0 | ELS | WU | VFV | PFV | IESB | AET | EA | RES0 | WnRV | WnR | DFSC |
In earlier versions of the architecture, an SError exception is referred to as an SError interrupt or an asynchronous External abort exception.
IMPLEMENTATION DEFINED syndrome.
IDS | Meaning |
---|---|
0b0 | Bits [23:0] of the ISS field holds the fields described in this encoding. Note If FEAT_RAS is not implemented, bits [23:0] of the ISS field are RES0. |
0b1 |
Bits [23:0] of the ISS field holds IMPLEMENTATION DEFINED syndrome information that can be used to provide additional information about the SError exception. |
This field was previously called ISV.
The reset behavior of this field is:
Reserved, RES0.
Meaning of ELR_ELx.
ELS | Meaning |
---|---|
0b0 |
Asynchronous. Does not indicate the trigger for the exception. |
0b1 |
Synchronous. The exception was triggered by the instruction at ELR_ELx. |
SError exceptions that report this field is 1 are not required to be precise.
The ESR_EL2.AET field describes whether the exception is precise or imprecise.
Corrected, Recoverable or Restartable exceptions are precise. Unrecoverable or Uncontainable exceptions are imprecise.
The reset behavior of this field is:
Reserved, RES0.
Write Update. Describes whether a store instruction that generated an External abort updated the location.
WU | Meaning |
---|---|
0b00 |
Not a store instruction or translation table update, or the location might have been updated. |
0b10 |
Store instruction or translation table update that did not update the location. |
0b11 |
Store instruction or translation table update that updated the location. |
In the description of this field, a store instruction is any memory-writing instruction that explicitly performs a store. This includes instructions that both read and write memory.
The reset behavior of this field is:
Reserved, RES0.
FAR Valid. Indicates the FAR_EL2 register contains a valid virtual address.
VFV | Meaning |
---|---|
0b0 |
FAR_EL2 is not valid, and holds an UNKNOWN value. |
0b1 |
FAR_EL2 contains a valid virtual address associated with the error. |
The reset behavior of this field is:
Reserved, RES0.
FAR Valid. Describes whether the PFAR_EL2 is valid.
PFV | Meaning |
---|---|
0b0 |
PFAR_EL2 is UNKNOWN. |
0b1 |
PFAR_EL2 is valid. |
The reset behavior of this field is:
Reserved, RES0.
Implicit error synchronization event.
IESB | Meaning |
---|---|
0b0 |
The SError exception was either not synchronized by the implicit error synchronization event or not taken immediately. |
0b1 |
The SError exception was synchronized by the implicit error synchronization event and taken immediately. |
The reset behavior of this field is:
Reserved, RES0.
Asynchronous Error Type.
Describes the PE error state after taking the SError exception.
AET | Meaning |
---|---|
0b000 |
Uncontainable (UC). |
0b001 |
Unrecoverable state (UEU). |
0b010 |
Restartable state (UEO). |
0b011 |
Recoverable state (UER). |
0b110 |
Corrected (CE). |
All other values are reserved.
If multiple errors are taken as a single SError exception, the overall PE error state is reported.
Software can use this information to determine what recovery might be possible. The recovery software must also examine any implemented fault records to determine the location and extent of the error.
The reset behavior of this field is:
Reserved, RES0.
External abort type. Provides an IMPLEMENTATION DEFINED classification of External aborts.
The reset behavior of this field is:
Reserved, RES0.
Reserved, RES0.
ESR_EL2.WnR valid.
WnRV | Meaning |
---|---|
0b0 |
ESR_EL2.WnR is not valid and has been set to 0b0. |
0b1 |
ESR_EL2.WnR is valid. |
The reset behavior of this field is:
Reserved, RES0.
Write-not-Read. When the WnRV field is 0b1, indicates whether an exception was caused by an instruction writing to a memory location, or by an instruction reading from a memory location.
WnR | Meaning |
---|---|
0b0 |
Exception was caused by an instruction reading from a memory location. |
0b1 |
Exception was caused by an instruction writing to a memory location. |
Accessing this bit has the following behavior:
The reset behavior of this field is:
Reserved, RES0.
Data Fault Status Code.
DFSC | Meaning |
---|---|
0b000000 |
Uncategorized error. |
0b010001 |
Asynchronous SError exception. |
All other values are reserved.
The reset behavior of this field is:
Reserved, RES0.
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 | IFSC |
Reserved, RES0.
Instruction Fault Status Code.
IFSC | Meaning |
---|---|
0b100010 |
Debug exception. |
The reset behavior of this field is:
For more information about generating these exceptions:
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 |
ISV | RES0 | EX | IFSC |
Instruction syndrome valid. Indicates whether the EX bit, ISS[6], is valid, as follows:
ISV | Meaning |
---|---|
0b0 |
EX bit is RES0. |
0b1 |
EX bit is valid. |
See the EX bit description for more information.
The reset behavior of this field is:
Reserved, RES0.
Exclusive operation. If the ISV bit is set to 1, this bit indicates whether a Load-Exclusive instruction was stepped.
EX | Meaning |
---|---|
0b0 |
An instruction other than a Load-Exclusive instruction was stepped. |
0b1 |
A Load-Exclusive instruction was stepped. |
If the ISV bit is set to 0, this bit is RES0, indicating no syndrome data is available.
The reset behavior of this field is:
Instruction Fault Status Code.
IFSC | Meaning |
---|---|
0b100010 |
Debug exception. |
The reset behavior of this field is:
For more information about generating these exceptions, see 'Software Step exceptions'.
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 | WPT | WPTV | WPF | FnP | RES0 | VNCR | RES0 | FnV | RES0 | CM | RES0 | WnR | DFSC |
Reserved, RES0.
Watchpoint number.
All other values are reserved.
Reserved, RES0.
Watchpoint number Valid.
WPTV | Meaning |
---|---|
0b0 |
The WPT field is invalid, and holds an UNKNOWN value. |
0b1 |
The WPT field is valid, and holds the number of a watchpoint that triggered a Watchpoint exception. |
If FEAT_Debugv8p9 is implemented, value 0b0 is not permitted.
When a Watchpoint exception is triggered by a watchpoint match:
Reserved, RES0.
Watchpoint might be false-positive.
WPF | Meaning | Applies when |
---|---|---|
0b0 |
The watchpoint matched an address or address range that was accessed by the instruction. | |
0b1 |
The watchpoint matched an address or address range that might not have been accessed by the instruction. | When FEAT_SVE is implemented or FEAT_SME is implemented |
Arm strongly recommends that this bit is set to 0, other than when one of the following instructions might generate a watchpoint match for an address or address range that the instruction does not access:
FAR not Precise.
This field only has meaning if the FAR is valid; that is, when the FnV field is 0. If the FnV field is 1, the FnP field is 0.
FnP | Meaning | Applies when |
---|---|---|
0b0 |
If the FnV field is 0, the FAR holds the virtual address of an access or set of contiguous accesses that triggered a Watchpoint exception. | |
0b1 |
The FAR holds any address within the smallest implemented translation granule that contains the virtual address of an access or set of contiguous accesses that triggered a Watchpoint exception. | When FEAT_SVE is implemented or FEAT_SME is implemented |
Reserved, RES0.
Indicates that the watchpoint came from use of VNCR_EL2 register by EL1 code.
VNCR | Meaning | Applies when |
---|---|---|
0b0 |
The watchpoint was not generated by the use of VNCR_EL2 by EL1 code. | |
0b1 |
The watchpoint was generated by the use of VNCR_EL2 by EL1 code. | When FEAT_NV2 is implemented |
The reset behavior of this field is:
Reserved, RES0.
FAR not Valid.
FnV | Meaning | Applies when |
---|---|---|
0b0 |
The FAR is valid, and its value is as described by the FnP field. | |
0b1 |
The FAR is invalid, and holds an UNKNOWN value. | When FEAT_SVE is implemented or FEAT_SME is implemented |
Reserved, RES0.
Cache maintenance. Indicates whether the Watchpoint exception came from a cache maintenance instruction:
CM | Meaning |
---|---|
0b0 |
The Watchpoint exception was not generated by the execution of one of the System instructions identified in the description of value 1. |
0b1 |
The Watchpoint exception was generated by the execution of a cache maintenance instruction. The DC ZVA, DC GVA, and DC GZVA instructions are not classified as a cache maintenance instructions, and therefore their execution does not cause this field to be set to 1. |
The reset behavior of this field is:
Reserved, RES0.
Write not Read. Indicates whether the Watchpoint exception was caused by an instruction writing to a memory location, or by an instruction reading from a memory location.
WnR | Meaning |
---|---|
0b0 |
Watchpoint exception caused by an instruction reading from a memory location. |
0b1 |
Watchpoint exception caused by an instruction writing to a memory location. |
For Watchpoint exceptions on cache maintenance instructions, this bit always returns a value of 1.
For Watchpoint exceptions from an atomic instruction, this field is set to 0 if a read of the location would have generated the Watchpoint exception, otherwise it is set to 1.
If multiple watchpoints match on the same access, it is UNPREDICTABLE which watchpoint generates the Watchpoint exception.
The reset behavior of this field is:
Data Fault Status Code.
DFSC | Meaning |
---|---|
0b100010 |
Debug exception. |
The reset behavior of this field is:
For more information about generating these exceptions, see 'Watchpoint exceptions'.
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 | Comment |
Reserved, RES0.
Set to the instruction comment field value, zero extended as necessary.
For the AArch32 BKPT instructions, the comment field is described as the immediate field.
The reset behavior of this field is:
For more information about generating these exceptions, see 'Breakpoint instruction exceptions'.
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 | ERET | ERETA |
This EC value applies when FEAT_FGT is implemented, or when the Effective value of HCR_EL2.NV is 1.
Reserved, RES0.
Indicates whether an ERET or ERETA* instruction was trapped to EL2.
ERET | Meaning |
---|---|
0b0 |
ERET instruction trapped to EL2. |
0b1 |
ERETAA or ERETAB instruction trapped to EL2. |
If this bit is 0, the ERETA field is RES0.
The reset behavior of this field is:
Indicates whether an ERETAA or ERETAB instruction was trapped to EL2.
ERETA | Meaning |
---|---|
0b0 |
ERETAA instruction trapped to EL2. |
0b1 |
ERETAB instruction trapped to EL2. |
When the ERET field is 0, this bit is RES0.
The reset behavior of this field is:
For more information about generating these exceptions, see HCR_EL2.NV.
If FEAT_FGT is implemented, HFGITR_EL2.ERET controls fine-grained trap exceptions from ERET, ERETAA and ERETAB execution.
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 | Rd | RES0 |
Reserved, RES0.
The Rd value from the issued instruction, the general purpose register used for the destination.
Reserved, RES0.
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 | BTYPE |
Reserved, RES0.
This field is set to the PSTATE.BTYPE value that generated the Branch Target Exception.
For more information about generating these exceptions, see 'The AArch64 application level programmers model'.
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 |
Reserved, RES0.
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 | Exception as a result of an Instruction key or a Data key | Exception as a result of an A key or a B key |
Reserved, RES0.
This field indicates whether the exception is as a result of an Instruction key or a Data key.
Meaning | |
---|---|
0b0 |
Instruction Key. |
0b1 |
Data Key. |
The reset behavior of this field is:
This field indicates whether the exception is as a result of an A key or a B key.
Meaning | |
---|---|
0b0 |
A key. |
0b1 |
B key. |
The reset behavior of this field is:
The following instructions generate a PAC Fail exception when the Pointer Authentication Code (PAC) is incorrect:
If FEAT_FPACCOMBINE is implemented, the following instructions generate a PAC Fail exception when the Pointer Authentication Code (PAC) is incorrect:
When the Effective value of HCR_EL2.E2H is 1, without explicit synchronization, accesses from EL2 using the accessor name ESR_EL2 or ESR_EL1 are not guaranteed to be ordered with respect to accesses using the other accessor name.
Accesses to this register use the following encodings in the System register encoding space:
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b100 | 0b0101 | 0b0010 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'1x1'} then X[t, 64] = ESR_EL1; elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then X[t, 64] = ESR_EL2; elsif PSTATE.EL == EL3 then X[t, 64] = ESR_EL2;
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b100 | 0b0101 | 0b0010 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'1x1'} then ESR_EL1 = X[t, 64]; elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then ESR_EL2 = X[t, 64]; elsif PSTATE.EL == EL3 then ESR_EL2 = X[t, 64];
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b0101 | 0b0010 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2.TRVM == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT) && (!HaveEL(EL3) || SCR_EL3.FGTEn == '1') && HFGRTR_EL2.ESR_EL1 == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EffectiveHCR_EL2_NVx() IN {'111'} then X[t, 64] = NVMem[0x138]; else X[t, 64] = ESR_EL1; elsif PSTATE.EL == EL2 then if ELIsInHost(EL2) then X[t, 64] = ESR_EL2; else X[t, 64] = ESR_EL1; elsif PSTATE.EL == EL3 then X[t, 64] = ESR_EL1;
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b0101 | 0b0010 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2.TVM == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT) && (!HaveEL(EL3) || SCR_EL3.FGTEn == '1') && HFGWTR_EL2.ESR_EL1 == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EffectiveHCR_EL2_NVx() IN {'111'} then NVMem[0x138] = X[t, 64]; else ESR_EL1 = X[t, 64]; elsif PSTATE.EL == EL2 then if ELIsInHost(EL2) then ESR_EL2 = X[t, 64]; else ESR_EL1 = X[t, 64]; elsif PSTATE.EL == EL3 then ESR_EL1 = X[t, 64];
26/03/2024 09:49; 67c0ae5282a7629ba0ea0ba7267b43cd4f7939f6
Copyright © 2010-2024 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.