[U-Boot] [PATCH 07/19] x86: Change compiler options

Graeme Russ graeme.russ at gmail.com
Mon Oct 4 05:37:51 CEST 2010


Change to:
 - reparam=3
 - no-from-pointer
 - no-stack-protector
 - preferred-stack-boundary=2
 - no-top-level-reorder

These options make the code a little smaller and faster

Signed-off-by: Graeme Russ <graeme.russ at gmail.com>
---
 arch/i386/config.mk               |    8 ++++++++
 arch/i386/cpu/interrupts.c        |    7 +------
 arch/i386/cpu/start.S             |   12 +++---------
 arch/i386/include/asm/interrupt.h |    2 --
 4 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/arch/i386/config.mk b/arch/i386/config.mk
index 0e80a1ae..8743f1a 100644
--- a/arch/i386/config.mk
+++ b/arch/i386/config.mk
@@ -25,6 +25,14 @@ CROSS_COMPILE ?= i386-linux-
 
 STANDALONE_LOAD_ADDR = 0x40000
 
+PLATFORM_CPPFLAGS += -fno-strict-aliasing
+PLATFORM_CPPFLAGS += -Wstrict-prototypes
+PLATFORM_CPPFLAGS += -mregparm=3
+PLATFORM_CPPFLAGS += -fomit-frame-pointer
+PLATFORM_CPPFLAGS += $(call cc-option, -ffreestanding)
+PLATFORM_CPPFLAGS += $(call cc-option, -fno-toplevel-reorder,  $(call cc-option, -fno-unit-at-a-time))
+PLATFORM_CPPFLAGS += $(call cc-option, -fno-stack-protector)
+PLATFORM_CPPFLAGS += $(call cc-option, -mpreferred-stack-boundary=2)
 PLATFORM_CPPFLAGS += -DCONFIG_I386 -D__I386__
 
 LDFLAGS += --cref --gc-sections
diff --git a/arch/i386/cpu/interrupts.c b/arch/i386/cpu/interrupts.c
index 51023f3..47a7a29 100644
--- a/arch/i386/cpu/interrupts.c
+++ b/arch/i386/cpu/interrupts.c
@@ -225,7 +225,7 @@ int disable_interrupts(void)
 }
 
 /* IRQ Low-Level Service Routine */
-__isr__ irq_llsr(struct pt_regs *regs)
+void irq_llsr(struct pt_regs *regs)
 {
 	/*
 	 * For detailed description of each exception, refer to:
@@ -370,12 +370,7 @@ asm(".globl irq_common_entry\n" \
 	"pushl %ecx\n" \
 	"pushl %ebx\n" \
 	"mov   %esp, %eax\n" \
-	"pushl %ebp\n" \
-	"movl %esp,%ebp\n" \
-	"pushl %eax\n" \
 	"call irq_llsr\n" \
-	"popl %eax\n" \
-	"leave\n"\
 	"popl %ebx\n" \
 	"popl %ecx\n" \
 	"popl %edx\n" \
diff --git a/arch/i386/cpu/start.S b/arch/i386/cpu/start.S
index f67a1b7..90dfd5d 100644
--- a/arch/i386/cpu/start.S
+++ b/arch/i386/cpu/start.S
@@ -149,16 +149,10 @@ stack_ok:
 
 	wbinvd
 
-	/* Get upper memory limit */
-	movl	%esp, %ecx
-	subl	$CONFIG_SYS_STACK_SIZE, %ecx
+	/* Set the upper memory limit parameter */
+	movl	%esp, %eax
+	subl	$CONFIG_SYS_STACK_SIZE, %eax
 
-	/* Create a Stack Frame */
-	pushl	%ebp
-	movl	%esp, %ebp
-
-	/* stack_limit parameter */
-	pushl	%ecx
 	call	board_init_f	/* Enter, U-boot! */
 
 	/* indicate (lack of) progress */
diff --git a/arch/i386/include/asm/interrupt.h b/arch/i386/include/asm/interrupt.h
index 07426fe..99ae843 100644
--- a/arch/i386/include/asm/interrupt.h
+++ b/arch/i386/include/asm/interrupt.h
@@ -41,6 +41,4 @@ void specific_eoi(int irq);
 
 extern char exception_stack[];
 
-#define __isr__ void __attribute__ ((regparm(0)))
-
 #endif
-- 
1.7.1.422.g049e9



More information about the U-Boot mailing list