diff options
author | Clement Leger <cleger@kalray.eu> | 2020-06-12 09:10:36 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2020-06-15 16:15:21 +0200 |
commit | 5fe555384c2b4e0edd9a11f55c4953b09b196637 (patch) | |
tree | d0acb4bc7a993d4f61823cdd8924f1c84afedb12 /arch/mips | |
parent | 76c161b367ad78ed6212f46f547b1781939b6cc2 (diff) | |
download | barebox-5fe555384c2b4e0edd9a11f55c4953b09b196637.tar.gz barebox-5fe555384c2b4e0edd9a11f55c4953b09b196637.tar.xz |
mips: lib: bootm: use bootm elf loading capabilities
Now that the elf file is loaded by the bootm core, there is no need for
elf pointer anymore. Thus all elf related fields can be removed and
bootm_load_os can be used.
Signed-off-by: Clement Leger <cleger@kalray.eu>
Tested-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/lib/bootm.c | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c index 8e16994b62..6c56202ea9 100644 --- a/arch/mips/lib/bootm.c +++ b/arch/mips/lib/bootm.c @@ -46,41 +46,35 @@ static struct binfmt_hook binfmt_barebox_hook = { static int do_bootm_elf(struct image_data *data) { void (*entry)(int, void *); - struct elf_image *elf; void *fdt; int ret = 0; - elf = elf_open(data->os_file); - if (IS_ERR(elf)) - return PTR_ERR(elf); - - ret = elf_load(elf); + ret = bootm_load_os(data, data->os_address); if (ret) - goto bootm_elf_done; + return ret; fdt = bootm_get_devicetree(data); if (IS_ERR(fdt)) { ret = PTR_ERR(fdt); - goto bootm_elf_done; + goto bootm_free_fdt; } pr_info("Starting application at 0x%08lx, dts 0x%08lx...\n", - phys_to_virt(elf->entry), data->of_root_node); + phys_to_virt(data->os_address), data->of_root_node); if (data->dryrun) - goto bootm_elf_done; + goto bootm_free_fdt; shutdown_barebox(); - entry = (void *) (unsigned long) elf->entry; + entry = (void *) (unsigned long) data->os_address; entry(-2, phys_to_virt((unsigned long)fdt)); pr_err("ELF application terminated\n"); ret = -EINVAL; -bootm_elf_done: - elf_close(elf); +bootm_free_fdt: free(fdt); return ret; |