mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-12 16:07:30 +00:00
mpc85xx: Initial SP alignment is wrong.
PowerPC mandates SP to be 16 bytes aligned. Furthermore, a stack frame is added, pointing to the reset vector which may in the way when gdb is walking the stack because the reset vector may not accessible depending on emulator settings. Also use a temp register so gdb doesn't pick up intermediate values. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> Acked-by: Kumar Gala <galak@kernel.crashing.org> Signed-off-by: Andy Fleming <afleming@freescale.com>
This commit is contained in:
parent
e66443fdb5
commit
89f4289958
1 changed files with 5 additions and 11 deletions
|
@ -855,18 +855,12 @@ version_string:
|
||||||
.globl _start_cont
|
.globl _start_cont
|
||||||
_start_cont:
|
_start_cont:
|
||||||
/* Setup the stack in initial RAM,could be L2-as-SRAM or L1 dcache*/
|
/* Setup the stack in initial RAM,could be L2-as-SRAM or L1 dcache*/
|
||||||
lis r1,CONFIG_SYS_INIT_RAM_ADDR@h
|
lis r3,(CONFIG_SYS_INIT_RAM_ADDR)@h
|
||||||
ori r1,r1,CONFIG_SYS_INIT_SP_OFFSET@l
|
ori r3,r3,((CONFIG_SYS_INIT_SP_OFFSET-16)&~0xf)@l /* Align to 16 */
|
||||||
|
|
||||||
li r0,0
|
li r0,0
|
||||||
stwu r0,-4(r1)
|
stw r0,0(r3) /* Terminate Back Chain */
|
||||||
stwu r0,-4(r1) /* Terminate call chain */
|
stw r0,+4(r3) /* NULL return address. */
|
||||||
|
mr r1,r3 /* Transfer to SP(r1) */
|
||||||
stwu r1,-8(r1) /* Save back chain and move SP */
|
|
||||||
lis r0,RESET_VECTOR@h /* Address of reset vector */
|
|
||||||
ori r0,r0,RESET_VECTOR@l
|
|
||||||
stwu r1,-8(r1) /* Save back chain and move SP */
|
|
||||||
stw r0,+12(r1) /* Save return addr (underflow vect) */
|
|
||||||
|
|
||||||
GET_GOT
|
GET_GOT
|
||||||
bl cpu_init_early_f
|
bl cpu_init_early_f
|
||||||
|
|
Loading…
Reference in a new issue