ESR_EL1
64-bitTrapThe syndrome register: why the exception happened. A handler reads EC to learn the class of exception, then interprets ISS, whose layout depends entirely on that class. IL records whether the faulting instruction was 32 or 64 bits, which is the first thing to check when stepping through an unknown exception.
ISS means something different for every EC value -- there are 35 layouts for 35 classes -- so a handler must switch on EC before trusting the field. All 35 are decoded, by src/lib/esr.ts, from a table generated from an independent decoder and checked against it on every run.
Field layout
Current value hover a field to locate it
Fields
| Bits | Field | Bits | Value | Description |
|---|---|---|---|---|
| 63:32 | — | 32 | Not assigned to a documented field. Values written here are reserved and should be treated as read-as-zero unless the architecture says otherwise. | |
| 31:26 | EC[31:26] | 6 | Exception class. The high-level summary of the cause: an instruction abort, a data abort, a system call, a breakpoint. Everything else in the register is read through this, because ISS means something different for each class.
| |
| 25 | IL[25] | 1 | Instruction length. Set means the faulting instruction was a 32-bit AArch32 instruction, clear means it was an AArch64 instruction.
| |
| 24:0 | ISS[24:0] | 25 | 0x0 (0) | Instruction specific syndrome. Its layout is chosen by EC. For a data abort it holds the faulting address's page table entry fields and the fault status code; for an exception generated by a system register it holds the register's five op encoding fields, letting a handler identify which register was touched. |