summaryrefslogtreecommitdiff
path: root/arch/i386/cpu/start.S
diff options
context:
space:
mode:
authorGraeme Russ <graeme.russ@gmail.com>2010-10-07 20:03:26 +1100
committerGraeme Russ <graeme.russ@gmail.com>2010-10-07 20:03:26 +1100
commit00940a229d564044d52a5449bce14090c7298f92 (patch)
tree9ae61181efebefd3cc4c2c98be72a3044e49e61b /arch/i386/cpu/start.S
parent6ae032a86aa21def97aada054bd24589fdb8e947 (diff)
downloadu-boot-imx-00940a229d564044d52a5449bce14090c7298f92.zip
u-boot-imx-00940a229d564044d52a5449bce14090c7298f92.tar.gz
u-boot-imx-00940a229d564044d52a5449bce14090c7298f92.tar.bz2
x86: Move ECC initialisation outside RAM initialisation
To allow for 'load anywhere' images, the %ebp return pointer 'hack' must be removed, so we cannot have two 'calls' to get_mem_size
Diffstat (limited to 'arch/i386/cpu/start.S')
-rw-r--r--arch/i386/cpu/start.S11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/i386/cpu/start.S b/arch/i386/cpu/start.S
index cb47ce7..819274f 100644
--- a/arch/i386/cpu/start.S
+++ b/arch/i386/cpu/start.S
@@ -93,6 +93,17 @@ mem_init_ret:
jmp get_mem_size
get_mem_size_ret:
+#if CONFIG_SYS_SDRAM_ECC_ENABLE
+ /* Skip ECC initialization if not starting from cold-reset */
+ movl %ebx, %ecx
+ andl $GD_FLG_COLD_BOOT, %ecx
+ jz init_ecc_ret
+ mov $init_ecc_ret, %ebp
+ jmp init_ecc
+
+init_ecc_ret:
+#endif
+
/* Check we have enough memory for stack */
movl $CONFIG_SYS_STACK_SIZE, %ecx
cmpl %ecx, %eax