x86: Fix sc520 memory size reporting

There is an error in how the assembler version of the sc520 memory size
reporting code works. As a result, it will only ever report at most the
size of one bank of RAM

Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
This commit is contained in:
Graeme Russ 2010-04-24 00:05:40 +10:00 committed by Wolfgang Denk
parent 9e08efcfee
commit 4dba333b3c

View File

@ -503,38 +503,37 @@ dram_done:
movl $DRCBENDADR, %edi /* DRAM ending address register */ movl $DRCBENDADR, %edi /* DRAM ending address register */
movl (%edi), %eax bank0: movl (%edi), %eax
movl %eax, %ecx movl %eax, %ecx
andl $0x80000000, %ecx andl $0x00000080, %ecx
jz bank2
andl $0x7f000000, %eax
shrl $2, %eax
movl %eax, %ebx
bank2: movl (%edi), %eax
movl %eax, %ecx
andl $0x00800000, %ecx
jz bank1 jz bank1
andl $0x007f0000, %eax andl $0x0000007f, %eax
shll $6, %eax shll $22, %eax
movl %eax, %ebx movl %eax, %ebx
bank1: movl (%edi), %eax bank1: movl (%edi), %eax
movl %eax, %ecx movl %eax, %ecx
andl $0x00008000, %ecx andl $0x00008000, %ecx
jz bank0 jz bank2
andl $0x00007f00, %eax andl $0x00007f00, %eax
shll $14, %eax shll $14, %eax
movl %eax, %ebx movl %eax, %ebx
bank0: movl (%edi), %eax bank2: movl (%edi), %eax
movl %eax, %ecx movl %eax, %ecx
andl $0x00000080, %ecx andl $0x00800000, %ecx
jz done jz bank3
andl $0x0000007f, %eax andl $0x007f0000, %eax
shll $22, %eax shll $6, %eax
movl %eax, %ebx movl %eax, %ebx
bank3: movl (%edi), %eax
movl %eax, %ecx
andl $0x80000000, %ecx
jz done
andl $0x7f000000, %eax
shrl $2, %eax
movl %eax, %ebx
done: done:
movl %ebx, %eax movl %ebx, %eax