2 Linker file used to link the bootloader.
6 /* Simplified memory map for the bootloader
8 The main purpose is to make sure the bootloader can load into main memory
9 without overwriting itself.
14 dport0_seg (RW) : org = 0x3FF00000, len = 0x10
15 /* IRAM POOL1, used for APP CPU cache. We can abuse it in bootloader because APP CPU is still held in reset, the main app enables APP CPU cache */
16 iram_seg (RWX) : org = 0x40078000, len = 0x8000
17 /* 64k at the end of DRAM, after ROM bootloader stack */
18 dram_seg (RW) : org = 0x3FFF0000, len = 0x10000
21 /* Default entry point: */
22 ENTRY(call_start_cpu0);
40 _bss_start = ABSOLUTE(.);
48 *(.gnu.linkonce.sb2.*)
55 _bss_end = ABSOLUTE(.);
60 _data_start = ABSOLUTE(.);
72 _data_end = ABSOLUTE(.);
77 _rodata_start = ABSOLUTE(.);
82 __XT_EXCEPTION_TABLE_ = ABSOLUTE(.);
89 /* C++ constructor and destructor tables, properly ordered: */
90 __init_array_start = ABSOLUTE(.);
91 KEEP (*crtbegin.o(.ctors))
92 KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
93 KEEP (*(SORT(.ctors.*)))
95 __init_array_end = ABSOLUTE(.);
96 KEEP (*crtbegin.o(.dtors))
97 KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
98 KEEP (*(SORT(.dtors.*)))
100 /* C++ exception handlers table: */
101 __XT_EXCEPTION_DESCS_ = ABSOLUTE(.);
104 __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
105 *(.xt_except_desc_end)
108 _rodata_end = ABSOLUTE(.);
109 /* Literals are also RO data. */
110 _lit4_start = ABSOLUTE(.);
113 *(.gnu.linkonce.lit4.*)
114 _lit4_end = ABSOLUTE(.);
116 _heap_start = ABSOLUTE(.);
122 _text_start = ABSOLUTE(.);
123 *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
124 *(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
128 _text_end = ABSOLUTE(.);