mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-13 16:37:30 +00:00
mmc: fsl_esdhc_spl: Add support for builds without CONFIG_SYS_MMC_U_BOOT_OFFS
When fixed offset via CONFIG_SYS_MMC_U_BOOT_OFFS is not specified then expects that U-Boot proper is placed immediately after SPL without any additional padding. This allows to generate smaller SPL+U-Boot final binary as it is not required to specify fixed offset to U-Boot proper at SPL compile time. In this case offset to U-Boot proper is calculated at SPL compile time in linker script. Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by: Marek Behún <kabel@kernel.org>
This commit is contained in:
parent
7696b80ec5
commit
5a428e7510
2 changed files with 18 additions and 0 deletions
|
@ -62,6 +62,13 @@ SECTIONS
|
||||||
__init_begin = .;
|
__init_begin = .;
|
||||||
__init_end = .;
|
__init_end = .;
|
||||||
_end = .;
|
_end = .;
|
||||||
|
|
||||||
|
#ifndef KEEP_RESET_VECTOR
|
||||||
|
#if defined(CONFIG_SD_BOOT) && !defined(CONFIG_SYS_MMC_U_BOOT_OFFS)
|
||||||
|
mmc_u_boot_offs = .;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_SPL_SKIP_RELOCATE
|
#ifdef CONFIG_SPL_SKIP_RELOCATE
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__bss_start = .;
|
__bss_start = .;
|
||||||
|
@ -94,6 +101,9 @@ SECTIONS
|
||||||
.resetvec IMAGE_TEXT_BASE + RESET_VECTOR_OFFSET : {
|
.resetvec IMAGE_TEXT_BASE + RESET_VECTOR_OFFSET : {
|
||||||
KEEP(*(.resetvec))
|
KEEP(*(.resetvec))
|
||||||
} = 0xffff
|
} = 0xffff
|
||||||
|
#if defined(CONFIG_SD_BOOT) && !defined(CONFIG_SYS_MMC_U_BOOT_OFFS)
|
||||||
|
mmc_u_boot_offs = .;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_SPL_SKIP_RELOCATE
|
#ifndef CONFIG_SPL_SKIP_RELOCATE
|
||||||
|
|
|
@ -9,6 +9,10 @@
|
||||||
#include <mmc.h>
|
#include <mmc.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
|
#ifndef CONFIG_SYS_MMC_U_BOOT_OFFS
|
||||||
|
extern uchar mmc_u_boot_offs[];
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The environment variables are written to just after the u-boot image
|
* The environment variables are written to just after the u-boot image
|
||||||
* on SDCard, so we must read the MBR to get the start address and code
|
* on SDCard, so we must read the MBR to get the start address and code
|
||||||
|
@ -149,7 +153,11 @@ again:
|
||||||
val = *(tmp_buf + blk_off + ESDHC_BOOT_IMAGE_ADDR + i);
|
val = *(tmp_buf + blk_off + ESDHC_BOOT_IMAGE_ADDR + i);
|
||||||
offset = (offset << 8) + val;
|
offset = (offset << 8) + val;
|
||||||
}
|
}
|
||||||
|
#ifndef CONFIG_SYS_MMC_U_BOOT_OFFS
|
||||||
|
offset += (ulong)&mmc_u_boot_offs - CONFIG_SPL_TEXT_BASE;
|
||||||
|
#else
|
||||||
offset += CONFIG_SYS_MMC_U_BOOT_OFFS;
|
offset += CONFIG_SYS_MMC_U_BOOT_OFFS;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* Load U-Boot image from mmc into RAM
|
* Load U-Boot image from mmc into RAM
|
||||||
|
|
Loading…
Reference in a new issue