Blame view
cmd/booti.c
3.04 KB
5db28905c cmd: Split 'bootz... |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* * (C) Copyright 2000-2009 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * SPDX-License-Identifier: GPL-2.0+ */ #include <common.h> #include <bootm.h> #include <command.h> #include <image.h> #include <lmb.h> #include <mapmem.h> |
280857649 arm64: booti: all... |
14 15 |
#include <linux/kernel.h> #include <linux/sizes.h> |
5db28905c cmd: Split 'bootz... |
16 17 |
DECLARE_GLOBAL_DATA_PTR; |
5db28905c cmd: Split 'bootz... |
18 19 20 21 22 23 24 |
/* * Image booting support */ static int booti_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], bootm_headers_t *images) { int ret; |
6808ef9ac move booti_setup ... |
25 26 27 |
ulong ld; ulong relocated_addr; ulong image_size; |
5db28905c cmd: Split 'bootz... |
28 29 30 31 32 33 |
ret = do_bootm_states(cmdtp, flag, argc, argv, BOOTM_STATE_START, images, 1); /* Setup Linux kernel Image entry point */ if (!argc) { |
6808ef9ac move booti_setup ... |
34 |
ld = load_addr; |
5db28905c cmd: Split 'bootz... |
35 36 37 38 |
debug("* kernel: default image load address = 0x%08lx ", load_addr); } else { |
6808ef9ac move booti_setup ... |
39 |
ld = simple_strtoul(argv[0], NULL, 16); |
bf14d9a7e cmd: booti: fix i... |
40 41 |
debug("* kernel: cmdline image address = 0x%08lx ", ld); |
5db28905c cmd: Split 'bootz... |
42 |
} |
6808ef9ac move booti_setup ... |
43 |
ret = booti_setup(ld, &relocated_addr, &image_size); |
5db28905c cmd: Split 'bootz... |
44 45 |
if (ret != 0) return 1; |
17a0dd734 [iot] Enable HAB ... |
46 |
#if defined(CONFIG_SECURE_BOOT) && !defined(CONFIG_AVB_SUPPORT) |
1e33f493a MLK-17044-3 booti... |
47 48 49 50 51 52 53 54 55 |
extern int authenticate_image( uint32_t ddr_start, uint32_t raw_image_size); if (authenticate_image(ld, image_size) != 0) { printf("Authenticate Image Fail, Please check "); return 1; } #endif |
6808ef9ac move booti_setup ... |
56 57 58 59 60 61 |
/* Handle BOOTM_STATE_LOADOS */ if (relocated_addr != ld) { debug("Moving Image from 0x%lx to 0x%lx ", ld, relocated_addr); memmove((void *)relocated_addr, (void *)ld, image_size); } |
5db28905c cmd: Split 'bootz... |
62 |
|
6808ef9ac move booti_setup ... |
63 64 |
images->ep = relocated_addr; lmb_reserve(&images->lmb, images->ep, le32_to_cpu(image_size)); |
5db28905c cmd: Split 'bootz... |
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
/* * Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not * have a header that provide this informaiton. */ if (bootm_find_images(flag, argc, argv)) return 1; return 0; } int do_booti(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int ret; /* Consume 'booti' */ argc--; argv++; if (booti_start(cmdtp, flag, argc, argv, &images)) return 1; /* * We are doing the BOOTM_STATE_LOADOS state ourselves, so must * disable interrupts ourselves */ bootm_disable_interrupts(); images.os.os = IH_OS_LINUX; |
0fff19a67 booti: Set images... |
93 |
images.os.arch = IH_ARCH_ARM64; |
5db28905c cmd: Split 'bootz... |
94 |
ret = do_bootm_states(cmdtp, flag, argc, argv, |
4943dc2f1 bootz/booti: relo... |
95 96 97 |
#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH BOOTM_STATE_RAMDISK | #endif |
5db28905c cmd: Split 'bootz... |
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
BOOTM_STATE_OS_PREP | BOOTM_STATE_OS_FAKE_GO | BOOTM_STATE_OS_GO, &images, 1); return ret; } #ifdef CONFIG_SYS_LONGHELP static char booti_help_text[] = "[addr [initrd[:size]] [fdt]] " " - boot arm64 Linux Image stored in memory " "\tThe argument 'initrd' is optional and specifies the address " "\tof an initrd in memory. The optional parameter ':size' allows " "\tspecifying the size of a RAW initrd. " #if defined(CONFIG_OF_LIBFDT) "\tSince booting a Linux kernel requires a flat device-tree, a " "\tthird argument providing the address of the device-tree blob " "\tis required. To boot a kernel with a device-tree blob but " "\twithout an initrd image, use a '-' for the initrd argument. " #endif ""; #endif U_BOOT_CMD( booti, CONFIG_SYS_MAXARGS, 1, do_booti, "boot arm64 Linux Image image from memory", booti_help_text ); |