]> git.zerfleddert.de Git - proxmark3-svn/blame - bootrom/ldscript-flash
oops. in the spirit of cleaner code, don't do stuff twice!
[proxmark3-svn] / bootrom / ldscript-flash
CommitLineData
2bfed17d 1INCLUDE ../common/ldscript.common\r
8652988d 2\r
2bfed17d 3ENTRY(flashstart)\r
6658905f 4SECTIONS\r
5{\r
8652988d 6 . = 0;\r
7 \r
4271e82d 8 .bootphase1 : {\r
8652988d 9 *(.startup) \r
10 *(.bootphase1)\r
8a6aec16 11 \r
12 /* It seems to be impossible to flush align a section at the\r
13 end of a memory segment. Instead, we'll put the version_information\r
14 wherever the linker wants it, and then put a pointer to the start\r
15 of the version information at the end of the section.\r
16 -- Henryk Plötz <henryk@ploetzli.ch> 2009-08-28 */\r
17 \r
4271e82d 18 _version_information_start = ABSOLUTE(.);\r
8a6aec16 19 *(.version_information);\r
20 \r
57fcd2d7 21 /* Why doesn't this work even though _bootphase1_version_pointer = 0x1001fc?\r
4271e82d 22 . = _bootphase1_version_pointer - ORIGIN(bootphase1); */\r
23 /* This works, apparently it fools the linker into accepting an absolute address */\r
24 . = _bootphase1_version_pointer - ORIGIN(bootphase1) + ORIGIN(bootphase1);\r
8a6aec16 25 LONG(_version_information_start)\r
8652988d 26 } >bootphase1\r
27 \r
e3ae0257 28 __bootphase2_src_start__ = ORIGIN(bootphase2);\r
4271e82d 29 .bootphase2 : {\r
8652988d 30 __bootphase2_start__ = .;\r
31 *(.startphase2)\r
32 *(.text)\r
57fcd2d7 33 *(.eh_frame)\r
8652988d 34 *(.glue_7)\r
fb6e5aa8 35 *(.glue_7t)\r
8652988d 36 *(.rodata)\r
37 *(.data)\r
38 . = ALIGN( 32 / 8 );\r
39 __bootphase2_end__ = .;\r
40 } >ram AT>bootphase2\r
41 \r
42 .bss : {\r
43 __bss_start__ = .; \r
44 *(.bss)\r
45 } >ram\r
46 \r
47 . = ALIGN( 32 / 8 );\r
6658905f 48 __bss_end__ = .;\r
8fcbf652 49 \r
50 .commonarea (NOLOAD) : {\r
51 *(.commonarea)\r
52 } >commonarea\r
6658905f 53}\r
Impressum, Datenschutz