From d94f92cbd7f4a4d3bf0d5d963b709c686e8f6633 Mon Sep 17 00:00:00 2001 From: wdenk Date: Thu, 28 Aug 2003 09:41:22 +0000 Subject: * Fix ICU862 environment problem * Fix RAM size detection for RMU board * Implement "reset" for MGT5100/MPC5200 systems --- cpu/mpc5xxx/cpu.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'cpu/mpc5xxx/cpu.c') diff --git a/cpu/mpc5xxx/cpu.c b/cpu/mpc5xxx/cpu.c index 7d95d2f9c3..c481d187df 100644 --- a/cpu/mpc5xxx/cpu.c +++ b/cpu/mpc5xxx/cpu.c @@ -54,31 +54,17 @@ int checkcpu (void) int do_reset (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) { - ulong msr, addr; - - *(vu_long *)MPC5XXX_CDM_SRESET &= ~(1 << 16); /* Checkstop Reset enable */ - + ulong msr; /* Interrupts and MMU off */ __asm__ __volatile__ ("mfmsr %0":"=r" (msr):); msr &= ~(MSR_ME | MSR_EE | MSR_IR | MSR_DR); __asm__ __volatile__ ("mtmsr %0"::"r" (msr)); - /* - * Trying to execute the next instruction at a non-existing address - * should cause a machine check, resulting in reset - */ -#ifdef CFG_RESET_ADDRESS - addr = CFG_RESET_ADDRESS; -#else - /* - * note: when CFG_MONITOR_BASE points to a RAM address, CFG_MONITOR_BASE - * - sizeof (ulong) is usually a valid address. Better pick an address - * known to be invalid on your system and assign it to CFG_RESET_ADDRESS. - */ - addr = CFG_MONITOR_BASE - sizeof (ulong); -#endif - ((void (*)(void)) addr) (); + /* Charge the watchdog timer */ + *(vu_long *)(MPC5XXX_GPT0_COUNTER) = 0xf; + *(vu_long *)(MPC5XXX_GPT0_ENABLE) = 0x9004; /* wden|ce|timer_ms */ + return 1; } -- cgit