diff options
Diffstat (limited to 'board/eNET')
| -rw-r--r-- | board/eNET/config.mk | 2 | ||||
| -rw-r--r-- | board/eNET/eNET.c | 11 | ||||
| -rw-r--r-- | board/eNET/u-boot.lds | 34 | 
3 files changed, 38 insertions, 9 deletions
| diff --git a/board/eNET/config.mk b/board/eNET/config.mk index c9703ea8e..5c64804fb 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 29cf29518..6d0b15a0f 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 4ea424d32..0d740215c 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); |