On Fri, Feb 11, 2022 at 11:29:36AM +0000, Andre Przywara wrote: > In ARMv8 we have the choice between two stack pointers to use: SP_EL0 or > SP_ELx, which is banked per exception level. This choice is stored in > the SP field of PState, and can be read and set via the SPSel special > register. When the CPU takes an exception, it automatically switches to > the SP_ELx stack pointer. > > Trusted Firmware enters U-Boot typically with SPSel set to 1, so we use > SP_ELx all along as our sole stack pointer, both for normal operation and > for exceptions. > > But if we now for some reason enter U-Boot with SPSel cleared, we will > setup and use SP_EL0, which is fine, but leaves SP_ELx uninitialised. > When we now take an exception, we try to save the GPRs to some undefined > location, which will usually end badly. > > To make sure we always have SP_ELx pointing to some memory, set SPSel > to 1 in the early boot code, to ensure safe operation at all times. > > Signed-off-by: Andre Przywara Applied to u-boot/next, thanks! -- Tom