summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Zaidman <michael.zaidman@gmail.com>2010-02-15 10:02:32 +0200
committerKim Phillips <kim.phillips@freescale.com>2010-02-18 18:25:09 -0600
commit4c006dd1501283eecaea813a0e5e225e9ee6fdeb (patch)
tree0e3f05050abee7b3154675f2de9a43fb718bed77
parent77e7273c40315abd2f3c17ad8d46a78950e3e65f (diff)
downloadu-boot-4c006dd1501283eecaea813a0e5e225e9ee6fdeb.tar.gz
u-boot-4c006dd1501283eecaea813a0e5e225e9ee6fdeb.tar.xz
u-boot-4c006dd1501283eecaea813a0e5e225e9ee6fdeb.zip
Bug: do_reset issued via netconsole does not reset mpc83xx cpu.
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>
-rw-r--r--cpu/mpc83xx/cpu.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/cpu/mpc83xx/cpu.c b/cpu/mpc83xx/cpu.c
index e38a3722ca..51180d6daa 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 */