2 /* For more info on sections check the E500 freescale doc: E500ABIUG.pdf
\r
6 OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
\r
13 rcw(R) : ORIGIN = 0x00000000, LENGTH = 0x8
\r
14 flash(R) : ORIGIN = 0x00000008, LENGTH = 0x100000
\r
16 * 5517S,5516G,5516E, 64K RAM
\r
19 ram(RW) : ORIGIN = 0x40000000, LENGTH = 0x100000
\r
24 .rcw : { *(.rcw) }> rcw
\r
28 *(.text .text.* .init .fini* .eini* .gnu.linkonce* .gnu.warning)
\r
32 __FLS_ERASE_ROM__ = .;
\r
34 __FLS_WRITE_ROM__ = .;
\r
36 __FLS_END_ROM__ = .;
\r
39 /* mpc5554, align 64K. mpc5516, 4k */
\r
40 .exception_tbl ALIGN(0x10000) :
\r
45 /* Read-only data section. */
\r
46 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } > flash
\r
48 /* initialized read-only small data section. */
\r
50 _SDA2_BASE_ = .; /* r2 */
\r
51 *(.sdata2 .sdata2.* .gnu.linkonce.s2.*);
\r
52 *(PPC.EMB.sdata2 .PPC.EMB.sbss2)
\r
56 /* uninitialized read-only small data section. */
\r
58 *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*);
\r
64 .data : AT(ALIGN(LOADADDR(.sbss2)+SIZEOF(.sbss2),4)) {
\r
65 __DATA_RAM = .; *(.data .data.* .gnu.linkonce.d.* .gnu.linkonce.r.* .eh_frame)
\r
68 .sdata : AT(ALIGN(LOADADDR(.data)+SIZEOF(.data),4)) {
\r
69 __SDATA_START__ = .;
\r
70 _SDA_BASE_ = .; /* r13 */
\r
71 *(.sdata .sdata.* .gnu.linkonce.s.*)
\r
72 *(PPC.EMB.sdata2 .PPC.EMB.sbss2)
\r
80 *(.sbss .sbss.* .scommon .gnu.linkonce.sb.* .t32_outport);
\r
84 .got2 ALIGN(0x10): {. = . + ALIGN(16);*(.got2); . = . + ALIGN(8); } > ram
\r
85 .fixup : { . = . + ALIGN(16);*(.fixup); . = . + ALIGN(8); } > ram
\r
86 .t32_outport ALIGN(0x10): { *(.t32_outport); } > ram
\r
87 .got : AT(ALIGN(LOADADDR(.sdata)+SIZEOF(.sdata),4)) { *(.got.plt) *(.got) } > ram
\r
88 .bss : { *(.bss .bss.* COMMON .gnu.linkonce.b.*);__BSS_END = .; } > ram
\r
89 .init_stack ALIGN(16) (NOLOAD) : { __SP_END = .;. = . + 3000; __SP_INIT = .; } > ram
\r
90 /* Fls RAM section */
\r
91 .fls_ram ALIGN(16) (NOLOAD) : {
\r
92 __FLS_ERASE_RAM__ = .;
\r
93 . = . + SIZEOF(.fls_rom);
\r
98 KEEP (*(SORT(.ctors.*)))
\r
101 .uninit ALIGN(0x10): { *(.winidea_port .ramlog) ; } > ram
\r
103 __FLS_SIZE__ = SIZEOF(.fls_rom);
\r
104 __FLS_WRITE_RAM__ = __FLS_ERASE_RAM__ + (__FLS_WRITE_ROM__ - __FLS_ERASE_ROM__);
\r
106 /* Stabs debugging sections. */
\r
107 .stab 0 : { *(.stab) }
\r
108 .stabstr 0 : { *(.stabstr) }
\r
109 .stab.excl 0 : { *(.stab.excl) }
\r
110 .stab.exclstr 0 : { *(.stab.exclstr) }
\r
111 .stab.index 0 : { *(.stab.index) }
\r
112 .stab.indexstr 0 : { *(.stab.indexstr) }
\r
113 .comment 0 : { *(.comment) }
\r
114 /* DWARF debug sections.
\r
115 Symbols in the DWARF debugging sections are relative to the beginning
\r
116 of the section so we begin them at 0. */
\r
118 .debug 0 : { *(.debug) }
\r
119 .line 0 : { *(.line) }
\r
120 /* GNU DWARF 1 extensions */
\r
121 .debug_srcinfo 0 : { *(.debug_srcinfo) }
\r
122 .debug_sfnames 0 : { *(.debug_sfnames) }
\r
123 /* DWARF 1.1 and DWARF 2 */
\r
124 .debug_aranges 0 : { *(.debug_aranges) }
\r
125 .debug_pubnames 0 : { *(.debug_pubnames) }
\r
127 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
\r
128 .debug_abbrev 0 : { *(.debug_abbrev) }
\r
129 .debug_line 0 : { *(.debug_line) }
\r
130 .debug_frame 0 : { *(.debug_frame) }
\r
131 .debug_str 0 : { *(.debug_str) }
\r
132 .debug_loc 0 : { *(.debug_loc) }
\r
133 .debug_macinfo 0 : { *(.debug_macinfo) }
\r
134 /* SGI/MIPS DWARF 2 extensions */
\r
135 .debug_weaknames 0 : { *(.debug_weaknames) }
\r
136 .debug_funcnames 0 : { *(.debug_funcnames) }
\r
137 .debug_typenames 0 : { *(.debug_typenames) }
\r
138 .debug_varnames 0 : { *(.debug_varnames) }
\r
141 __TEXT_START = ADDR(.text);
\r
142 __RAM_START = ADDR(.sdata);
\r
144 __DATA_RAM = ADDR(.data);
\r
145 /*__DATA_END = ADDR(.sdata)+SIZEOF(.sdata);*/
\r
146 /*__BSS_START = ADDR(.sbss);*/
\r
147 __BSS_START = ADDR(.sbss);
\r
149 /* _SDA_BASE_ and _SDA2_BASE_ is defined in e500 ABI
\r
150 * Some of the symbols below is used by eabi() that does interesting.
\r
151 * Can't get rid of it even with no-eabi option
\r
154 /* __SBSS_END__ = ADDR(.sbss) + SIZEOF(.sbss); */
\r
155 __SDATA2_START__ = ADDR(.sdata2);
\r
156 __SBSS2_END__ = ADDR(.sbss2) + SIZEOF(.sbss2);
\r
157 __GOT_START__ = ADDR(.got);
\r
158 __GOT_END__ = ADDR(.got) + SIZEOF(.got);
\r
159 __GOT2_START__ = ADDR(.got2);
\r
160 __GOT2_END__ = ADDR(.got2) + SIZEOF(.got2);
\r
161 __FIXUP_START__ = ADDR(.fixup);
\r
162 __FIXUP_END__ = ADDR(.fixup) + SIZEOF(.fixup);
\r
164 __EXCEPT_START__ = 0x0;
\r
165 __EXCEPT_END__ = 0x0;
\r