From 5c161653db3aa585f3e47a650ae177ba9ffb7232 Mon Sep 17 00:00:00 2001 From: Graeme Russ Date: Thu, 7 Oct 2010 20:03:23 +1100 Subject: x86: Change compiler options 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 --- 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(-) (limited to 'arch') diff --git a/arch/i386/config.mk b/arch/i386/config.mk index 0e80a1ae58..8743f1a663 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 51023f3a86..47a7a29013 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 f67a1b7a6e..90dfd5d210 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 07426fe6a7..99ae8437b8 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 -- cgit v1.2.1