Hi Stefan,

Stefan Roese wrote:
> This patch adds the CONFIG_SKIP_LOWLEVEL_INIT option to start.S. This
> enables support for boards where the lowlevel initialization is
> already done when U-Boot runs (e.g. via OnChip ROM).
> 
> Also the data cache will be flushed upon relocation. This is missing
> in the current implementation.
> 
> All this will be used in the upcoming VCTH board support.
> 
> Signed-off-by: Stefan Roese <[EMAIL PROTECTED]>
> ---
>  cpu/mips/start.S |   19 ++++++++++++++++++-
>  1 files changed, 18 insertions(+), 1 deletions(-)

sorry for my late reply.  Please find the comments below.

> diff --git a/cpu/mips/start.S b/cpu/mips/start.S
> index 6a22302..5b71b00 100644
> --- a/cpu/mips/start.S
> +++ b/cpu/mips/start.S
> @@ -243,9 +243,11 @@ reset:
>       mtc0    zero, CP0_COUNT
>       mtc0    zero, CP0_COMPARE
>  
> +#if !defined(CONFIG_SKIP_LOWLEVEL_INIT)
>       /* CONFIG0 register */
>       li      t0, CONF_CM_UNCACHED
>       mtc0    t0, CP0_CONFIG
> +#endif /* !CONFIG_SKIP_LOWLEVEL_INIT */
>  
>       /* Initialize $gp.
>        */

It might be preferable to remove the /* CONFIG_SKIP_LOWLEVEL_INIT */
comment for better readability, IMHO.

> @@ -323,6 +327,14 @@ relocate_code:
>        * t1 = target address
>        * t2 = source end address
>        */
> +
> +     /*
> +      * Save destination address and size for later usage in flush_cache()
> +      */
> +     move    t7, a1          /* save gd in t7                */
> +     move    a0, t1          /* a0 <-- destination addr      */
> +     sub     a1, t2, t0      /* a1 <-- size                  */
> +
>       /* On the purple board we copy the code earlier in a special way
>        * in order to solve flash problems
>        */
> @@ -338,6 +350,11 @@ relocate_code:
>       /* If caches were enabled, we would have to flush them here.
>        */
>  
> +     /* a0 & a1 are already set up for flush_cache(start, size) */
> +     la      t9, flush_cache
> +     jalr    t9
> +     nop
> +
>       /* Jump to where we've relocated ourselves.
>        */
>       addi    t0, a2, in_ram - _start
> @@ -387,7 +404,7 @@ in_ram:
>       bltl    t1, t2, 1b
>       sw      zero, 0(t1)     /* delay slot                   */
>  
> -     move    a0, a1
> +     move    a0, t7          /* a0 <-- gd                    */
>       la      t9, board_init_r
>       jr      t9
>       move    a1, a2          /* delay slot                   */

- Could we separate this flush_cache patch from this patch?

- Please use save register, s[0-7], instead of t7, since t7 register
  might be overwritten with another value in flush_cache().
  Furthermore, in this case, a2 should be saved as well.


Thanks,

  Shinya
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to