mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
spl: binman: Fix use of undeclared u_boot_any symbols
Some SPL functions directly use the binman 'u_boot_any' symbols to get U-Boot's binman image position. These symbols are declared by the SPL/TPL_BINMAN_SYMBOLS configs, but they are accessed by macros defined by just CONFIG_BINMAN. So when BINMAN is enabled and BINMAN_SYMBOLS is disabled, the code tries to use undeclared symbols and we get an error. Therefore, any use of 'u_boot_any' symbols in the code is an implicit dependency on SPL/TPL_BINMAN_SYMBOLS. However, in the current uses they are meant to be the next phase's values, where that happens to be U-Boot. In the meantime, helper funcions spl_get_image_pos/size() were introduced to get these values. Convert all uses of u_boot_any symbols to these functions, so we only access these symbols at one place. Make sure they will not use these symbols when the BINMAN_SYMBOLS configs are disabled, by returning early in those cases. Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
This commit is contained in:
parent
d4462ba044
commit
d7f0717252
2 changed files with 8 additions and 4 deletions
|
@ -150,9 +150,11 @@ void spl_fixup_fdt(void *fdt_blob)
|
|||
#endif
|
||||
}
|
||||
|
||||
#if CONFIG_IS_ENABLED(BINMAN_SYMBOLS)
|
||||
ulong spl_get_image_pos(void)
|
||||
{
|
||||
if (!CONFIG_IS_ENABLED(BINMAN_SYMBOLS))
|
||||
return BINMAN_SYM_MISSING;
|
||||
|
||||
#ifdef CONFIG_VPL
|
||||
if (spl_next_phase() == PHASE_VPL)
|
||||
return binman_sym(ulong, u_boot_vpl, image_pos);
|
||||
|
@ -164,6 +166,9 @@ ulong spl_get_image_pos(void)
|
|||
|
||||
ulong spl_get_image_size(void)
|
||||
{
|
||||
if (!CONFIG_IS_ENABLED(BINMAN_SYMBOLS))
|
||||
return BINMAN_SYM_MISSING;
|
||||
|
||||
#ifdef CONFIG_VPL
|
||||
if (spl_next_phase() == PHASE_VPL)
|
||||
return binman_sym(ulong, u_boot_vpl, size);
|
||||
|
@ -172,7 +177,6 @@ ulong spl_get_image_size(void)
|
|||
binman_sym(ulong, u_boot_spl, size) :
|
||||
binman_sym(ulong, u_boot_any, size);
|
||||
}
|
||||
#endif /* BINMAN_SYMBOLS */
|
||||
|
||||
ulong spl_get_image_text_base(void)
|
||||
{
|
||||
|
@ -223,7 +227,7 @@ __weak struct image_header *spl_get_load_buffer(ssize_t offset, size_t size)
|
|||
|
||||
void spl_set_header_raw_uboot(struct spl_image_info *spl_image)
|
||||
{
|
||||
ulong u_boot_pos = binman_sym(ulong, u_boot_any, image_pos);
|
||||
ulong u_boot_pos = spl_get_image_pos();
|
||||
|
||||
spl_image->size = CONFIG_SYS_MONITOR_LEN;
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ static int spl_ram_load_image(struct spl_image_info *spl_image,
|
|||
load.read = spl_ram_load_read;
|
||||
spl_load_simple_fit(spl_image, &load, 0, header);
|
||||
} else {
|
||||
ulong u_boot_pos = binman_sym(ulong, u_boot_any, image_pos);
|
||||
ulong u_boot_pos = spl_get_image_pos();
|
||||
|
||||
debug("Legacy image\n");
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue