summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorSimon Glass <[email protected]>2025-03-05 17:24:58 -0700
committerTom Rini <[email protected]>2025-03-18 13:12:15 -0600
commit75e85df7963f57e4bb80b3d805ba2295b1843911 (patch)
tree66bd81bc240b2a37dc6d85982e07a7b58a38721e /arch
parent2de073527bb92b47d49366249cd3fdea5016bcaf (diff)
x86: Move x86 zboot state into struct bootm_info
This structure is supposed to handle any type of booting programmatically, i.e. without needing a command to be executed. Move the x86-specific members into it and use it instead of struct zboot_state. Provide a macro so access is possible without adding lots of #ifdefs to the code. This will allow the struct to be used for all four types of booting (bootm, bootz, booti and zboot). Call bootm_init() to init the state, to match other boot methods. Note that some rationalisation could be performed on this. But this is tricky since addresses are stored as strings in several places. Also some strings combine multiple arguments into one. So to keep this task somewhat manageable, we content ourselves with just getting everything into the same struct Signed-off-by: Simon Glass <[email protected]>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/include/asm/zimage.h29
-rw-r--r--arch/x86/lib/zimage.c4
2 files changed, 3 insertions, 30 deletions
diff --git a/arch/x86/include/asm/zimage.h b/arch/x86/include/asm/zimage.h
index 76b2a797ccf..13a08850dfb 100644
--- a/arch/x86/include/asm/zimage.h
+++ b/arch/x86/include/asm/zimage.h
@@ -42,34 +42,7 @@ enum {
ZBOOT_STATE_COUNT = 5,
};
-/**
- * struct zboot_state - Current state of the boot
- *
- * @bzimage_addr: Address of the bzImage to boot, or 0 if the image has already
- * been loaded and does not exist (as a cohesive whole) in memory
- * @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
- * @load_address: Address where the bzImage is moved before booting, either
- * BZIMAGE_LOAD_ADDR or ZIMAGE_LOAD_ADDR
- * This is set up when loading the zimage
- * @base_ptr: Pointer to the boot parameters, typically at address
- * DEFAULT_SETUP_BASE
- * This is set up when loading the zimage
- * @cmdline: Environment variable containing the 'override' command line, or
- * NULL to use the one in the setup block
- */
-struct zboot_state {
- ulong bzimage_addr;
- ulong bzimage_size;
- ulong initrd_addr;
- ulong initrd_size;
- ulong load_address;
- struct boot_params *base_ptr;
- const char *cmdline;
-};
-
-extern struct zboot_state state;
+extern struct bootm_info state;
/**
* zboot_load() - Load a zimage
diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c
index 8d791416066..1dbebfe8afd 100644
--- a/arch/x86/lib/zimage.c
+++ b/arch/x86/lib/zimage.c
@@ -56,7 +56,7 @@ DECLARE_GLOBAL_DATA_PTR;
#define COMMAND_LINE_SIZE 2048
/* Current state of the boot */
-struct zboot_state state;
+struct bootm_info state;
static void build_command_line(char *command_line, int auto_boot)
{
@@ -642,7 +642,7 @@ void zimage_dump(struct boot_params *base_ptr, bool show_cmdline)
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));
+ bootm_init(&state);
state.bzimage_size = bzimage_size;
state.initrd_addr = initrd_addr;