
This is fairly easy to use. The SPL loader sets up some fields in the spl_image_info struct and calls spl_reloc_prepare(). When SPL is ready to do the jump it must call spl_reloc_jump() instead of jump_to_image().
Add this logic.
Signed-off-by: Simon Glass sjg@chromium.org ---
common/spl/spl.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/common/spl/spl.c b/common/spl/spl.c index 52f7900b431..d01e9861f88 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -829,6 +829,18 @@ void board_init_r(gd_t *dummy1, ulong dummy2) }
spl_board_prepare_for_boot(); + + if (CONFIG_IS_ENABLED(RELOC_LOADER)) { + int ret; + + ret = spl_reloc_jump(&spl_image, jump_to_image); + if (ret) { + if (spl_phase() == PHASE_VPL) + printf("jump failed %d\n", ret); + hang(); + } + } + jump_to_image(&spl_image); }