[U-Boot] [RFC] x86: Do no use reparm as it break libgcc linkage

Graeme Russ graeme.russ at gmail.com
Wed Nov 9 11:32:59 CET 2011


Hi Gabe,

Can you please try this patch - If it solves your libgcc problem, I will
add it to the misc cleanup patch

Thanks,

Graeme
---
 arch/x86/config.mk        |    3 ---
 arch/x86/cpu/interrupts.c |    2 +-
 arch/x86/cpu/start.S      |    5 ++---
 3 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/arch/x86/config.mk b/arch/x86/config.mk
index fe9083f..ec5f707 100644
--- a/arch/x86/config.mk
+++ b/arch/x86/config.mk
@@ -23,10 +23,7 @@

 CONFIG_STANDALONE_LOAD_ADDR ?= 0x40000

-PLATFORM_CPPFLAGS += -fno-strict-aliasing
 PLATFORM_CPPFLAGS += -Wstrict-prototypes
-PLATFORM_CPPFLAGS += -mregparm=3
-PLATFORM_CPPFLAGS += -fomit-frame-pointer
 PF_CPPFLAGS_X86   := $(call cc-option, -ffreestanding) \
 		     $(call cc-option, -fno-toplevel-reorder, \
 		       $(call cc-option, -fno-unit-at-a-time)) \
diff --git a/arch/x86/cpu/interrupts.c b/arch/x86/cpu/interrupts.c
index e0958eb..a15d70a 100644
--- a/arch/x86/cpu/interrupts.c
+++ b/arch/x86/cpu/interrupts.c
@@ -249,7 +249,7 @@ int disable_interrupts(void)
 }

 /* IRQ Low-Level Service Routine */
-void irq_llsr(struct irq_regs *regs)
+void __attribute__ ((regparm(1))) irq_llsr(struct irq_regs *regs)
 {
 	/*
 	 * For detailed description of each exception, refer to:
diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S
index f87633b..119ca2d 100644
--- a/arch/x86/cpu/start.S
+++ b/arch/x86/cpu/start.S
@@ -84,9 +84,8 @@ car_init_ret:
 	 */
 	movl	$CONFIG_SYS_INIT_SP_ADDR, %esp

-	/* Set parameter to board_init_f() to boot flags */
-	xorl	%eax, %eax
-	movw	%bx, %ax
+	/* Set parameter to board_init_f() - Unused dummy value */
+	pushl	$0

 	/* Enter, U-boot! */
 	call	board_init_f
--
1.7.5.2.317.g391b14



More information about the U-Boot mailing list