summaryrefslogtreecommitdiff
path: root/arch/i386/cpu/sc520/sc520_asm.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/sc520/sc520_asm.S
parent6ae032a86aa21def97aada054bd24589fdb8e947 (diff)
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/sc520/sc520_asm.S')
-rw-r--r--arch/i386/cpu/sc520/sc520_asm.S17
1 files changed, 3 insertions, 14 deletions
diff --git a/arch/i386/cpu/sc520/sc520_asm.S b/arch/i386/cpu/sc520/sc520_asm.S
index 7c2de31134..e0d3102ce2 100644
--- a/arch/i386/cpu/sc520/sc520_asm.S
+++ b/arch/i386/cpu/sc520/sc520_asm.S
@@ -517,22 +517,11 @@ bad_ram:
jmp bad_reint
dram_done:
+ jmp *%ebp
#if CONFIG_SYS_SDRAM_ECC_ENABLE
- /*
- * We are in the middle of an existing 'call' - Need to store the
- * existing return address before making another 'call'
- */
- movl %ebp, %ebx
-
- /* Get the memory size */
- movl $init_ecc, %ebp
- jmpl get_mem_size
-
+.globl init_ecc
init_ecc:
- /* Restore the orignal return address */
- movl %ebx, %ebp
-
/* A nominal memory test: just a byte at each address line */
movl %eax, %ecx
shrl $0x1, %ecx
@@ -571,10 +560,10 @@ set_ecc:
movl $ECCCTL, %edi
movb $0x05, %al
movb %al,(%edi)
-#endif
out:
jmp *%ebp
+#endif
/*
* Read and decode the sc520 DRCBENDADR MMCR and return the number of