diff options
Diffstat (limited to 'arch/i386')
-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 0e80a1a..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 |