summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorGraeme Russ <graeme.russ@gmail.com>2009-11-24 20:04:21 +1100
committerWolfgang Denk <wd@denx.de>2009-12-05 01:05:39 +0100
commit1c409bc7101a24ecd47a13a4e851845d66dc23ce (patch)
tree0ecc055ef81130abc919cc2123974304dfa75b9e /board
parentcabe5794803fbe18bedac2d9c7f2417a0fa95ec1 (diff)
i386: Final Relocation
Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
Diffstat (limited to 'board')
-rw-r--r--board/eNET/config.mk2
-rw-r--r--board/eNET/eNET.c11
-rw-r--r--board/eNET/u-boot.lds34
3 files changed, 38 insertions, 9 deletions
diff --git a/board/eNET/config.mk b/board/eNET/config.mk
index c9703ea8e88..5c64804fb29 100644
--- a/board/eNET/config.mk
+++ b/board/eNET/config.mk
@@ -23,4 +23,6 @@
TEXT_BASE = 0x38040000
CFLAGS_dlmalloc.o += -Wa,--no-warn -fno-strict-aliasing
+PLATFORM_RELFLAGS += -fvisibility=hidden
PLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm
+PLATFORM_LDFLAGS += -pic --emit-relocs -Bsymbolic -Bsymbolic-functions
diff --git a/board/eNET/eNET.c b/board/eNET/eNET.c
index 29cf29518a0..6d0b15a0fa2 100644
--- a/board/eNET/eNET.c
+++ b/board/eNET/eNET.c
@@ -47,7 +47,6 @@ void init_sc520_enet (void)
{
/* Set CPU Speed to 100MHz */
sc520_mmcr->cpuctl = 0x01;
- gd->cpu_clk = 100000000;
/* wait at least one millisecond */
asm("movl $0x2000,%%ecx\n"
@@ -67,7 +66,7 @@ void init_sc520_enet (void)
/*
* Miscellaneous platform dependent initializations
*/
-int board_init(void)
+int board_early_init_f(void)
{
init_sc520_enet();
@@ -117,6 +116,14 @@ int board_init(void)
sc520_mmcr->sysarbctl = 0x06;
sc520_mmcr->sysarbmenb = 0x0003;
+ return 0;
+}
+
+int board_early_init_r(void)
+{
+ /* CPU Speed to 100MHz */
+ gd->cpu_clk = 100000000;
+
/* Crystal is 33.000MHz */
gd->bus_clk = 33000000;
diff --git a/board/eNET/u-boot.lds b/board/eNET/u-boot.lds
index 4ea424d320c..0d740215ce9 100644
--- a/board/eNET/u-boot.lds
+++ b/board/eNET/u-boot.lds
@@ -28,28 +28,48 @@ ENTRY(_start)
SECTIONS
{
. = 0x38040000; /* Location of bootcode in flash */
+ _i386boot_text_start = .;
.text : { *(.text); }
. = ALIGN(4);
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
_i386boot_text_size = SIZEOF(.text) + SIZEOF(.rodata);
+ . = ALIGN(4);
+
+ .data : { *(.data) }
+ . = ALIGN(4);
+
+ .interp : { *(.interp) }
+ . = ALIGN(4);
+
+ .dynsym : { *(.dynsym) }
+ . = ALIGN(4);
- . = 0x03FF0000; /* Ram data segment to use */
- _i386boot_romdata_dest = ABSOLUTE(.);
- .data : AT ( LOADADDR(.rodata) + SIZEOF(.rodata) ) { *(.data) }
- _i386boot_romdata_start = LOADADDR(.data);
+ .dynstr : { *(.dynstr) }
+ . = ALIGN(4);
+
+ .hash : { *(.hash) }
+ . = ALIGN(4);
+ .got : { *(.got) }
. = ALIGN(4);
- .got : AT ( LOADADDR(.data) + SIZEOF(.data) ) { *(.got) }
+ .got.plt : { *(.got.plt) }
. = ALIGN(4);
+
+ .dynamic (NOLOAD) : { *(.dynamic) }
+ . = ALIGN(4);
+
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
+ . = ALIGN(4);
__u_boot_cmd_end = .;
_i386boot_cmd_start = LOADADDR(.u_boot_cmd);
- _i386boot_romdata_size = SIZEOF(.data) + SIZEOF(.got) + SIZEOF(.u_boot_cmd);
+ _i386boot_rel_dyn_start = .;
+ .rel.dyn : { *(.rel.dyn) }
+ _i386boot_rel_dyn_end = .;
. = ALIGN(4);
_i386boot_bss_start = ABSOLUTE(.);
@@ -57,7 +77,7 @@ SECTIONS
_i386boot_bss_size = SIZEOF(.bss);
/* 16bit realmode trampoline code */
- .realmode 0x7c0 : AT ( LOADADDR(.got) + SIZEOF(.got) + SIZEOF(.u_boot_cmd)) { *(.realmode) }
+ .realmode 0x7c0 : AT ( LOADADDR(.rel.dyn) + SIZEOF(.rel.dyn) ) { *(.realmode) }
_i386boot_realmode = LOADADDR(.realmode);
_i386boot_realmode_size = SIZEOF(.realmode);