[U-Boot] [PATCH] Bug: do_reset issued via netconsole does not reset mpc83xx cpu.

Detlev Zundel dzu at denx.de
Mon Feb 15 18:18:34 CET 2010


Michael Zaidman <michael.zaidman at gmail.com> writes:

> The do_reset routine in the cpu/mpc83xx/cpu.c file does not reset
> the mpc83xx cpu when issued via netconsole.
>
> Moving the console output "resetting the board." to the beginning of
> the routine before disabling interrupts solved the problem.
>
> Signed-off-by: Michael Zaidman <michael.zaidman at gmail.com>

Acked-by: Detlev Zundel <dzu at denx.de>

> ---
>  cpu/mpc83xx/cpu.c |    8 +++-----
>  1 files changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/cpu/mpc83xx/cpu.c b/cpu/mpc83xx/cpu.c
> index e38a372..51180d6 100644
> --- a/cpu/mpc83xx/cpu.c
> +++ b/cpu/mpc83xx/cpu.c
> @@ -199,7 +199,10 @@ do_reset (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
>  
>  	volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
>  
> +	puts("Resetting the board.\n");
> +
>  #ifdef MPC83xx_RESET
> +
>  	/* Interrupts and MMU off */
>  	__asm__ __volatile__ ("mfmsr    %0":"=r" (msr):);
>  
> @@ -214,9 +217,6 @@ do_reset (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
>  	/* confirm Reset Control Reg is enabled */
>  	while(!((immap->reset.rcer) & RCER_CRE));
>  
> -	printf("Resetting the board.");
> -	printf("\n");
> -
>  	udelay(200);
>  
>  	/* perform reset, only one bit */
> @@ -238,8 +238,6 @@ do_reset (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
>  	 */
>  	addr = CONFIG_SYS_RESET_ADDRESS;
>  
> -	printf("resetting the board.");
> -	printf("\n");
>  	((void (*)(void)) addr) ();
>  #endif	/* MPC83xx_RESET */

Cheers
  Detlev

-- 
Less talking -- more hacking
                                        -- Olin Shivers
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de


More information about the U-Boot mailing list