powerpc: mpc83xx: Enable pre-relocation malloc
To enable DM on MPC83xx, we need pre-relocation malloc, which is implemented in this patch. Signed-off-by: Mario Six <mario.six@gdsys.cc> [York S: Fixed compiling warning for unused variable 'i'] Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
parent
e80311a5f0
commit
dbcb2c0e2b
@ -205,8 +205,7 @@ void cpu_init_f (volatile immap_t * im)
|
||||
/* Pointer is writable since we allocated a register for it */
|
||||
gd = (gd_t *) (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
|
||||
|
||||
/* Clear initial global data */
|
||||
memset ((void *) gd, 0, sizeof (gd_t));
|
||||
/* global data region was cleared in start.S */
|
||||
|
||||
/* system performance tweaking */
|
||||
clrsetbits_be32(&im->arbiter.acr, acr_mask, acr_val);
|
||||
|
@ -18,14 +18,10 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
*/
|
||||
void cpu_init_f (volatile immap_t * im)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Pointer is writable since we allocated a register for it */
|
||||
gd = (gd_t *) (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
|
||||
|
||||
/* Clear initial global data */
|
||||
for (i = 0; i < sizeof(gd_t); i++)
|
||||
((char *)gd)[i] = 0;
|
||||
/* global data region was cleared in start.S */
|
||||
|
||||
/* system performance tweaking */
|
||||
|
||||
|
@ -263,6 +263,29 @@ in_flash:
|
||||
lis r3, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@h
|
||||
ori r3, r3, (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)@l
|
||||
|
||||
/* r4 = end of GD area */
|
||||
addi r4, r3, GENERATED_GBL_DATA_SIZE
|
||||
|
||||
/* Zero GD area */
|
||||
li r0, 0
|
||||
1:
|
||||
subi r4, r4, 1
|
||||
stb r0, 0(r4)
|
||||
cmplw r3, r4
|
||||
bne 1b
|
||||
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
|
||||
#if CONFIG_SYS_MALLOC_F_LEN + GENERATED_GBL_DATA_SIZE > CONFIG_SYS_INIT_RAM_SIZE
|
||||
#error "CONFIG_SYS_MALLOC_F_LEN too large to fit into initial RAM."
|
||||
#endif
|
||||
|
||||
/* r3 = new stack pointer / pre-reloc malloc area */
|
||||
subi r3, r3, CONFIG_SYS_MALLOC_F_LEN
|
||||
|
||||
/* Set pointer to pre-reloc malloc area in GD */
|
||||
stw r3, GD_MALLOC_BASE(r4)
|
||||
#endif
|
||||
li r0, 0 /* Make room for stack frame header and */
|
||||
stwu r0, -4(r3) /* clear final stack frame so that */
|
||||
stwu r0, -4(r3) /* stack backtraces terminate cleanly */
|
||||
|
Loading…
Reference in New Issue
Block a user