[U-Boot] [U-Boot, v3, 03/10] powerpc: spl and normal u-boot stage set SYS_MALLOC_F_LEN indepently
Philipp Tomsich
philipp.tomsich at theobroma-systems.com
Thu Jul 27 10:48:13 UTC 2017
On Mon, 24 Jul 2017, Andy Yan wrote:
> Some platforms has very small sram to run spl code, so
> it may have no enough sapce for so much malloc pool before
> relocation in spl stage as the normal u-boot stage.
> Use CONFIG_VAL(SYS_MALLOC_F_LEN) to fit this condition.
>
> Signed-off-by: Andy Yan <andy.yan at rock-chips.com>
> Acked-by: Philipp Tomsich <philipp.tomsich at theobroma-systems.com>
> ---
>
> Changes in v3:
> - use CONFIG_VAL(), which suggested by Simon
>
> Changes in v2: None
>
> arch/powerpc/cpu/mpc83xx/start.S | 8 ++++----
> arch/powerpc/cpu/mpc85xx/start.S | 11 +++++------
> 2 files changed, 9 insertions(+), 10 deletions(-)
>
> diff --git a/arch/powerpc/cpu/mpc83xx/start.S b/arch/powerpc/cpu/mpc83xx/start.S
> index 2fed4a1..1c3c737 100644
> --- a/arch/powerpc/cpu/mpc83xx/start.S
> +++ b/arch/powerpc/cpu/mpc83xx/start.S
> @@ -274,14 +274,14 @@ in_flash:
> cmplw r3, r4
> bne 1b
>
> -#ifdef CONFIG_SYS_MALLOC_F_LEN
> +#if CONFIG_VAL(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."
> +#if CONFIG_VAL(SYS_MALLOC_F_LEN) + GENERATED_GBL_DATA_SIZE > CONFIG_SYS_INIT_RAM_SIZE
> +#error "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
> + subi r3, r3, CONFIG_VAL(SYS_MALLOC_F_LEN)
>
> /* Set pointer to pre-reloc malloc area in GD */
> stw r3, GD_MALLOC_BASE(r4)
> diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S
> index 63fdffd..58cb9fc 100644
> --- a/arch/powerpc/cpu/mpc85xx/start.S
> +++ b/arch/powerpc/cpu/mpc85xx/start.S
> @@ -1183,14 +1183,13 @@ _start_cont:
> lis r3,(CONFIG_SYS_INIT_RAM_ADDR)@h
> ori r3,r3,((CONFIG_SYS_INIT_SP_OFFSET-16)&~0xf)@l /* Align to 16 */
>
> -#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."
> +#if CONFIG_VAL(SYS_MALLOC_F_LEN)
> +#if CONFIG_VAL(SYS_MALLOC_F_LEN) + GENERATED_GBL_DATA_SIZE > CONFIG_SYS_INIT_RAM_SIZE
> +#error "SYS_MALLOC_F_LEN too large to fit into initial RAM."
> #endif
>
> /* Leave 16+ byte for back chain termination and NULL return address */
> - subi r3,r3,((CONFIG_SYS_MALLOC_F_LEN+16+15)&~0xf)
> + subi r3,r3,((CONFIG_VAL(SYS_MALLOC_F_LEN)+16+15)&~0xf)
> #endif
Could we now just drop the outermost "#if CONFIG_VAL(SYS_MALLOC_F_LEN)"
guard?
(And as a question to someone with knowledge of the history of this code:)
Why are those 16 bytes ("for back chain termination and NULL return
address") consumed only when CONFIG_SYS_MALLOC_F_LEN is defined? Shouldn't
this be required both with SYS_MALLOC_F_LEN and without?
>
> /* End of RAM */
> @@ -1204,7 +1203,7 @@ _start_cont:
> cmplw r4,r3
> bne 1b
>
> -#ifdef CONFIG_SYS_MALLOC_F_LEN
> +#if CONFIG_VAL(SYS_MALLOC_F_LEN)
> lis r4,(CONFIG_SYS_INIT_RAM_ADDR)@h
> ori r4,r4,(CONFIG_SYS_GBL_DATA_OFFSET)@l
>
>
More information about the U-Boot
mailing list