mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-30 00:21:06 +00:00
Exynos542x: Make A7s boot with thumb-mode U-Boot on warm reset
On warm reset, all cores jump to the low_power_start function because iRAM data is retained and because while executing iROM code all cores find the jump flag 0x02020028 set. In low_power_start, cores check the reset status and if true they clear the jump flag and jump back to 0x0. The A7 cores do jump to 0x0 but consider following instructions as a Thumb instructions which in turn makes them loop inside the iROM code instead of jumping to power_down_core. This issue is fixed by replacing the "mov pc" instruction with a "bx" instruction which switches state along with the jump to make the execution unit consider the branch target as an ARM instruction. Signed-off-by: Akshay Saraswat <akshay.s@samsung.com> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
parent
cecf2db23b
commit
c8fd8e66cd
1 changed files with 1 additions and 1 deletions
|
@ -103,7 +103,7 @@ static void low_power_start(void)
|
|||
reg_val = readl(EXYNOS5420_SPARE_BASE);
|
||||
if (reg_val != CPU_RST_FLAG_VAL) {
|
||||
writel(0x0, CONFIG_LOWPOWER_FLAG);
|
||||
set_pc(0x0);
|
||||
branch_bx(0x0);
|
||||
}
|
||||
|
||||
reg_val = readl(CONFIG_PHY_IRAM_BASE + 0x4);
|
||||
|
|
Loading…
Reference in a new issue