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
master
Graeme Russ 14 years ago
parent 8ffb2e8f33
commit 5c161653db
  1. 8
      arch/i386/config.mk
  2. 7
      arch/i386/cpu/interrupts.c
  3. 12
      arch/i386/cpu/start.S
  4. 2
      arch/i386/include/asm/interrupt.h

@ -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

@ -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" \

@ -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 */

@ -41,6 +41,4 @@ void specific_eoi(int irq);
extern char exception_stack[];
#define __isr__ void __attribute__ ((regparm(0)))
#endif

Loading…
Cancel
Save