aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorGraeme Russ <graeme.russ@gmail.com>2010-10-07 20:03:23 +1100
committerGraeme Russ <graeme.russ@gmail.com>2010-10-07 20:03:23 +1100
commit5c161653db3aa585f3e47a650ae177ba9ffb7232 (patch)
tree3eed0f4ee3c40748601cf3430f4b590afaef977c /arch
parent8ffb2e8f3365d9b80e8f7e5b7c0130b875e3b899 (diff)
downloadu-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.mk8
-rw-r--r--arch/i386/cpu/interrupts.c7
-rw-r--r--arch/i386/cpu/start.S12
-rw-r--r--arch/i386/include/asm/interrupt.h2
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