x86: Don't clobber %ebx

%ebx will hold low-level boot flags and must be preserved
This commit is contained in:
Graeme Russ 2010-10-07 20:03:28 +11:00
parent 88fa0a6eb9
commit 5f2679055d
2 changed files with 12 additions and 7 deletions

View File

@ -174,6 +174,9 @@
.globl mem_init .globl mem_init
mem_init: mem_init:
/* Preserve Boot Flags */
movl %ebx, %ebp
/* initialize dram controller registers */ /* initialize dram controller registers */
xorw %ax, %ax xorw %ax, %ax
movl $DBCTL, %edi movl $DBCTL, %edi
@ -517,6 +520,8 @@ bad_ram:
jmp bad_reint jmp bad_reint
dram_done: dram_done:
/* Restore Boot Flags */
movl %ebx, %ebp
jmp mem_init_ret jmp mem_init_ret
#if CONFIG_SYS_SDRAM_ECC_ENABLE #if CONFIG_SYS_SDRAM_ECC_ENABLE
@ -579,7 +584,7 @@ bank0: movl (%edi), %eax
jz bank1 jz bank1
andl $0x0000007f, %eax andl $0x0000007f, %eax
shll $22, %eax shll $22, %eax
movl %eax, %ebx movl %eax, %edx
bank1: movl (%edi), %eax bank1: movl (%edi), %eax
movl %eax, %ecx movl %eax, %ecx
@ -587,7 +592,7 @@ bank1: movl (%edi), %eax
jz bank2 jz bank2
andl $0x00007f00, %eax andl $0x00007f00, %eax
shll $14, %eax shll $14, %eax
movl %eax, %ebx movl %eax, %edx
bank2: movl (%edi), %eax bank2: movl (%edi), %eax
movl %eax, %ecx movl %eax, %ecx
@ -595,7 +600,7 @@ bank2: movl (%edi), %eax
jz bank3 jz bank3
andl $0x007f0000, %eax andl $0x007f0000, %eax
shll $6, %eax shll $6, %eax
movl %eax, %ebx movl %eax, %edx
bank3: movl (%edi), %eax bank3: movl (%edi), %eax
movl %eax, %ecx movl %eax, %ecx
@ -603,8 +608,8 @@ bank3: movl (%edi), %eax
jz done jz done
andl $0x7f000000, %eax andl $0x7f000000, %eax
shrl $2, %eax shrl $2, %eax
movl %eax, %ebx movl %eax, %edx
done: done:
movl %ebx, %eax movl %edx, %eax
jmp get_mem_size_ret jmp get_mem_size_ret

View File

@ -118,8 +118,8 @@ mem_ok:
cmpl $0, %eax cmpl $0, %eax
jne die jne die
push $0x55aa55aa push $0x55aa55aa
popl %ebx popl %ecx
cmpl $0x55aa55aa, %ebx cmpl $0x55aa55aa, %ecx
jne die jne die
wbinvd wbinvd