mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 16:10:58 +00:00
MIPS: factor out code for initial stack and global data
Move the code for setting up the initial stack and global data to a macro to be able to use it more than once. Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
This commit is contained in:
parent
65d297af7c
commit
c3e72ab801
1 changed files with 30 additions and 26 deletions
|
@ -52,6 +52,34 @@
|
|||
sdbbp 1 # Invoke UHI operation
|
||||
.endm
|
||||
|
||||
.macro setup_stack_gd
|
||||
li t0, -16
|
||||
PTR_LI t1, CONFIG_SYS_INIT_SP_ADDR
|
||||
and sp, t1, t0 # force 16 byte alignment
|
||||
PTR_SUBU \
|
||||
sp, sp, GD_SIZE # reserve space for gd
|
||||
and sp, sp, t0 # force 16 byte alignment
|
||||
move k0, sp # save gd pointer
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
li t2, CONFIG_SYS_MALLOC_F_LEN
|
||||
PTR_SUBU \
|
||||
sp, sp, t2 # reserve space for early malloc
|
||||
and sp, sp, t0 # force 16 byte alignment
|
||||
#endif
|
||||
move fp, sp
|
||||
|
||||
/* Clear gd */
|
||||
move t0, k0
|
||||
1:
|
||||
PTR_S zero, 0(t0)
|
||||
blt t0, t1, 1b
|
||||
PTR_ADDIU t0, PTRSIZE
|
||||
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
PTR_S sp, GD_MALLOC_BASE(k0) # gd->malloc_base offset
|
||||
#endif
|
||||
.endm
|
||||
|
||||
ENTRY(_start)
|
||||
/* U-Boot entry point */
|
||||
b reset
|
||||
|
@ -227,32 +255,8 @@ wr_done:
|
|||
# endif
|
||||
#endif
|
||||
|
||||
/* Set up temporary stack */
|
||||
li t0, -16
|
||||
PTR_LI t1, CONFIG_SYS_INIT_SP_ADDR
|
||||
and sp, t1, t0 # force 16 byte alignment
|
||||
PTR_SUBU \
|
||||
sp, sp, GD_SIZE # reserve space for gd
|
||||
and sp, sp, t0 # force 16 byte alignment
|
||||
move k0, sp # save gd pointer
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
li t2, CONFIG_SYS_MALLOC_F_LEN
|
||||
PTR_SUBU \
|
||||
sp, sp, t2 # reserve space for early malloc
|
||||
and sp, sp, t0 # force 16 byte alignment
|
||||
#endif
|
||||
move fp, sp
|
||||
|
||||
/* Clear gd */
|
||||
move t0, k0
|
||||
1:
|
||||
PTR_S zero, 0(t0)
|
||||
blt t0, t1, 1b
|
||||
PTR_ADDIU t0, PTRSIZE
|
||||
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
PTR_S sp, GD_MALLOC_BASE(k0) # gd->malloc_base offset
|
||||
#endif
|
||||
/* Set up initial stack and global data */
|
||||
setup_stack_gd
|
||||
|
||||
move a0, zero # a0 <-- boot_flags = 0
|
||||
PTR_LA t9, board_init_f
|
||||
|
|
Loading…
Reference in a new issue