Hi Simon, On Fri, 20 Sept 2024 at 10:25, Simon Glass <s...@chromium.org> wrote: > > Separate BSS is current mandatory on armv8 but this is not useful for > early boot phases. Add support for the combined BSS. > > Use an #ifdef to avoid using CONFIG_SPL_BSS_START_ADDR which is not > valid in this case. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > (no changes since v1) > > arch/arm/cpu/armv8/u-boot-spl.lds | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/arch/arm/cpu/armv8/u-boot-spl.lds > b/arch/arm/cpu/armv8/u-boot-spl.lds > index 215cedd69a8..fed69644b55 100644 > --- a/arch/arm/cpu/armv8/u-boot-spl.lds > +++ b/arch/arm/cpu/armv8/u-boot-spl.lds > @@ -13,8 +13,10 @@ > > MEMORY { .sram : ORIGIN = IMAGE_TEXT_BASE, > LENGTH = IMAGE_MAX_SIZE } > +#ifdef CONFIG_SPL_SEPARATE_BSS > MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, > LENGTH = CONFIG_SPL_BSS_MAX_SIZE } > +#endif > > OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", > "elf64-littleaarch64") > OUTPUT_ARCH(aarch64) > @@ -56,12 +58,22 @@ SECTIONS > _end = .; > _image_binary_end = .; > > +#ifdef CONFIG_SPL_SEPARATE_BSS > .bss : { > __bss_start = .; > *(.bss*) > . = ALIGN(8); > __bss_end = .; > } >.sdram > +#else > + .bss (NOLOAD) : { > + __bss_start = .; > + *(.bss*) > + . = ALIGN(8); > + __bss_end = .; > + } >.sram > +#endif
This is still going to be separate. The only difference isn't that it's not loaded. If you want to combine it with a region, you got to do something similar to what we have in armv7, where it overlaps with rel.dyn Thanks /Ilias > + __bss_size = __bss_end - __bss_start; > > /DISCARD/ : { *(.rela*) } > /DISCARD/ : { *(.dynsym) } > -- > 2.43.0 >