u-boot/arch/arm
Andre Przywara 7ed340a828 armv8: Force SP_ELx stack pointer usage
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 <andre.przywara@arm.com>
2022-03-02 13:59:29 -05:00
..
cpu armv8: Force SP_ELx stack pointer usage 2022-03-02 13:59:29 -05:00
dts Merge branch '2022-02-21-platform-updates' 2022-02-21 08:53:24 -05:00
include armv8: Always unmask SErrors 2022-03-02 13:59:29 -05:00
lib efi_loader: fix SectionAlignment, FileAlignment 2022-01-15 10:57:22 +01:00
mach-apple arm: apple: Switch to fully dynamic mem layout 2022-02-28 10:33:45 -05:00
mach-aspeed ast2600: spl: Locate load buffer in DRAM space 2021-11-17 17:05:00 -05:00
mach-at91 Convert CONFIG_AT91_EFLASH to Kconfig 2022-01-21 14:01:35 -05:00
mach-bcm283x doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
mach-bcmstb
mach-cortina
mach-davinci Finish conversion of CONFIG_SYS_CLK_FREQ to Kconfig 2021-12-27 16:20:18 -05:00
mach-exynos Pull request doc-2022-04-rc1 2022-01-20 09:39:45 -05:00
mach-highbank
mach-imx imx8m: Drop unused function env_get_offset 2022-02-19 14:46:54 +01:00
mach-integrator
mach-ipq40xx
mach-k3 arm: j721e: Add support for selecting DT based on board name 2022-02-16 14:19:30 -05:00
mach-keystone arch/arm/mach-keystone/ddr3.c: Fix spelling of "resetting". 2022-01-13 07:57:50 -05:00
mach-kirkwood Convert CONFIG_SYS_IDE_MAXBUS et al to Kconfig 2022-02-09 09:16:47 -05:00
mach-lpc32xx
mach-mediatek arm: mediatek: merge board Kconfigs into mach-mediatek 2021-09-23 14:15:32 -04:00
mach-meson ARM: amlogic: add sm efuse write support and cmd for read/write efuse 2021-10-29 14:06:45 +02:00
mach-mvebu arm: mvebu: spl: Add option to reset the board on DDR training failure 2022-02-17 14:17:07 +01:00
mach-nexell Convert CONFIG_CONS_INDEX et al to Kconfig 2021-12-27 08:41:38 -05:00
mach-octeontx Convert CONFIG_SYS_PCI_64BIT to Kconfig 2021-12-27 16:20:17 -05:00
mach-octeontx2 Convert CONFIG_SYS_PCI_64BIT to Kconfig 2021-12-27 16:20:17 -05:00
mach-omap2 arm: omap3: Make some memory functions static and clean headers 2022-02-21 08:35:40 -05:00
mach-orion5x Convert CONFIG_88F5182 et al to Kconfig 2021-12-27 16:20:19 -05:00
mach-owl
mach-qemu
mach-rmobile ARM: rmobile: beacon: Enable reference clocks for USB and AVB 2021-10-29 21:52:20 +02:00
mach-rockchip - disable CONFIG_NET_RANDOM_ETHADDR when unnecessary on amlogic based configs 2022-01-09 07:56:31 -05:00
mach-s5pc1xx doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
mach-snapdragon board: samsung: add Samsung Galaxy S9/S9+(SM-G96x0) board 2021-10-31 11:25:38 -04:00
mach-socfpga arm: socfpga: arria10: Enable double peripheral RBF configuration 2021-12-17 12:58:01 +08:00
mach-sti
mach-stm32 serial: Rename SERIAL_SUPPORT to SERIAL 2021-09-04 12:26:01 -04:00
mach-stm32mp configs: stm32mp15: Enable OF_BOARD flag 2022-01-24 11:03:21 +01:00
mach-sunxi mach-sunxi: Add support for SUNIV architecture 2022-02-04 00:09:57 +00:00
mach-tegra Merge https://source.denx.de/u-boot/custodians/u-boot-marvell 2022-01-20 12:40:20 -05:00
mach-u8500 board: stemmy: Update documentation 2021-09-01 19:25:37 -04:00
mach-uniphier mmc: Rename MMC_SUPPORT to MMC 2021-09-04 11:42:41 -04:00
mach-versal xilinx: Remove GPIO_EXTRA_HEADER selection 2022-02-15 13:06:13 +01:00
mach-versatile WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
mach-zynq ARM: zynq: Fix debug uart initialization 2022-02-21 13:20:24 +01:00
mach-zynqmp arm64: zynqmp: Fix debug uart initialization 2022-02-21 13:20:29 +01:00
mach-zynqmp-r5 Convert CONFIG_CPU_FREQ_HZ to Kconfig 2021-12-27 16:20:19 -05:00
thumb1/include/asm/proc-armv
config.mk ARM: Prevent the compiler from using NEON registers 2021-09-02 11:19:58 -04:00
Kconfig Xilinx changes for v2022.04-rc3 2022-02-21 08:32:02 -05:00
Kconfig.debug
Makefile arm: apple: Add initial support for Apple's M1 SoC 2021-10-31 08:46:44 -04:00