[U-Boot] [PATCH] tegra20: add assembly wrapper for lowlevel_init()

Wolfgang Denk wd at denx.de
Wed Aug 8 21:44:54 CEST 2012


Dear Allen Martin,

In message <1344448286-14144-1-git-send-email-amartin at nvidia.com> you wrote:
> lowlevel_init() is called before stack is initialized, so it's not
> safe to call directly into C code.  Copy this wrapper from omap that
> saves off the ip register and sets up a temporary stack.  This fixes a
> hang using CodeSourcery toolchain.
...
> +	/*
> +	 * Setup a temporary stack
> +	 */
> +	ldr	sp, =LOW_LEVEL_SRAM_STACK
> +
> +	/*
> +	 * Save the old lr(passed in ip) and the current lr to stack
> +	 */
> +	push	{ip, lr}

Are you sure this provides a valid stack frame? I think there are more
requirements to that...


BTW: this LOW_LEVEL_SRAM_STACK is really ugly; It is completely
undocumented, and breaks naming conventions (it should be
CONFIG_SYS_... instead).  I know that this was not introduced by this
patch, but it should be fixed ASAP - it's mostly TI and Tegra that use
that...

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
What is tolerance? -- it is the consequence of humanity. We  are  all
formed  of frailty and error; let us pardon reciprocally each other's
folly -- that is the first law of nature.                  - Voltaire


More information about the U-Boot mailing list