x86: Don't clobber %ebx
%ebx will hold low-level boot flags and must be preserved
This commit is contained in:
parent
88fa0a6eb9
commit
5f2679055d
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue