rockchip: spl: RK3399: use boot0 hook to create space for SPL magic
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Wed, 15 Mar 2017 11:08:44 +0000 (12:08 +0100)
committerSimon Glass <sjg@chromium.org>
Wed, 5 Apr 2017 02:01:57 +0000 (20:01 -0600)
commit3d54eabcafec9c232751dc717eabad4a18c0dd86
treef89b7ed2f19f7689370bd28e643ceac55d1901ec
parent111bcc4fb6cb4a519daabf4812f3ce77f002352f
rockchip: spl: RK3399: use boot0 hook to create space for SPL magic

The SPL binary needs to be prefixed with the boot magic ('RK33' for
the RK3399) on the Rockchip platform and starts execution of the
instruction word following immediately after this boot magic.

This poses a challenge for AArch64 (ARMv8) binaries, as the .text
section would need to start on the odd address, violating natural
alignment (and potentially triggering a fault for any code that
tries to access 64bit values embedded in the .text section).

A quick and easy fix is to have the .text section include the 'RK33'
magic and pad it with a boot0 hook to insert 4 bytes of padding at the
start of the section (with the intention of having mkimage overwrite
this padding with the appropriate boot magic). This avoids having to
modify the linker scripts or more complex logic in mkimage.

X-AffectedPlatforms: RK3399-Q7
Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Tested-by: Klaus Goger <klaus.goger@theobroma-systems.com>
arch/arm/include/asm/arch-rockchip/boot0.h [new file with mode: 0644]
arch/arm/mach-rockchip/Kconfig
include/configs/rk3399_common.h