sh: make the linker scripts more generic

currently we need to sync the linker script enty and TEXT_BASE manualy
and the reloc_dst is based on it

instead provide it now from the ldflags

tested on r2dplus

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
master
Jean-Christophe PLAGNIOL-VILLARD 15 years ago committed by Nobuhiro Iwamatsu
parent ce29817212
commit 236aad8758
  1. 5
      Makefile
  2. 13
      board/mpr2/u-boot.lds
  3. 15
      board/ms7720se/u-boot.lds
  4. 15
      board/ms7722se/u-boot.lds
  5. 15
      board/ms7750se/u-boot.lds
  6. 15
      board/renesas/MigoR/u-boot.lds
  7. 15
      board/renesas/ap325rxa/u-boot.lds
  8. 15
      board/renesas/r2dplus/u-boot.lds
  9. 15
      board/renesas/r7780mp/u-boot.lds
  10. 10
      board/renesas/rsk7203/u-boot.lds
  11. 15
      board/renesas/sh7763rdp/u-boot.lds
  12. 7
      board/renesas/sh7785lcr/u-boot.lds
  13. 96
      board/renesas/sh7785lcr/u-boot_29bit
  14. 96
      board/renesas/sh7785lcr/u-boot_32bit
  15. 1
      sh_config.mk

@ -3534,14 +3534,9 @@ sh7785lcr_config : unconfig
@echo "#define CONFIG_SH7785LCR 1" > $(obj)include/config.h @echo "#define CONFIG_SH7785LCR 1" > $(obj)include/config.h
@if [ "$(findstring 32bit, $@)" ] ; then \ @if [ "$(findstring 32bit, $@)" ] ; then \
echo "#define CONFIG_SH_32BIT 1" >> $(obj)include/config.h ; \ echo "#define CONFIG_SH_32BIT 1" >> $(obj)include/config.h ; \
cp $(obj)board/renesas/sh7785lcr/u-boot_32bit \
$(obj)board/renesas/sh7785lcr/u-boot.lds ; \
echo "TEXT_BASE = 0x8ff80000" > \ echo "TEXT_BASE = 0x8ff80000" > \
$(obj)board/renesas/sh7785lcr/config.tmp ; \ $(obj)board/renesas/sh7785lcr/config.tmp ; \
$(XECHO) " ... enable 32-Bit Address Extended Mode" ; \ $(XECHO) " ... enable 32-Bit Address Extended Mode" ; \
else \
cp $(obj)board/renesas/sh7785lcr/u-boot_29bit \
$(obj)board/renesas/sh7785lcr/u-boot.lds ; \
fi fi
@$(MKCONFIG) -a $(call xtract_sh7785lcr,$@) sh sh4 sh7785lcr renesas @$(MKCONFIG) -a $(call xtract_sh7785lcr,$@) sh sh4 sh7785lcr renesas

