]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - bootrom/ldscript-flash
Some random cleanup
[proxmark3-svn] / bootrom / ldscript-flash
index 0d5d732561bfacfe524dcd571cf0c46693a2c2d0..ba6384c53f3ae16427cae119d29ceca894dcaf1b 100644 (file)
@@ -1,11 +1,63 @@
-SECTIONS\r
-{\r
-    . = 0x00000000;\r
-    .text : { obj/flash-reset.o(.text) *(.text) }\r
-    .rodata : { *(.rodata) }\r
-    . = 0x00200000;\r
-    .data : { *(.data) }\r
-    __bss_start__ = .;\r
-    .bss : { *(.bss) }\r
-    __bss_end__ = .;\r
-}\r
+/*
+-----------------------------------------------------------------------------
+ This code is licensed to you under the terms of the GNU GPL, version 2 or,
+ at your option, any later version. See the LICENSE.txt file for the text of
+ the license.
+-----------------------------------------------------------------------------
+ Bootrom linker script
+-----------------------------------------------------------------------------
+*/
+
+INCLUDE ../common/ldscript.common
+
+ENTRY(flashstart)
+SECTIONS
+{
+    . = 0;
+    
+    .bootphase1 : {
+       *(.startup) 
+       *(.bootphase1)
+       
+       /* It seems to be impossible to flush align a section at the
+          end of a memory segment. Instead, we'll put the version_information
+          wherever the linker wants it, and then put a pointer to the start
+          of the version information at the end of the section.
+          -- Henryk Plötz <henryk@ploetzli.ch> 2009-08-28 */
+          
+       _version_information_start = ABSOLUTE(.);
+       *(.version_information);
+       
+       /* Why doesn't this work even though _bootphase1_version_pointer = 0x1001fc?
+         . = _bootphase1_version_pointer - ORIGIN(bootphase1); */
+       /* This works, apparently it fools the linker into accepting an absolute address */
+       . = _bootphase1_version_pointer - ORIGIN(bootphase1) + ORIGIN(bootphase1);
+       LONG(_version_information_start)
+    } >bootphase1
+    
+    __bootphase2_src_start__ = ORIGIN(bootphase2);
+    .bootphase2 : {
+       __bootphase2_start__ = .;
+       *(.startphase2)
+       *(.text)
+       *(.eh_frame)
+       *(.glue_7)
+       *(.glue_7t)
+       *(.rodata)
+        *(.data)
+       . = ALIGN( 32 / 8 );
+       __bootphase2_end__ = .;
+    } >ram AT>bootphase2
+    
+    .bss : {
+       __bss_start__ = .; 
+       *(.bss)
+    } >ram
+    
+    . = ALIGN( 32 / 8 );
+    __bss_end__ = .;
+    
+    .commonarea (NOLOAD) : {
+       *(.commonarea)
+    } >commonarea
+}
Impressum, Datenschutz