diff options
author | Graeme Russ <graeme.russ@gmail.com> | 2010-10-07 20:03:23 +1100 |
---|---|---|
committer | Graeme Russ <graeme.russ@gmail.com> | 2010-10-07 20:03:23 +1100 |
commit | 5c161653db3aa585f3e47a650ae177ba9ffb7232 (patch) | |
tree | 3eed0f4ee3c40748601cf3430f4b590afaef977c /arch | |
parent | 8ffb2e8f3365d9b80e8f7e5b7c0130b875e3b899 (diff) | |
download | u-boot-midas-5c161653db3aa585f3e47a650ae177ba9ffb7232.tar.gz u-boot-midas-5c161653db3aa585f3e47a650ae177ba9ffb7232.tar.bz2 u-boot-midas-5c161653db3aa585f3e47a650ae177ba9ffb7232.zip |
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
Diffstat (limited to 'arch')
-rw-r--r-- | arch/i386/config.mk | 8 | ||||
-rw-r--r-- | arch/i386/cpu/interrupts.c | 7 | ||||
-rw-r--r-- | arch/i386/cpu/start.S | 12 | ||||
-rw-r--r-- | 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 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 |