u-boot/arch/arm/cpu/armv7
Andre Przywara ba6a169811 ARM: add SMP support for non-secure switch
Currently the non-secure switch is only done for the boot processor.
To enable full SMP support, we have to switch all secondary cores
into non-secure state also.

So we add an entry point for secondary CPUs coming out of low-power
state and make sure we put them into WFI again after having switched
to non-secure state.
For this we acknowledge and EOI the wake-up IPI, then go into WFI.
Once being kicked out of it later, we sanity check that the start
address has actually been changed (since another attempt to switch
to non-secure would block the core) and jump to the new address.

The actual CPU kick is done by sending an inter-processor interrupt
via the GIC to all CPU interfaces except the requesting processor.
The secondary cores will then setup their respective GIC CPU
interface.
While this approach is pretty universal across several ARMv7 boards,
we make this function weak in case someone needs to tweak this for
a specific board.

The way of setting the secondary's start address is board specific,
but mostly different only in the actual SMP pen address, so we also
provide a weak default implementation and just depend on the proper
address to be set in the config file.

Signed-off-by: Andre Przywara <andre.przywara@linaro.org>
2013-10-03 21:28:51 +02:00
..
am33xx am335x:Handle worst case scenario for Errata 1.0.24 2013-09-20 16:57:40 -04:00
at91 arm: atmel: add gmac support for sama5d3xek board 2013-08-22 16:49:54 +02:00
exynos Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
highbank Merge branch 'u-boot/master' into u-boot-arm/master 2013-07-25 17:57:46 +02:00
mx5 usb: ehci-mx5: Use 'bool' instead of 'unsigned char' 2013-08-26 21:56:34 +02:00
mx6 mx6: Fix use of improper value in enable_ipu_clock 2013-09-27 13:53:35 +02:00
omap3 arm: omap3: fix SRAM copy and execution sequence 2013-08-28 11:44:58 -04:00
omap4 ARM: OMAP4470: Add Elpida EDB8164B3PF memory configuration 2013-08-28 11:44:58 -04:00
omap5 ARM: OMAP5: Avoid writing into LDO SRAM bits 2013-09-20 16:57:40 -04:00
omap-common ARM: OMAP5: Avoid writing into LDO SRAM bits 2013-09-20 16:57:40 -04:00
rmobile ARM: refactor compiler options in config.mk 2013-09-23 17:03:05 +02:00
s5p-common Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
s5pc1xx Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
socfpga socfpga: Creating driver for Reset Manager 2013-09-06 12:09:06 +02:00
tegra20 config: don't define CONFIG_ARCH_DEVICE_TREE 2013-08-02 18:30:11 -04:00
tegra30 config: don't define CONFIG_ARCH_DEVICE_TREE 2013-08-02 18:30:11 -04:00
tegra114 config: don't define CONFIG_ARCH_DEVICE_TREE 2013-08-02 18:30:11 -04:00
tegra-common Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
u8500 Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
vf610 Merge branch 'master' of git://git.denx.de/u-boot-i2c 2013-07-24 09:50:24 -04:00
zynq arm: zynq: Fix timer loadaddress 2013-09-23 16:26:32 +02:00
cache_v7.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
config.mk ARM: refactor compiler options in config.mk 2013-09-23 17:03:05 +02:00
cpu.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
lowlevel_init.S ARM: use r9 for gd 2013-09-23 18:00:02 +02:00
Makefile ARM: add C function to switch to non-secure state 2013-10-03 21:28:43 +02:00
nonsec_virt.S ARM: add SMP support for non-secure switch 2013-10-03 21:28:51 +02:00
start.S Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
syslib.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
virt-v7.c ARM: add SMP support for non-secure switch 2013-10-03 21:28:51 +02:00