diff --git a/board/freescale/common/mpc85xx_sleep.c b/board/freescale/common/mpc85xx_sleep.c index 9e4132c64edc21437f59056b7c2ca4b8ba606071..e9cbd515a152cfd530c28a0e91b6e9ed384149a0 100644 --- a/board/freescale/common/mpc85xx_sleep.c +++ b/board/freescale/common/mpc85xx_sleep.c @@ -43,16 +43,16 @@ void fsl_dp_disable_console(void) */ static void dp_ddr_restore(void) { - volatile u64 *src, *dst; + u64 *src, *dst; int i; struct ccsr_scfg __iomem *scfg = (void *)CONFIG_SYS_MPC85xx_SCFG; /* get the address of ddr date from SPARECR3 */ - src = (u64 *)in_be32(&scfg->sparecr[2]); - dst = (u64 *)CONFIG_SYS_SDRAM_BASE; + src = (u64 *)(in_be32(&scfg->sparecr[2]) + DDR_BUFF_LEN - 8); + dst = (u64 *)(CONFIG_SYS_SDRAM_BASE + DDR_BUFF_LEN - 8); for (i = 0; i < DDR_BUFF_LEN / 8; i++) - *dst++ = *src++; + *dst-- = *src--; flush_dcache(); }