X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/6658905f18a1eebc148836f26c731dea9c1377dc..0fa9ca5b53e412decad0df1f6b5baca73ae76a9c:/bootrom/ldscript-flash

diff --git a/bootrom/ldscript-flash b/bootrom/ldscript-flash
index 0d5d7325..d2e6648b 100644
--- a/bootrom/ldscript-flash
+++ b/bootrom/ldscript-flash
@@ -1,11 +1,44 @@
+INCLUDE ../common/ldscript.common
+
+ENTRY(flashstart)
 SECTIONS
 {
-    . = 0x00000000;
-    .text : { obj/flash-reset.o(.text) *(.text) }
-    .rodata : { *(.rodata) }
-    . = 0x00200000;
-    .data : { *(.data) }
-    __bss_start__ = .;
-    .bss : { *(.bss) }
+    . = 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 = .;
+    	*(.version_information);
+    	
+    	. = LENGTH(bootphase1) - 0x4; /* Skip ahead to the end */
+    	LONG(_version_information_start)
+    } >bootphase1
+    
+    bootphase2 : {
+    	__bootphase2_start__ = .;
+    	*(.startphase2)
+    	*(.text)
+    	*(.glue_7)
+    	*(.glue_7t)
+    	*(.rodata)
+        *(.data)
+    	. = ALIGN( 32 / 8 );
+    	__bootphase2_end__ = .;
+    } >ram AT>bootphase2
+    
+    .bss : {
+    	__bss_start__ = .; 
+    	*(.bss)
+    } >ram
+    
+    . = ALIGN( 32 / 8 );
     __bss_end__ = .;
 }