diff options
Diffstat (limited to 'board/renesas/common/rcar64-spl.c')
-rw-r--r-- | board/renesas/common/rcar64-spl.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/board/renesas/common/rcar64-spl.c b/board/renesas/common/rcar64-spl.c new file mode 100644 index 00000000000..76f2bde924e --- /dev/null +++ b/board/renesas/common/rcar64-spl.c @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2024 Marek Vasut <marek.vasut+renesas@mailbox.org> + */ + +#include <image.h> +#include <spl.h> + +void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image) +{ + debug("image entry point: 0x%lx\n", spl_image->entry_point); + if (spl_image->os == IH_OS_ARM_TRUSTED_FIRMWARE) { + typedef void (*image_entry_arg_t)(int, int, int, int) + __attribute__ ((noreturn)); + image_entry_arg_t image_entry = + (image_entry_arg_t)(uintptr_t) spl_image->entry_point; + image_entry(IH_MAGIC, CONFIG_SPL_TEXT_BASE, 0, 0); + } else { + typedef void __noreturn (*image_entry_noargs_t)(void); + image_entry_noargs_t image_entry = + (image_entry_noargs_t)spl_image->entry_point; + image_entry(); + } +} |