@ -34,16 +34,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
Base address of internal SDRAM is 0x8C000000. * entry and reloct_dst will be provided via ldflags
U-Boot resides in the last 256 kB of the 64 MB. */
. = .;
NOTE: This address must match with the definition of
TEXT_BASE in config.mk (in this directory).
*/
. = 0x8C000000 + (64*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -31,18 +31,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
Base address of internal SDRAM is 0x0C000000. * entry and reloct_dst will be provided via ldflags
Although size of SDRAM can be either 16 or 32 MBytes, */
we assume 16 MBytes (ie ignore upper half if the full . = .;
32 MBytes is present).
NOTE: This address must match with the definition of
TEXT_BASE in config.mk (in this directory).
*/
. = 0x8C000000 + (64*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -28,18 +28,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
Base address of internal SDRAM is 0x0C000000. * entry and reloct_dst will be provided via ldflags
Although size of SDRAM can be either 16 or 32 MBytes, */
we assume 16 MBytes (ie ignore upper half if the full . = .;
32 MBytes is present).
NOTE: This address must match with the definition of
TEXT_BASE in config.mk (in this directory).
*/
. = 0x8C000000 + (64*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -28,18 +28,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
Base address of internal SDRAM is 0x0C000000. * entry and reloct_dst will be provided via ldflags
Although size of SDRAM can be either 16 or 32 MBytes, */
we assume 16 MBytes (ie ignore upper half if the full . = .;
32 MBytes is present).
NOTE: This address must match with the definition of
TEXT_BASE in config.mk (in this directory).
*/
. = 0x8C000000 + (64*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -28,18 +28,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
Base address of internal SDRAM is 0x0C000000. * entry and reloct_dst will be provided via ldflags
Although size of SDRAM can be either 16 or 32 MBytes, */
we assume 16 MBytes (ie ignore upper half if the full . = .;
32 MBytes is present).
NOTE: This address must match with the definition of
TEXT_BASE in config.mk (in this directory).
*/
. = 0x8C000000 + (64*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -28,18 +28,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
Base address of internal SDRAM is 0x88000000. * entry and reloct_dst will be provided via ldflags
Although size of SDRAM can be either 16 or 32 MBytes, */
we assume 16 MBytes (ie ignore upper half if the full . = .;
32 MBytes is present).
NOTE: This address must match with the definition of
TEXT_BASE in config.mk (in this directory).
*/
. = 0x88000000 + (128*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -28,18 +28,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
Base address of internal SDRAM is 0x0C000000. * entry and reloct_dst will be provided via ldflags
Although size of SDRAM can be either 16 or 32 MBytes, */
we assume 16 MBytes (ie ignore upper half if the full . = .;
32 MBytes is present).
NOTE: This address must match with the definition of
TEXT_BASE in config.mk (in this directory).
*/
. = 0x0C000000 + (64*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -28,18 +28,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
Base address of internal SDRAM is 0x0C000000. * entry and reloct_dst will be provided via ldflags
Although size of SDRAM can be either 16 or 32 MBytes, */
we assume 16 MBytes (ie ignore upper half if the full . = .;
32 MBytes is present).
NOTE: This address must match with the definition of
TEXT_BASE in config.mk (in this directory).
*/
. = 0x08000000 + (128*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -28,15 +28,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
* Base address of internal SDRAM is 0x0C000000. * entry and reloct_dst will be provided via ldflags
*
* NOTE: This address must match with the definition of
*TEXT_BASE in config.mk (in this directory).
*/ */
. = .;
. = 0x0C000000 + (8*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -28,18 +28,9 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
/* /*
Base address of internal SDRAM is 0x0C000000. * entry and reloct_dst will be provided via ldflags
Although size of SDRAM can be either 16 or 32 MBytes, */
we assume 16 MBytes (ie ignore upper half if the full . = .;
32 MBytes is present).
NOTE: This address must match with the definition of
TEXT_BASE in config.mk (in this directory).
*/
. = 0x8C000000 + (64*1024*1024) - (256*1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -28,9 +28,10 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
. = 0x88000000 + (128 * 1024 * 1024) - (512 * 1024); /*
* entry and reloct_dst will be provided via ldflags
PROVIDE (reloc_dst = .); */
. = .;
PROVIDE (_ftext = .); PROVIDE (_ftext = .);
PROVIDE (_fcode = .); PROVIDE (_fcode = .);

@ -1,96 +0,0 @@
/*
* Copyrigth (c) 2007
* Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
* Copyrigth (c) 2008 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
OUTPUT_FORMAT("elf32-sh-linux", "elf32-sh-linux", "elf32-sh-linux")
OUTPUT_ARCH(sh)
ENTRY(_start)
SECTIONS
{
. = 0x08000000 + (128 * 1024 * 1024) - (512 * 1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .);
PROVIDE (_fcode = .);
PROVIDE (_start = .);
.text :
{
cpu/sh4/start.o (.text)
. = ALIGN(8192);
common/env_embedded.o (.ppcenv)
. = ALIGN(8192);
common/env_embedded.o (.ppcenvr)
. = ALIGN(8192);
*(.text)
. = ALIGN(4);
} =0xFF
PROVIDE (_ecode = .);
.rodata :
{
*(.rodata)
. = ALIGN(4);
}
PROVIDE (_etext = .);
PROVIDE (_fdata = .);
.data :
{
*(.data)
. = ALIGN(4);
}
PROVIDE (_edata = .);
PROVIDE (_fgot = .);
.got :
{
*(.got)
. = ALIGN(4);
}
PROVIDE (_egot = .);
PROVIDE (__u_boot_cmd_start = .);
.u_boot_cmd :
{
*(.u_boot_cmd)
. = ALIGN(4);
}
PROVIDE (__u_boot_cmd_end = .);
PROVIDE (reloc_dst_end = .);
/* _reloc_dst_end = .; */
PROVIDE (bss_start = .);
PROVIDE (__bss_start = .);
.bss :
{
*(.bss)
. = ALIGN(4);
}
PROVIDE (bss_end = .);
PROVIDE (_end = .);
}

@ -1,96 +0,0 @@
/*
* Copyrigth (c) 2007
* Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
* Copyrigth (c) 2008-2009 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
OUTPUT_FORMAT("elf32-sh-linux", "elf32-sh-linux", "elf32-sh-linux")
OUTPUT_ARCH(sh)
ENTRY(_start)
SECTIONS
{
. = 0x88000000 + (128 * 1024 * 1024) - (512 * 1024);
PROVIDE (reloc_dst = .);
PROVIDE (_ftext = .);
PROVIDE (_fcode = .);
PROVIDE (_start = .);
.text :
{
cpu/sh4/start.o (.text)
. = ALIGN(8192);
common/env_embedded.o (.ppcenv)
. = ALIGN(8192);
common/env_embedded.o (.ppcenvr)
. = ALIGN(8192);
*(.text)
. = ALIGN(4);
} =0xFF
PROVIDE (_ecode = .);
.rodata :
{
*(.rodata)
. = ALIGN(4);
}
PROVIDE (_etext = .);
PROVIDE (_fdata = .);
.data :
{
*(.data)
. = ALIGN(4);
}
PROVIDE (_edata = .);
PROVIDE (_fgot = .);
.got :
{
*(.got)
. = ALIGN(4);
}
PROVIDE (_egot = .);
PROVIDE (__u_boot_cmd_start = .);
.u_boot_cmd :
{
*(.u_boot_cmd)
. = ALIGN(4);
}
PROVIDE (__u_boot_cmd_end = .);
PROVIDE (reloc_dst_end = .);
/* _reloc_dst_end = .; */
PROVIDE (bss_start = .);
PROVIDE (__bss_start = .);
.bss :
{
*(.bss)
. = ALIGN(4);
}
PROVIDE (bss_end = .);
PROVIDE (_end = .);
}

@ -22,3 +22,4 @@
# #
PLATFORM_CPPFLAGS += -DCONFIG_SH -D__SH__ PLATFORM_CPPFLAGS += -DCONFIG_SH -D__SH__
PLATFORM_LDFLAGS += -e $(TEXT_BASE) --defsym reloc_dst=$(TEXT_BASE)

Loading…
Cancel
Save