[PATCH 10/19] spl: Plumb in the relocating loader

Simon Glass
2024-09-25T12:59:56Z

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);
}

--
2.43.0