]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/sparc/cpu/leon3/u-boot.lds
sparc: merge LEON3 linker scripts
[karo-tx-uboot.git] / arch / sparc / cpu / leon3 / u-boot.lds
diff --git a/arch/sparc/cpu/leon3/u-boot.lds b/arch/sparc/cpu/leon3/u-boot.lds
new file mode 100644 (file)
index 0000000..cdc8394
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Linker script for Gaisler Research AB's GRSIM LEON3 simulator.
+ *
+ * (C) Copyright 2007
+ * Daniel Hellstrom, Gaisler Research, daniel@gaisler.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc")
+OUTPUT_ARCH(sparc)
+ENTRY(_start)
+SECTIONS
+{
+
+/* Read-only sections, merged into text segment: */
+       . = + SIZEOF_HEADERS;
+       .interp : { *(.interp) }
+       .hash          : { *(.hash) }
+       .dynsym        : { *(.dynsym) }
+       .dynstr        : { *(.dynstr) }
+       .rel.text      : { *(.rel.text) }
+       .rela.text     : { *(.rela.text) }
+       .rel.data      : { *(.rel.data) }
+       .rela.data     : { *(.rela.data) }
+       .rel.rodata    : { *(.rel.rodata) }
+       .rela.rodata   : { *(.rela.rodata) }
+       .rel.got       : { *(.rel.got) }
+       .rela.got      : { *(.rela.got) }
+       .rel.ctors     : { *(.rel.ctors) }
+       .rela.ctors    : { *(.rela.ctors) }
+       .rel.dtors     : { *(.rel.dtors) }
+       .rela.dtors    : { *(.rela.dtors) }
+       .rel.bss       : { *(.rel.bss) }
+       .rela.bss      : { *(.rela.bss) }
+       .rel.plt       : { *(.rel.plt) }
+       .rela.plt      : { *(.rela.plt) }
+       .init          : { *(.init) }
+       .plt : { *(.plt) }
+
+       .text : {
+               _load_addr = .;
+               _text = .;
+
+               *(.start)
+               arch/sparc/cpu/leon3/start.o (.text)
+/* 8k is the same as the PROM offset from end of main memory, (CONFIG_SYS_PROM_SIZE) */
+               . = ALIGN(8192);
+/* PROM CODE, Will be relocated to the end of memory,
+ * no global data accesses please.
+ */
+               __prom_start = .;
+               *(.prom.pgt)
+               *(.prom.data)
+               *(.prom.text)
+               . = ALIGN(16);
+               __prom_end = .;
+               *(.text)
+               *(.fixup)
+               *(.gnu.warning)
+/*             *(.got1)*/
+               . = ALIGN(16);
+               *(.eh_frame)
+               *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
+       }
+       . = ALIGN(4);
+       _etext = .;
+
+       /* CMD Table */
+
+
+       . = ALIGN(4);
+       .u_boot_list : {
+               KEEP(*(SORT(.u_boot_list*)));
+       }
+
+       .data   :
+       {
+               *(.data)
+               *(.data1)
+               *(.data.rel)
+               *(.data.rel.*)
+               *(.sdata)
+               *(.sdata2)
+               *(.dynamic)
+               CONSTRUCTORS
+       }
+       _edata  =       .;
+       PROVIDE (edata = .);
+
+       . = ALIGN(4);
+       __got_start = .;
+       .got : {
+               *(.got)
+/*             *(.data.rel)
+               *(.data.rel.local)*/
+               . = ALIGN(16);
+       }
+       __got_end = .;
+
+/*     .data.rel : { } */
+
+
+       . = ALIGN(4096);
+       __init_begin = .;
+       .text.init : { *(.text.init) }
+       .data.init : { *(.data.init) }
+       . = ALIGN(4096);
+       __init_end = .;
+
+       __bss_start = .;
+       .bss    :
+       {
+        *(.sbss) *(.scommon)
+        *(.dynbss)
+        *(.bss)
+        *(COMMON)
+       . = ALIGN(16); /* to speed clearing of bss up */
+       }
+       __bss_end = . ;
+       __bss_end = . ;
+       PROVIDE (end = .);
+
+/* Relocated into main memory */
+
+       /* Start of main memory */
+       /*. = 0x40000000;*/
+
+       .stack (NOLOAD) : { *(.stack) }
+
+       /* PROM CODE */
+
+       /* global data in RAM passed to kernel after booting */
+
+
+       .stab 0         : { *(.stab) }
+       .stabstr 0              : { *(.stabstr) }
+       .stab.excl 0            : { *(.stab.excl) }
+       .stab.exclstr 0 : { *(.stab.exclstr) }
+       .stab.index 0           : { *(.stab.index) }
+       .stab.indexstr 0        : { *(.stab.indexstr) }
+       .comment 0              : { *(.comment) }
+
+}