[U-Boot] [PATCH v2 13/20] x86: Don't clobber %ebx

Graeme Russ graeme.russ at gmail.com
Tue Oct 5 13:19:19 CEST 2010


%ebx will hold low-level boot flags and must be preserved

Signed-off-by: Graeme Russ <graeme.russ at gmail.com>
---
 arch/i386/cpu/sc520/sc520_asm.S |   15 ++++++++++-----
 arch/i386/cpu/start.S           |    4 ++--
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/arch/i386/cpu/sc520/sc520_asm.S b/arch/i386/cpu/sc520/sc520_asm.S
index a18e2c3..63c14b7 100644
--- a/arch/i386/cpu/sc520/sc520_asm.S
+++ b/arch/i386/cpu/sc520/sc520_asm.S
@@ -174,6 +174,9 @@
 
 .globl mem_init
 mem_init:
+	/* Preserve Boot Flags */
+	movl	%ebx, %ebp
+
 	/* initialize dram controller registers */
 	xorw	%ax, %ax
 	movl	$DBCTL, %edi
@@ -517,6 +520,8 @@ bad_ram:
 	jmp	bad_reint
 
 dram_done:
+	/* Restore Boot Flags */
+	movl	%ebx, %ebp
 	jmp	mem_init_ret
 
 #if CONFIG_SYS_SDRAM_ECC_ENABLE
@@ -579,7 +584,7 @@ bank0:	movl	(%edi), %eax
 	jz	bank1
 	andl	$0x0000007f, %eax
 	shll	$22, %eax
-	movl	%eax, %ebx
+	movl	%eax, %edx
 
 bank1:	movl	(%edi), %eax
 	movl	%eax, %ecx
@@ -587,7 +592,7 @@ bank1:	movl	(%edi), %eax
 	jz	bank2
 	andl	$0x00007f00, %eax
 	shll	$14, %eax
-	movl	%eax, %ebx
+	movl	%eax, %edx
 
 bank2:	movl	(%edi), %eax
 	movl	%eax, %ecx
@@ -595,7 +600,7 @@ bank2:	movl	(%edi), %eax
 	jz	bank3
 	andl	$0x007f0000, %eax
 	shll	$6, %eax
-	movl	%eax, %ebx
+	movl	%eax, %edx
 
 bank3:	movl	(%edi), %eax
 	movl	%eax, %ecx
@@ -603,8 +608,8 @@ bank3:	movl	(%edi), %eax
 	jz	done
 	andl	$0x7f000000, %eax
 	shrl	$2, %eax
-	movl	%eax, %ebx
+	movl	%eax, %edx
 
 done:
-	movl	%ebx, %eax
+	movl	%edx, %eax
 	jmp	get_mem_size_ret
diff --git a/arch/i386/cpu/start.S b/arch/i386/cpu/start.S
index 551965f..63f7334 100644
--- a/arch/i386/cpu/start.S
+++ b/arch/i386/cpu/start.S
@@ -118,8 +118,8 @@ mem_ok:
 	cmpl	$0, %eax
 	jne	die
 	push	$0x55aa55aa
-	popl	%ebx
-	cmpl	$0x55aa55aa, %ebx
+	popl	%ecx
+	cmpl	$0x55aa55aa, %ecx
 	jne	die
 
 	wbinvd
-- 
1.7.1.422.g049e9



More information about the U-Boot mailing list