spl: Plumb in the relocating loader

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>
This commit is contained in:
Simon Glass
2025-01-15 18:27:20 -07:00
parent 77bc49a5a0
commit caaccca74b
2 changed files with 13 additions and 0 deletions

View File

@@ -826,6 +826,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 (xpl_phase() == PHASE_VPL)
printf("jump failed %d\n", ret);
hang();
}
}
jump_to_image(&spl_image);
}

View File

@@ -414,6 +414,7 @@ static inline void spl_load_init(struct spl_load_info *load,
load->read = h_read;
load->priv = priv;
spl_set_bl_len(load, bl_len);
xpl_set_phase(load, IH_PHASE_NONE);
}
/*