mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-11-29 06:31:28 +01:00
riscv: boot images passed to bootm on all harts
Signed-off-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de> Reviewed-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
3dea63c844
commit
f28ad250e6
@ -13,6 +13,7 @@
|
|||||||
#include <image.h>
|
#include <image.h>
|
||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
#include <asm/csr.h>
|
#include <asm/csr.h>
|
||||||
|
#include <asm/smp.h>
|
||||||
#include <dm/device.h>
|
#include <dm/device.h>
|
||||||
#include <dm/root.h>
|
#include <dm/root.h>
|
||||||
#include <u-boot/zlib.h>
|
#include <u-boot/zlib.h>
|
||||||
@ -81,6 +82,9 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
|
|||||||
{
|
{
|
||||||
void (*kernel)(ulong hart, void *dtb);
|
void (*kernel)(ulong hart, void *dtb);
|
||||||
int fake = (flag & BOOTM_STATE_OS_FAKE_GO);
|
int fake = (flag & BOOTM_STATE_OS_FAKE_GO);
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
int ret;
|
||||||
|
#endif
|
||||||
|
|
||||||
kernel = (void (*)(ulong, void *))images->ep;
|
kernel = (void (*)(ulong, void *))images->ep;
|
||||||
|
|
||||||
@ -92,8 +96,15 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
|
|||||||
announce_and_cleanup(fake);
|
announce_and_cleanup(fake);
|
||||||
|
|
||||||
if (!fake) {
|
if (!fake) {
|
||||||
if (IMAGE_ENABLE_OF_LIBFDT && images->ft_len)
|
if (IMAGE_ENABLE_OF_LIBFDT && images->ft_len) {
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
ret = smp_call_function(images->ep,
|
||||||
|
(ulong)images->ft_addr, 0);
|
||||||
|
if (ret)
|
||||||
|
hang();
|
||||||
|
#endif
|
||||||
kernel(gd->arch.boot_hart, images->ft_addr);
|
kernel(gd->arch.boot_hart, images->ft_addr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user