diff options
author | Graeme Russ <graeme.russ@gmail.com> | 2010-10-07 09:03:27 (GMT) |
---|---|---|
committer | Graeme Russ <graeme.russ@gmail.com> | 2010-10-07 09:03:27 (GMT) |
commit | 88fa0a6eb906b532cd073b6e3d8f688c47404709 (patch) | |
tree | 051370dd80becb73110138d0eb39a0767bbb83a8 | |
parent | 00940a229d564044d52a5449bce14090c7298f92 (diff) | |
download | u-boot-fsl-qoriq-88fa0a6eb906b532cd073b6e3d8f688c47404709.tar.xz |
x86: Remove usage of %ebp as a return pointer
Using %ebp as a return pointer prevents creating 'load anywhere' images
-rw-r--r-- | arch/i386/cpu/sc520/sc520_asm.S | 6 | ||||
-rw-r--r-- | arch/i386/cpu/start.S | 12 | ||||
-rw-r--r-- | arch/i386/cpu/start16.S | 2 | ||||
-rw-r--r-- | board/eNET/eNET_start.S | 2 | ||||
-rw-r--r-- | board/eNET/eNET_start16.S | 3 |
5 files changed, 12 insertions, 13 deletions
diff --git a/arch/i386/cpu/sc520/sc520_asm.S b/arch/i386/cpu/sc520/sc520_asm.S index e0d3102..a18e2c3 100644 --- a/arch/i386/cpu/sc520/sc520_asm.S +++ b/arch/i386/cpu/sc520/sc520_asm.S @@ -517,7 +517,7 @@ bad_ram: jmp bad_reint dram_done: - jmp *%ebp + jmp mem_init_ret #if CONFIG_SYS_SDRAM_ECC_ENABLE .globl init_ecc @@ -562,7 +562,7 @@ set_ecc: movb %al,(%edi) out: - jmp *%ebp + jmp init_ecc_ret #endif /* @@ -607,4 +607,4 @@ bank3: movl (%edi), %eax done: movl %ebx, %eax - jmp *%ebp + jmp get_mem_size_ret diff --git a/arch/i386/cpu/start.S b/arch/i386/cpu/start.S index 819274f..551965f 100644 --- a/arch/i386/cpu/start.S +++ b/arch/i386/cpu/start.S @@ -1,7 +1,7 @@ /* * U-boot - i386 Startup Code * - * Copyright (c) 2002 Omicron Ceti AB, Daniel Engström <denaiel@omicron.se> + * Copyright (c) 2002 Omicron Ceti AB, Daniel Engstr�m <denaiel@omicron.se> * * See file CREDITS for list of people who contributed to this * project. @@ -79,18 +79,18 @@ _start: * to store the return address */ /* Early platform init (setup gpio, etc ) */ - mov $early_board_init_ret, %ebp jmp early_board_init +.globl early_board_init_ret early_board_init_ret: /* size memory */ - mov $mem_init_ret, %ebp jmp mem_init +.globl mem_init_ret mem_init_ret: /* fetch memory size (into %eax) */ - mov $get_mem_size_ret, %ebp jmp get_mem_size +.globl get_mem_size_ret get_mem_size_ret: #if CONFIG_SYS_SDRAM_ECC_ENABLE @@ -98,9 +98,9 @@ get_mem_size_ret: movl %ebx, %ecx andl $GD_FLG_COLD_BOOT, %ecx jz init_ecc_ret - mov $init_ecc_ret, %ebp jmp init_ecc +.globl init_ecc_ret init_ecc_ret: #endif @@ -116,7 +116,7 @@ mem_ok: pushl $0 popl %eax cmpl $0, %eax - jne no_stack + jne die push $0x55aa55aa popl %ebx cmpl $0x55aa55aa, %ebx diff --git a/arch/i386/cpu/start16.S b/arch/i386/cpu/start16.S index 2a5cca9..0de4d09 100644 --- a/arch/i386/cpu/start16.S +++ b/arch/i386/cpu/start16.S @@ -35,8 +35,8 @@ start16: * First we let the BSP do some early initialization * this code have to map the flash to its final position */ - mov $board_init16_ret, %bp jmp board_init16 +.globl board_init16_ret board_init16_ret: /* Turn of cache (this might require a 486-class CPU) */ diff --git a/board/eNET/eNET_start.S b/board/eNET/eNET_start.S index 6659549..137fe41 100644 --- a/board/eNET/eNET_start.S +++ b/board/eNET/eNET_start.S @@ -27,7 +27,7 @@ .globl early_board_init early_board_init: /* No 32-bit board specific initialisation */ - jmp *%ebp /* return to caller */ + jmp early_board_init_ret .globl cpu_halt_asm cpu_halt_asm: diff --git a/board/eNET/eNET_start16.S b/board/eNET/eNET_start16.S index af2c132..06cfd55 100644 --- a/board/eNET/eNET_start16.S +++ b/board/eNET/eNET_start16.S @@ -65,8 +65,7 @@ board_init16: movl $0x000000cb, %eax outl %eax, %dx - /* the return address is stored in bp */ - jmp *%bp + jmp board_init16_ret .section .bios, "ax" .code16 |