Message ID | 1487374644-12737-1-git-send-email-philipp.tomsich@theobroma-systems.com |
---|---|
State | Superseded |
Headers | show |
On 17/02/17 23:37, Philipp Tomsich wrote: Hi, > As part of the startup process for boards using the SPL, we need to > call spl_relocate_stack_gd. This is needed to set up malloc with its > DRAM buffer. I wonder how we could get away without this before? > > Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> That looks good to me now, also thanks for adding the comment. Reviewed-by: Andre Przywara <andre.przywara@arm.com> Cheers, Andre. > --- > arch/arm/lib/crt0_64.S | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S > index 19c6a98..9f55d4f 100644 > --- a/arch/arm/lib/crt0_64.S > +++ b/arch/arm/lib/crt0_64.S > @@ -109,8 +109,16 @@ relocation_return: > */ > bl c_runtime_cpu_setup /* still call old routine */ > #endif /* !CONFIG_SPL_BUILD */ > - > -/* TODO: For SPL, call spl_relocate_stack_gd() to alloc stack relocation */ > +#if defined(CONFIG_SPL_BUILD) > + bl spl_relocate_stack_gd /* may return NULL */ > + /* Perform 'sp = (x0 != NULL) ? x0 : sp' while working > + around the constraint that conditional moves can not > + have 'sp' as an operand */ > + mov x1, sp > + cmp x0, #0 > + csel x0, x0, x1, ne > + mov sp, x0 > +#endif > > /* > * Clear BSS section >
Hi, On 17 February 2017 at 16:41, André Przywara <andre.przywara@arm.com> wrote: > On 17/02/17 23:37, Philipp Tomsich wrote: > > Hi, > >> As part of the startup process for boards using the SPL, we need to >> call spl_relocate_stack_gd. This is needed to set up malloc with its >> DRAM buffer. > > I wonder how we could get away without this before? > >> >> Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > > That looks good to me now, also thanks for adding the comment. > > Reviewed-by: Andre Przywara <andre.przywara@arm.com> > > Cheers, > Andre. > >> --- >> arch/arm/lib/crt0_64.S | 12 ++++++++++-- >> 1 file changed, 10 insertions(+), 2 deletions(-) Reviewed-by: Simon Glass <sjg@chromium.org> But please see nit below. >> >> diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S >> index 19c6a98..9f55d4f 100644 >> --- a/arch/arm/lib/crt0_64.S >> +++ b/arch/arm/lib/crt0_64.S >> @@ -109,8 +109,16 @@ relocation_return: >> */ >> bl c_runtime_cpu_setup /* still call old routine */ >> #endif /* !CONFIG_SPL_BUILD */ >> - >> -/* TODO: For SPL, call spl_relocate_stack_gd() to alloc stack relocation */ >> +#if defined(CONFIG_SPL_BUILD) >> + bl spl_relocate_stack_gd /* may return NULL */ >> + /* Perform 'sp = (x0 != NULL) ? x0 : sp' while working >> + around the constraint that conditional moves can not >> + have 'sp' as an operand */ /* * Perform ... * ... */ >> + mov x1, sp >> + cmp x0, #0 >> + csel x0, x0, x1, ne >> + mov sp, x0 >> +#endif >> >> /* >> * Clear BSS section >> > Regards, Simon
diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S index 19c6a98..9f55d4f 100644 --- a/arch/arm/lib/crt0_64.S +++ b/arch/arm/lib/crt0_64.S @@ -109,8 +109,16 @@ relocation_return: */ bl c_runtime_cpu_setup /* still call old routine */ #endif /* !CONFIG_SPL_BUILD */ - -/* TODO: For SPL, call spl_relocate_stack_gd() to alloc stack relocation */ +#if defined(CONFIG_SPL_BUILD) + bl spl_relocate_stack_gd /* may return NULL */ + /* Perform 'sp = (x0 != NULL) ? x0 : sp' while working + around the constraint that conditional moves can not + have 'sp' as an operand */ + mov x1, sp + cmp x0, #0 + csel x0, x0, x1, ne + mov sp, x0 +#endif /* * Clear BSS section
As part of the startup process for boards using the SPL, we need to call spl_relocate_stack_gd. This is needed to set up malloc with its DRAM buffer. Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> --- arch/arm/lib/crt0_64.S | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)