]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - bootrom/ldscript-flash
usability hint
[proxmark3-svn] / bootrom / ldscript-flash
index 0d5d732561bfacfe524dcd571cf0c46693a2c2d0..ccc0db2ffef2e297f6faeda354d7bca7af52b9b4 100644 (file)
@@ -1,11 +1,53 @@
+INCLUDE ../common/ldscript.common\r
+\r
+ENTRY(flashstart)\r
 SECTIONS\r
 {\r
 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
+    . = 0;\r
+    \r
+    .bootphase1 : {\r
+       *(.startup) \r
+       *(.bootphase1)\r
+       \r
+       /* It seems to be impossible to flush align a section at the\r
+          end of a memory segment. Instead, we'll put the version_information\r
+          wherever the linker wants it, and then put a pointer to the start\r
+          of the version information at the end of the section.\r
+          -- Henryk Plötz <henryk@ploetzli.ch> 2009-08-28 */\r
+          \r
+       _version_information_start = ABSOLUTE(.);\r
+       *(.version_information);\r
+       \r
+       /* Why doesn't this work even though _bootphase1_version_pointer = 0x1001fc?\r
+         . = _bootphase1_version_pointer - ORIGIN(bootphase1); */\r
+       /* This works, apparently it fools the linker into accepting an absolute address */\r
+       . = _bootphase1_version_pointer - ORIGIN(bootphase1) + ORIGIN(bootphase1);\r
+       LONG(_version_information_start)\r
+    } >bootphase1\r
+    \r
+    __bootphase2_src_start__ = ORIGIN(bootphase2);\r
+    .bootphase2 : {\r
+       __bootphase2_start__ = .;\r
+       *(.startphase2)\r
+       *(.text)\r
+       *(.eh_frame)\r
+       *(.glue_7)\r
+       *(.glue_7t)\r
+       *(.rodata)\r
+        *(.data)\r
+       . = ALIGN( 32 / 8 );\r
+       __bootphase2_end__ = .;\r
+    } >ram AT>bootphase2\r
+    \r
+    .bss : {\r
+       __bss_start__ = .; \r
+       *(.bss)\r
+    } >ram\r
+    \r
+    . = ALIGN( 32 / 8 );\r
     __bss_end__ = .;\r
     __bss_end__ = .;\r
+    \r
+    .commonarea (NOLOAD) : {\r
+       *(.commonarea)\r
+    } >commonarea\r
 }\r
 }\r
Impressum, Datenschutz