]> git.sur5r.net Git - u-boot/commitdiff
Bug: do_reset issued via netconsole does not reset mpc83xx cpu.
authorMichael Zaidman <michael.zaidman@gmail.com>
Mon, 15 Feb 2010 08:02:32 +0000 (10:02 +0200)
committerKim Phillips <kim.phillips@freescale.com>
Fri, 19 Feb 2010 00:25:09 +0000 (18:25 -0600)
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@gmail.com>
Acked-by: Detlev Zundel <dzu@denx.de>
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
cpu/mpc83xx/cpu.c

index e38a3722ca25f6fc7c8f082cbb787f770b6d28e5..51180d6daa5f96865c49d9eb53aeaf26d00f3a7e 100644 (file)
@@ -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 */