summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
Diffstat (limited to 'board')
-rw-r--r--board/eNET/eNET_start.S14
-rw-r--r--board/eNET/eNET_start16.S3
-rw-r--r--board/eNET/u-boot.lds67
3 files changed, 33 insertions, 51 deletions
diff --git a/board/eNET/eNET_start.S b/board/eNET/eNET_start.S
index 1b07d62..137fe41 100644
--- a/board/eNET/eNET_start.S
+++ b/board/eNET/eNET_start.S
@@ -27,19 +27,7 @@
.globl early_board_init
early_board_init:
/* No 32-bit board specific initialisation */
- jmp *%ebp /* return to caller */
-
-.globl show_boot_progress_asm
-show_boot_progress_asm:
-
- movb %al, %dl /* Create Working Copy */
- andb $0x80, %dl /* Mask in only Error bit */
- shrb $0x02, %dl /* Shift Error bit to Error LED */
- andb $0x0f, %al /* Mask out 'Error' bit */
- orb %dl, %al /* Mask in ERR LED */
- movw $LED_LATCH_ADDRESS, %dx
- outb %al, %dx
- 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
diff --git a/board/eNET/u-boot.lds b/board/eNET/u-boot.lds
index 7b0ffaa..b414079b 100644
--- a/board/eNET/u-boot.lds
+++ b/board/eNET/u-boot.lds
@@ -27,66 +27,62 @@ ENTRY(_start)
SECTIONS
{
- . = 0x06000000; /* Location of bootcode in flash */
- _i386boot_text_start = .;
- .text : { *(.text); }
+ . = TEXT_BASE; /* Location of bootcode in flash */
+ __text_start = .;
+ .text : { *(.text*); }
. = ALIGN(4);
- .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-
- _i386boot_text_size = SIZEOF(.text) + SIZEOF(.rodata);
+ __u_boot_cmd_start = .;
+ .u_boot_cmd : { *(.u_boot_cmd) }
. = ALIGN(4);
+ __u_boot_cmd_end = .;
- .data : { *(.data) }
. = ALIGN(4);
+ .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
- .interp : { *(.interp) }
. = ALIGN(4);
+ .data : { *(.data*) }
- .dynsym : { *(.dynsym) }
. = ALIGN(4);
+ .dynsym : { *(.dynsym*) }
- .dynstr : { *(.dynstr) }
. = ALIGN(4);
+ .hash : { *(.hash*) }
- .hash : { *(.hash) }
. = ALIGN(4);
+ .got : { *(.got*) }
- .got : { *(.got) }
. = ALIGN(4);
+ __data_end = .;
- .got.plt : { *(.got.plt) }
. = ALIGN(4);
-
- .dynamic (NOLOAD) : { *(.dynamic) }
+ __bss_start = ABSOLUTE(.);
+ .bss (NOLOAD) : { *(.bss) }
. = ALIGN(4);
+ __bss_end = ABSOLUTE(.);
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
. = ALIGN(4);
- __u_boot_cmd_end = .;
- _i386boot_cmd_start = LOADADDR(.u_boot_cmd);
-
- _i386boot_rel_dyn_start = .;
+ __rel_dyn_start = .;
.rel.dyn : { *(.rel.dyn) }
- _i386boot_rel_dyn_end = .;
+ __rel_dyn_end = .;
- . = ALIGN(4);
- _i386boot_bss_start = ABSOLUTE(.);
- .bss (NOLOAD) : { *(.bss) }
- _i386boot_bss_size = SIZEOF(.bss);
+ /DISCARD/ : { *(.dynstr*) }
+ /DISCARD/ : { *(.dynamic*) }
+ /DISCARD/ : { *(.plt*) }
+ /DISCARD/ : { *(.interp*) }
+ /DISCARD/ : { *(.gnu*) }
/* 16bit realmode trampoline code */
- .realmode 0x7c0 : AT ( LOADADDR(.rel.dyn) + SIZEOF(.rel.dyn) ) { *(.realmode) }
+ .realmode 0x7c0 : AT ( LOADADDR(.rel.dyn) + SIZEOF(.rel.dyn) ) { KEEP(*(.realmode)) }
- _i386boot_realmode = LOADADDR(.realmode);
- _i386boot_realmode_size = SIZEOF(.realmode);
+ __realmode_start = LOADADDR(.realmode);
+ __realmode_size = SIZEOF(.realmode);
/* 16bit BIOS emulation code (just enough to boot Linux) */
- .bios 0 : AT ( LOADADDR(.realmode) + SIZEOF(.realmode) ) { *(.bios) }
+ .bios 0 : AT ( LOADADDR(.realmode) + SIZEOF(.realmode) ) { KEEP(*(.bios)) }
- _i386boot_bios = LOADADDR(.bios);
- _i386boot_bios_size = SIZEOF(.bios);
+ __bios_start = LOADADDR(.bios);
+ __bios_size = SIZEOF(.bios);
/* The load addresses below assumes that the flash
* will be mapped so that 0x387f0000 == 0xffff0000
@@ -98,12 +94,11 @@ SECTIONS
* The fff0 offset of resetvec is important, however.
*/
. = 0xfffffe00;
- .start32 : AT (0x0603fe00) { *(.start32); }
+ .start32 : AT (TEXT_BASE + 0x3fe00) { KEEP(*(.start32)); }
. = 0xf800;
- .start16 : AT (0x0603f800) { *(.start16); }
+ .start16 : AT (TEXT_BASE + 0x3f800) { KEEP(*(.start16)); }
. = 0xfff0;
- .resetvec : AT (0x0603fff0) { *(.resetvec); }
- _i386boot_end = (LOADADDR(.resetvec) + SIZEOF(.resetvec) );
+ .resetvec : AT (TEXT_BASE + 0x3fff0) { KEEP(*(.resetvec)); }
}