[U-Boot-Users] Stack pointer corruption on 8541 - short version.

Hi all. I posted a mail describing a problem I have with stack pointer on a board with MPC8541. I figured out I gave a complicated description for a simple problem, so here it is rephrased: I get the stack pointer corrupted when returning from function call on the first functions (running in flash, L1 cache used for stack). for example, in start.S: bl foo1(), when foo1() is: void foo1() { foo2(); } void foo2() { foo3(); } The return address from foo2() is some random crap.
Any ideas what could be the reason? Thanks, Michael

Seems like I found the cause of the problem - it was the JTAG I use. It somehow corrupts the stack pointer in L1D cache. Running without the JTAG, or alternatively relocating the stack pointer to SRAM, results in normal execution.
On 1/15/07, Michael michaelzwrk@gmail.com wrote:
Hi all. I posted a mail describing a problem I have with stack pointer on a board with MPC8541. I figured out I gave a complicated description for a simple problem, so here it is rephrased: I get the stack pointer corrupted when returning from function call on the first functions (running in flash, L1 cache used for stack). for example, in start.S: bl foo1(), when foo1() is: void foo1() { foo2(); } void foo2() { foo3(); } The return address from foo2() is some random crap.
Any ideas what could be the reason? Thanks, Michael

On 1/15/07, Michael michaelzwrk@gmail.com wrote:
Hi all. I posted a mail describing a problem I have with stack pointer on a board with MPC8541. I figured out I gave a complicated description for a simple problem, so here it is rephrased: I get the stack pointer corrupted when returning from function call on the first functions (running in flash, L1 cache used for stack). for example, in start.S: bl foo1(), when foo1() is: void foo1() { foo2(); } void foo2() { foo3(); } The return address from foo2() is some random crap.
Any ideas what could be the reason? Thanks, Michael
Michael wrote: Seems like I found the cause of the problem - it was the JTAG I use. It somehow corrupts the stack pointer in L1D cache. Running without the JTAG, or alternatively relocating the stack pointer to SRAM, results in normal execution.
And the JTAG unit manufacture/model is????? Forewarned is forearmed.
Thanks, gvb

Well, it was WindRiver Probe. To be fair - we have a pending issue on this with WindRiver, and they are working on it. Hope it'll be settled.
On 1/17/07, Jerry Van Baren gerald.vanbaren@smiths-aerospace.com wrote:
On 1/15/07, Michael michaelzwrk@gmail.com wrote:
Hi all. I posted a mail describing a problem I have with stack pointer on a board with MPC8541. I figured out I gave a complicated description for a simple problem, so here it is rephrased: I get the stack pointer corrupted when returning from function call on the first functions (running in flash, L1 cache used for stack). for example, in start.S: bl foo1(), when foo1() is: void foo1() { foo2(); } void foo2() { foo3(); } The return address from foo2() is some random crap.
Any ideas what could be the reason? Thanks, Michael
Michael wrote: Seems like I found the cause of the problem - it was the JTAG I use. It somehow corrupts the stack pointer in L1D cache. Running without the JTAG, or alternatively relocating the stack pointer to SRAM, results in normal execution.
And the JTAG unit manufacture/model is????? Forewarned is forearmed.
Thanks, gvb
participants (2)
-
Jerry Van Baren
-
Michael