arm926ejs, tx25: add support for ELF relocations

Signed-off-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
Heiko Schocher 2010-10-11 14:08:14 +02:00 committed by Wolfgang Denk
parent 4a8fd13af8
commit 9710504d20
5 changed files with 21 additions and 6 deletions

View File

@ -70,5 +70,7 @@ LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds
ifndef CONFIG_SYS_ARM_WITHOUT_RELOC ifndef CONFIG_SYS_ARM_WITHOUT_RELOC
# needed for relocation # needed for relocation
ifndef CONFIG_NAND_SPL
PLATFORM_LDFLAGS += -pie PLATFORM_LDFLAGS += -pie
endif endif
endif

View File

@ -279,10 +279,10 @@ clbss_l:str r2, [r0] /* clear loop... */
*/ */
#ifdef CONFIG_NAND_SPL #ifdef CONFIG_NAND_SPL
ldr r0, _nand_boot_ofs ldr r0, _nand_boot_ofs
adr r1, _start mov pc, r0
add pc, r0, r1
_nand_boot_ofs _nand_boot_ofs:
: .word nand_boot - _start .word nand_boot
#else #else
ldr r0, _board_init_r_ofs ldr r0, _board_init_r_ofs
adr r1, _start adr r1, _start

View File

@ -1,5 +1,5 @@
ifdef CONFIG_NAND_SPL ifdef CONFIG_NAND_SPL
TEXT_BASE = 0x810c0000 TEXT_BASE = 0x810c0000
else else
TEXT_BASE = 0x81fc0000 TEXT_BASE = 0x81200000
endif endif

View File

@ -41,7 +41,7 @@
#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x800 #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x800
#define CONFIG_SYS_NAND_U_BOOT_SIZE 0x30000 #define CONFIG_SYS_NAND_U_BOOT_SIZE 0x30000
#define CONFIG_SYS_NAND_U_BOOT_DST (0x81fc0000) #define CONFIG_SYS_NAND_U_BOOT_DST (0x81200000)
#define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_NAND_U_BOOT_DST #define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_NAND_U_BOOT_DST
#define CONFIG_SYS_NAND_PAGE_SIZE 2048 #define CONFIG_SYS_NAND_PAGE_SIZE 2048

View File

@ -53,6 +53,11 @@ SECTIONS
*(.data.rel.ro) *(.data.rel.ro)
} }
. = ALIGN(4);
__rel_dyn_start = .;
__rel_dyn_end = .;
__dynsym_start = .;
__got_start = .; __got_start = .;
. = ALIGN(4); . = ALIGN(4);
.got : { *(.got) } .got : { *(.got) }
@ -67,4 +72,12 @@ SECTIONS
__bss_start = .; __bss_start = .;
.bss : { *(.bss) } .bss : { *(.bss) }
_end = .; _end = .;
/DISCARD/ : { *(.bss*) }
/DISCARD/ : { *(.dynstr*) }
/DISCARD/ : { *(.dynsym*) }
/DISCARD/ : { *(.dynamic*) }
/DISCARD/ : { *(.hash*) }
/DISCARD/ : { *(.plt*) }
/DISCARD/ : { *(.interp*) }
/DISCARD/ : { *(.gnu*) }
} }