
8 Aug
2012
8 Aug
'12
9:44 p.m.
Dear Allen Martin,
In message 1344448286-14144-1-git-send-email-amartin@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@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