1
0
Fork 0

MIPS: add support for pre-relocation malloc

Implement MIPS specific setup of the gd_t structure to support
pre-relocation malloc. If CONFIG_SYS_MALLOC_F_LEN is specified,
a memory area will be reserved after the initial stack area and
the gd->malloc_base pointer will be initialized.

After this patch the new driver model can be used on MIPS.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
utp
Daniel Schwierzeck 2015-01-18 22:18:39 +01:00
parent dd82128ef5
commit e520023882
3 changed files with 46 additions and 4 deletions

View File

@ -140,9 +140,31 @@ reset:
#endif
/* Set up temporary stack */
li sp, CONFIG_SYS_INIT_SP_ADDR
li t0, -16
li t1, CONFIG_SYS_INIT_SP_ADDR
and sp, t1, t0 # force 16 byte alignment
sub 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
sub 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:
sw zero, 0(t0)
blt t0, t1, 1b
addi t0, 4
#ifdef CONFIG_SYS_MALLOC_F_LEN
addu t0, k0, GD_MALLOC_BASE # gd->malloc_base offset
sw sp, 0(t0)
#endif
la t9, board_init_f
jr t9
move ra, zero

View File

@ -134,9 +134,31 @@ reset:
#endif
/* Set up temporary stack */
dli sp, CONFIG_SYS_INIT_SP_ADDR
dli t0, -16
dli t1, CONFIG_SYS_INIT_SP_ADDR
and sp, t1, t0 # force 16 byte alignment
dsub 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
dli t2, CONFIG_SYS_MALLOC_F_LEN
dsub 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:
sw zero, 0(t0)
blt t0, t1, 1b
daddi t0, 4
#ifdef CONFIG_SYS_MALLOC_F_LEN
daddu t0, k0, GD_MALLOC_BASE # gd->malloc_base offset
sw sp, 0(t0)
#endif
dla t9, board_init_f
jr t9
move ra, zero

View File

@ -7,8 +7,6 @@
#ifndef _ASM_CONFIG_H_
#define _ASM_CONFIG_H_
#define CONFIG_SYS_GENERIC_GLOBAL_DATA
#define CONFIG_LMB
#define CONFIG_SYS_BOOT_RAMDISK_HIGH