spl: add __noreturn attribute to spl_invoke_opensbi function
authorChanho Park <chanho61.park@samsung.com>
Tue, 29 Aug 2023 01:20:14 +0000 (10:20 +0900)
committerLeo Yu-Chi Liang <ycliang@andestech.com>
Tue, 5 Sep 2023 02:53:51 +0000 (10:53 +0800)
spl_invoke_opensbi function is not returned to SPL. Thus, we need to
set __noreturn function attribute.

Signed-off-by: Chanho Park <chanho61.park@samsung.com>
Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
common/spl/spl_opensbi.c
include/spl.h

index b0f4007..e2aaa46 100644 (file)
@@ -43,11 +43,12 @@ static int spl_opensbi_find_uboot_node(void *blob, int *uboot_node)
        return -ENODEV;
 }
 
-void spl_invoke_opensbi(struct spl_image_info *spl_image)
+void __noreturn spl_invoke_opensbi(struct spl_image_info *spl_image)
 {
        int ret, uboot_node;
        ulong uboot_entry;
-       void (*opensbi_entry)(ulong hartid, ulong dtb, ulong info);
+       typedef void __noreturn (*opensbi_entry_t)(ulong hartid, ulong dtb, ulong info);
+       opensbi_entry_t opensbi_entry;
 
        if (!spl_image->fdt_addr) {
                pr_err("No device tree specified in SPL image\n");
@@ -74,7 +75,7 @@ void spl_invoke_opensbi(struct spl_image_info *spl_image)
        opensbi_info.options = CONFIG_SPL_OPENSBI_SCRATCH_OPTIONS;
        opensbi_info.boot_hart = gd->arch.boot_hart;
 
-       opensbi_entry = (void (*)(ulong, ulong, ulong))spl_image->entry_point;
+       opensbi_entry = (opensbi_entry_t)spl_image->entry_point;
        invalidate_icache_all();
 
 #ifdef CONFIG_SPL_SMP
index 92bcaa9..93e9064 100644 (file)
@@ -862,7 +862,7 @@ void __noreturn spl_optee_entry(void *arg0, void *arg1, void *arg2, void *arg3);
 /**
  * spl_invoke_opensbi - boot using a RISC-V OpenSBI image
  */
-void spl_invoke_opensbi(struct spl_image_info *spl_image);
+void __noreturn spl_invoke_opensbi(struct spl_image_info *spl_image);
 
 /**
  * board_return_to_bootrom - allow for boards to continue with the boot ROM