SVC: Difference between revisions
Line 2,099: | Line 2,099: | ||
| 0x0 || 0x148 || Exception stack | | 0x0 || 0x148 || Exception stack | ||
|- | |- | ||
| 0x148 || 0x78 || | | 0x148 || 0x78 || ExceptionFrameA64 | ||
afsr0 | |} | ||
ExceptionFrameA64: | |||
{| class=wikitable | |||
! Offset || Length || Description | |||
|- | |||
| 0x0 || 0x48 (8*9) || GPRs 0..8. | |||
|- | |||
| 0x48 || 0x8 || lr | |||
|- | |||
| 0x50 || 0x8 || sp | |||
|- | |||
| 0x58 || 0x8 || pc (elr_el1) | |||
|- | |||
| 0x60 || 0x4 || pstate & 0xFF0FFE20 | |||
|- | |||
| 0x64 || 0x4 || afsr0 | |||
|- | |||
| 0x68 || 0x4 || afsr1 | |||
|- | |||
| 0x6C || 0x4 || esr | |||
|- | |||
| 0x70 || 0x8 || far | |||
|} | |} | ||
Line 2,110: | Line 2,133: | ||
| 0x0 || 0x178 || Exception stack | | 0x0 || 0x178 || Exception stack | ||
|- | |- | ||
| 0x148 || | | 0x148 || 0x44 || ExceptionFrameA32 | ||
|} | |} | ||
ExceptionFrameA32: | |||
{| class=wikitable | |||
! Offset || Length || Description | |||
|- | |||
| 0x0 || 0x20 (8*4) || GPRs 0..7. | |||
|- | |||
| 0x20 || 0x4 || sp | |||
|- | |||
| 0x24 || 0x4 || lr | |||
|- | |||
| 0x28 || 0x4 || pc (elr_el1) | |||
|- | |||
| 0x2C || 0x4 || tpidr_el0 = 1 | |||
|- | |||
| 0x30 || 0x4 || cpsr & 0xFF0FFE20 | |||
|- | |||
| 0x34 || 0x4 || afsr0 | |||
|- | |||
| 0x38 || 0x4 || afsr1 | |||
|- | |||
| 0x3C || 0x4 || esr | |||
|- | |||
| 0x40 || 0x4 || far | |||
|} | |||
In that case, after storing the regs in the TLS, the exception handler returns to the application's crt0 (entrypoint), with X0=<error description code> (see below) and X1=SP=frame=<stack top> (see above) | In that case, after storing the regs in the TLS, the exception handler returns to the application's crt0 (entrypoint), with X0=<error description code> (see below) and X1=SP=frame=<stack top> (see above) |