Hi Albert, On Monday, April 8, 2013 9:58:29 PM, Albert ARIBAUD wrote: > The ASSERT() in arch/arm/cpu/u-boot.lds is unneeded as > this linker file is not used for SPL builds. Remove it. > > The ASSERT() in arch/arm/cpu/u-boot-spl.lds is wrong > as it compares image+BSS size to max image size only. > Split it in two distinct ASSERT()s, one for image size, > one for BSS size. > > Finally, update README regarding the (now homogeneous) > semantics of the CONFIG_SPL_MAX_SIZE and > CONFIG_SPL_BSS_MAX_SIZE macros. > > Signed-off-by: Albert ARIBAUD <albert.u.b...@aribaud.net> > --- > README | 17 +++++++++++++++-- > arch/arm/cpu/u-boot-spl.lds | 10 ++++++++-- > arch/arm/cpu/u-boot.lds | 4 ---- > 3 files changed, 23 insertions(+), 8 deletions(-) > > diff --git a/README b/README > index a35ef31..c902421 100644 > --- a/README > +++ b/README > @@ -2784,7 +2784,14 @@ FIT uImage format: > LDSCRIPT for linking the SPL binary. > > CONFIG_SPL_MAX_SIZE > - Maximum binary size (text, data and rodata) of the SPL binary. > + Maximum size for the image (sum of the text, data, rodata > + and linker lists sections) of the SPL executable. > + When defined, linker checks that the actual image size does > + not exceed it. > + The total amount of memory used by the SPL when running is > + equal CONFIG_SPL_MAX_SIZE, plus CONFIG_SPL_BSS_MAX_SIZE if > + it exists. > + Note: image and BSS are disjoint for some targets. > > CONFIG_SPL_TEXT_BASE > TEXT_BASE for linking the SPL binary. > @@ -2797,7 +2804,13 @@ FIT uImage format: > Link address for the BSS within the SPL binary. > > CONFIG_SPL_BSS_MAX_SIZE > - Maximum binary size of the BSS section of the SPL binary. > + Maximum size of the BSS section of the SPL executable. > + When defined, linker checks that the actual BSS size does > + not exceed it. > + The total amount of memory used by the SPL when running is > + equal CONFIG_SPL_MAX_SIZE, plus CONFIG_SPL_BSS_MAX_SIZE if > + it exists. > + Note: image and BSS are disjoint for some targets. > > CONFIG_SPL_STACK > Adress of the start of the stack SPL will use > diff --git a/arch/arm/cpu/u-boot-spl.lds b/arch/arm/cpu/u-boot-spl.lds > index 3c0d99c..89ef9ce 100644 > --- a/arch/arm/cpu/u-boot-spl.lds > +++ b/arch/arm/cpu/u-boot-spl.lds > @@ -88,6 +88,12 @@ SECTIONS > /DISCARD/ : { *(.gnu*) } > } > > -#if defined(CONFIG_SPL_TEXT_BASE) && defined(CONFIG_SPL_MAX_SIZE) > -ASSERT(__bss_end < (CONFIG_SPL_TEXT_BASE + CONFIG_SPL_MAX_SIZE), "SPL image > too big"); > +#if defined(CONFIG_SPL_MAX_SIZE) > +ASSERT(__image_copy_end - __image_copy_start < (CONFIG_SPL_MAX_SIZE), \
The possible relocation and MMU data is also part of the binary image file, so that would be __bss_start rather than __image_copy_end above, and README should be updated to reflect this. > + "SPL image too big"); > +#endif > + > +#if defined(CONFIG_SPL_BSS_MAX_SIZE) > +ASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS MAX_SIZE), \ > + "SPL image BSS too big"); > #endif > diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds > index 3a1083d..7bbc4f5 100644 > --- a/arch/arm/cpu/u-boot.lds > +++ b/arch/arm/cpu/u-boot.lds > @@ -101,7 +101,3 @@ SECTIONS > /DISCARD/ : { *(.interp*) } > /DISCARD/ : { *(.gnu*) } > } > - > -#if defined(CONFIG_SPL_TEXT_BASE) && defined(CONFIG_SPL_MAX_SIZE) > -ASSERT(__bss_end < (CONFIG_SPL_TEXT_BASE + CONFIG_SPL_MAX_SIZE), "SPL image > too big"); > -#endif > -- > 1.7.10.4 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot > Best regards, Benoît _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot