The SP_EL0 characteristics are:
Holds the stack pointer associated with EL0. At higher Exception levels, this is used as the current stack pointer when the value of SPSel.SP is 0.
There are no configuration notes.
SP_EL0 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 |
| StackPointer | |||||||||||||||||||||||||||||||
| StackPointer | |||||||||||||||||||||||||||||||
Stack pointer.
The reset behavior of this field is:
When the value of PSTATE.SP is 0, this register is accessible at all Exception levels as the current stack pointer.
Accesses to this register use the following encodings in the System register encoding space:
| op0 | op1 | CRn | CRm | op2 |
|---|---|---|---|---|
| 0b11 | 0b000 | 0b0100 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if PSTATE.SP == '0' then UNDEFINED; else X[t, 64] = SP_EL0; elsif PSTATE.EL == EL2 then if PSTATE.SP == '0' then UNDEFINED; else X[t, 64] = SP_EL0; elsif PSTATE.EL == EL3 then if PSTATE.SP == '0' then UNDEFINED; else X[t, 64] = SP_EL0;
| op0 | op1 | CRn | CRm | op2 |
|---|---|---|---|---|
| 0b11 | 0b000 | 0b0100 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if PSTATE.SP == '0' then UNDEFINED; else SP_EL0 = X[t, 64]; elsif PSTATE.EL == EL2 then if PSTATE.SP == '0' then UNDEFINED; else SP_EL0 = X[t, 64]; elsif PSTATE.EL == EL3 then if PSTATE.SP == '0' then UNDEFINED; else SP_EL0 = X[t, 64];
19/09/2024 21:50; f38fb98db05c9431684175106ec86e1bac8166e3
Copyright © 2010-2024 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.