booti/bootm: riscv: Verify image arch type
Unlike ARM and X86, booting 32-bit images on 64-bit CPUs is currently not supported for Risc-V. Hence, for bootm, disallow booting a FIT or a legacy image that was built for an arch type which is different than the current arch and for booti, set the arch type to be the same as the current arch. Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:

committed by
Leo Yu-Chi Liang

parent
027a316828
commit
37b0b22d8b
@@ -90,6 +90,10 @@ static void boot_jump_linux(struct bootm_headers *images, int flag)
|
||||
announce_and_cleanup(fake);
|
||||
|
||||
if (!fake) {
|
||||
if (images->os.arch != IH_ARCH_DEFAULT) {
|
||||
printf("Image arch not compatible with host arch.\n");
|
||||
hang();
|
||||
}
|
||||
if (CONFIG_IS_ENABLED(OF_LIBFDT) && images->ft_len) {
|
||||
#ifdef CONFIG_SMP
|
||||
ret = smp_call_function(images->ep,
|
||||
|
@@ -130,8 +130,11 @@ int do_booti(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
|
||||
bootm_disable_interrupts();
|
||||
|
||||
images.os.os = IH_OS_LINUX;
|
||||
if (IS_ENABLED(CONFIG_RISCV_SMODE))
|
||||
images.os.arch = IH_ARCH_RISCV;
|
||||
if (IS_ENABLED(CONFIG_RISCV))
|
||||
if (IS_ENABLED(CONFIG_64BIT))
|
||||
images.os.arch = IH_ARCH_RISCV64;
|
||||
else
|
||||
images.os.arch = IH_ARCH_RISCV;
|
||||
else if (IS_ENABLED(CONFIG_ARM64))
|
||||
images.os.arch = IH_ARCH_ARM64;
|
||||
|
||||
|
Reference in New Issue
Block a user