1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-10-16 07:21:26 +02:00

x86: zboot: Separate logic functions from commands

Move zboot_start() and zboot_info() in with the other logic functions.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Simon Glass
2023-12-03 17:29:36 -07:00
committed by Tom Rini
parent d2c485a032
commit 9ad5fdf1a8
3 changed files with 52 additions and 28 deletions

View File

@@ -134,4 +134,29 @@ struct boot_params *load_zimage(char *image, unsigned long kernel_size,
int setup_zimage(struct boot_params *setup_base, char *cmd_line, int auto_boot,
ulong initrd_addr, ulong initrd_size, ulong cmdline_force);
/**
* zboot_start() - Prepare to boot a zimage
*
* Record information about a zimage so it can be booted
*
* @bzimage_addr: Address of the bzImage to boot
* @bzimage_size: Size of the bzImage, or 0 to detect this
* @initrd_addr: Address of the initial ramdisk, or 0 if none
* @initrd_size: Size of the initial ramdisk, or 0 if none
* @base_addr: If non-zero, this indicates that the boot parameters have already
* been loaded by the caller to this address, so the load_zimage() call
* in zboot_load() will be skipped when booting
* @cmdline: Environment variable containing the 'override' command line, or
* NULL to use the one in the setup block
*/
void zboot_start(ulong bzimage_addr, ulong bzimage_size, ulong initrd_addr,
ulong initrd_size, ulong base_addr, const char *cmdline);
/**
* zboot_info() - Show simple info about a zimage
*
* Shows wherer the kernel was loaded and also the setup base
*/
void zboot_info(void);
#endif

View File

@@ -652,3 +652,26 @@ void zimage_dump(struct boot_params *base_ptr, bool show_cmdline)
if (get_boot_protocol(hdr, false) >= 0x215)
print_num("Kernel info offset", hdr->kernel_info_offset);
}
void zboot_start(ulong bzimage_addr, ulong bzimage_size, ulong initrd_addr,
ulong initrd_size, ulong base_addr, const char *cmdline)
{
memset(&state, '\0', sizeof(state));
state.bzimage_size = bzimage_size;
state.initrd_addr = initrd_addr;
state.initrd_size = initrd_size;
if (base_addr) {
state.base_ptr = map_sysmem(base_addr, 0);
state.load_address = bzimage_addr;
} else {
state.bzimage_addr = bzimage_addr;
}
state.cmdline = cmdline;
}
void zboot_info(void)
{
printf("Kernel loaded at %08lx, setup_base=%p\n",
state.load_address, state.base_ptr);
}

View File

@@ -10,26 +10,6 @@
#include <vsprintf.h>
#include <asm/zimage.h>
static int zboot_start(ulong bzimage_addr, ulong bzimage_size,
ulong initrd_addr, ulong initrd_size, ulong base_addr,
const char *cmdline)
{
memset(&state, '\0', sizeof(state));
state.bzimage_size = bzimage_size;
state.initrd_addr = initrd_addr;
state.initrd_size = initrd_size;
if (base_addr) {
state.base_ptr = map_sysmem(base_addr, 0);
state.load_address = bzimage_addr;
} else {
state.bzimage_addr = bzimage_addr;
}
state.cmdline = cmdline;
return 0;
}
static int do_zboot_start(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[])
{
@@ -47,8 +27,10 @@ static int do_zboot_start(struct cmd_tbl *cmdtp, int flag, int argc,
base_addr = argc > 5 ? hextoul(argv[5], NULL) : 0;
cmdline = argc > 6 ? env_get(argv[6]) : NULL;
return zboot_start(bzimage_addr, bzimage_size, initrd_addr, initrd_size,
base_addr, cmdline);
zboot_start(bzimage_addr, bzimage_size, initrd_addr, initrd_size,
base_addr, cmdline);
return 0;
}
static int do_zboot_load(struct cmd_tbl *cmdtp, int flag, int argc,
@@ -81,12 +63,6 @@ static int do_zboot_setup(struct cmd_tbl *cmdtp, int flag, int argc,
return 0;
}
static void zboot_info(void)
{
printf("Kernel loaded at %08lx, setup_base=%p\n",
state.load_address, state.base_ptr);
}
static int do_zboot_info(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[])
{