Hi Fabio, On 11 November 2015 at 13:23, Fabio Estevam <feste...@gmail.com> wrote: > From: Fabio Estevam <fabio.este...@freescale.com> > > Commit 5ba534d247d418 ("arm: Switch 32-bit ARM to using generic global_data > setup") causes malloc() to fail in SPL. > > The reason is that the GD_MALLOC_BASE is not passed anymore. > > Restore the code that passes malloc base so that we can have > malloc working in SPL code again. > > Signed-off-by: Fabio Estevam <fabio.este...@freescale.com> > --- > arch/arm/lib/crt0.S | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S > index 80548eb..d620126 100644 > --- a/arch/arm/lib/crt0.S > +++ b/arch/arm/lib/crt0.S > @@ -87,6 +87,10 @@ ENTRY(_main) > mov sp, r0 > > mov r0, #0 > +#if defined(CONFIG_SYS_MALLOC_F_LEN) > + sub sp, sp, #CONFIG_SYS_MALLOC_F_LEN > + str sp, [r9, #GD_MALLOC_BASE] > +#endif > bl board_init_f > > #if ! defined(CONFIG_SPL_BUILD) > -- > 1.9.1 >
Thanks for digging into this. But this should be set up in board_init_f_mem(): #if defined(CONFIG_SYS_MALLOC_F) && \ (!defined(CONFIG_SPL_BUILD) || !defined(CONFIG_SYS_SPL_MALLOC_START)) top -= CONFIG_SYS_MALLOC_F_LEN; gd->malloc_base = top; #endif Is it possible that the #ifdef logic is wrong for your board? Regardds, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot