diff options
author | wdenk <wdenk> | 2003-08-28 09:41:22 +0000 |
---|---|---|
committer | wdenk <wdenk> | 2003-08-28 09:41:22 +0000 |
commit | d94f92cbd7f4a4d3bf0d5d963b709c686e8f6633 (patch) | |
tree | c85dd4a10c5a68ca09b9139c1b6428d55ada6451 /cpu/mpc5xxx/cpu.c | |
parent | e0ac62d798ce60ec5d43125d4786e58b0d881836 (diff) | |
download | u-boot-imx-d94f92cbd7f4a4d3bf0d5d963b709c686e8f6633.zip u-boot-imx-d94f92cbd7f4a4d3bf0d5d963b709c686e8f6633.tar.gz u-boot-imx-d94f92cbd7f4a4d3bf0d5d963b709c686e8f6633.tar.bz2 |
* Fix ICU862 environment problem
* Fix RAM size detection for RMU board
* Implement "reset" for MGT5100/MPC5200 systems
Diffstat (limited to 'cpu/mpc5xxx/cpu.c')
-rw-r--r-- | cpu/mpc5xxx/cpu.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/cpu/mpc5xxx/cpu.c b/cpu/mpc5xxx/cpu.c index 7d95d2f..c481d18 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; } |