]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/karo/tx53/u-boot.lds
update to 2015.04-rc1
[karo-tx-uboot.git] / board / karo / tx53 / u-boot.lds
index 9276d3b130c121296edfcd0b55aa192bdc0dcbd9..9de3dc5182e4501168002430cd86adb76839fa20 100644 (file)
@@ -27,12 +27,42 @@ SECTIONS
        . = 0x00000000;
        .text :
        {
-               KEEP(board/karo/tx53/lowlevel_init.o (.text*))
                *(.__image_copy_start)
+               *(.vectors)
                CPUDIR/start.o (.text*)
+               . = 0x400;
+               KEEP(BOARDDIR/lowlevel_init.o (.text*))
                *(.text*)
        }
 
+#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT) || defined(CONFIG_ARMV7_PSCI)
+
+#ifndef CONFIG_ARMV7_SECURE_BASE
+#define CONFIG_ARMV7_SECURE_BASE
+#endif
+
+       .__secure_start : {
+               . = ALIGN(0x1000);
+               *(.__secure_start)
+       }
+
+       .secure_text CONFIG_ARMV7_SECURE_BASE :
+               AT(ADDR(.__secure_start) + SIZEOF(.__secure_start))
+       {
+               *(._secure.text)
+       }
+
+       . = LOADADDR(.__secure_start) +
+               SIZEOF(.__secure_start) +
+               SIZEOF(.secure_text);
+
+       __secure_end_lma = .;
+       .__secure_end : AT(__secure_end_lma) {
+               *(.__secure_end)
+               LONG(0x1d1071c);        /* Must output something to reset LMA */
+       }
+#endif
+
        . = ALIGN(4);
        .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
 
@@ -71,13 +101,14 @@ SECTIONS
         * that skips loading the last block if it doesn't
         * end on a 4KiB boundary.
         */
+
        . = ALIGN(4096);
        .uboot_img_end :
        {
                *(.__uboot_img_end)
        }
 
-       _end = .;
+       _image_binary_end = .;
 
 /*
  * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c
@@ -97,13 +128,15 @@ SECTIONS
        .bss_end __bss_limit (OVERLAY) : {
                KEEP(*(.__bss_end));
        }
-       /DISCARD/ : { *(.bss*) }
-       /DISCARD/ : { *(.dynstr*) }
-       /DISCARD/ : { *(.dynsym*) }
-       /DISCARD/ : { *(.dynamic*) }
-       /DISCARD/ : { *(.hash*) }
-       /DISCARD/ : { *(.plt*) }
-       /DISCARD/ : { *(.interp*) }
-       /DISCARD/ : { *(.gnu*) }
+
+       .dynsym _image_binary_end : { *(.dynsym) }
+       .dynbss : { *(.dynbss) }
+       .dynstr : { *(.dynstr*) }
+       .dynamic : { *(.dynamic*) }
+       .plt : { *(.plt*) }
+       .interp : { *(.interp*) }
+       .gnu.hash : { *(.gnu.hash) }
+       .gnu : { *(.gnu*) }
+       .ARM.exidx : { *(.ARM.exidx*) }
+       .gnu.linkonce.armexidx : { *(.gnu.linkonce.armexidx.*) }
 }