OSDN Git Service

fe34699b48f7bbd6293464b8cdedcf0006eb2aaf
[trx-305dsp/dsp.git] / trx305 / kernel / config / blackfin / _common_bf518 / bf518elf_00.ld
1 /*
2 * ADSP-BF518 Rev 0.0用ELFファイル。命令SRAMバンクBの配置が間違っているアノーマリ05000444へ対応している。
3 * このあのーまりを修正した Rev 0.1以降では使用できない。
4 */
5
6 OUTPUT_FORMAT("elf32-bfin","elf32-bfin","elf32-bfin")
7 OUTPUT_ARCH(bfin)
8
9 PROVIDE (ldf_stack_end = 0xffb00FFC ) ;
10 PROVIDE (hardware_init_hook = 0) ;
11 PROVIDE (software_init_hook = 0) ;
12 PROVIDE (software_term_hook = 0) ;
13 PROVIDE (__kernel_boot_for_gdb = 0);
14
15 ENTRY (start);
16
17 MEMORY
18   {
19     MEM_SDRAM (XW)    : ORIGIN = 0x00000000, LENGTH = 128M
20     MEM_ASYNC_0 (XW)  : ORIGIN = 0x20000000, LENGTH = 1M
21     MEM_ASYNC_1 (XW)  : ORIGIN = 0x20100000, LENGTH = 1M
22     MEM_ASYNC_2 (XW)  : ORIGIN = 0x20200000, LENGTH = 1M
23     MEM_ASYNC_3 (XW)  : ORIGIN = 0x20300000, LENGTH = 1M
24
25     MEM_DATA_A (W!X)  : ORIGIN = 0xff800000, LENGTH = 32K
26     MEM_DATA_B (W!X)  : ORIGIN = 0xff900000, LENGTH = 16K   /* BF518のバンクBは32kBだが、キャッシュ用に16kBあけておく */
27     MEM_INST_A (XR)   : ORIGIN = 0xffa00000, LENGTH = 16K
28     MEM_INST_B (XR)   : ORIGIN = 0xffa08000, LENGTH = 16K
29 /*  MEM_INST_C (XR)   : ORIGIN = 0xffa10000, LENGTH = 16K   BF518のバンクCは16kBだが、キャッシュ用にあけておく */
30     MEM_SCRATCH (W!X) : ORIGIN = 0xffb00000, LENGTH = 4K
31
32     MEM_SYSMMR (W!X)  : ORIGIN = 0xffc00000, LENGTH = 2M
33     MEM_COREMMR (W!X) : ORIGIN = 0xffe00000, LENGTH = 2M
34   }
35 SECTIONS
36 {
37
38 /* Read-only sections, merged into text segment: */
39   .interp         : { *(.interp) }
40   .hash           : { *(.hash) }
41   .dynsym         : { *(.dynsym) }
42   .dynstr         : { *(.dynstr) }
43   .gnu.version    : { *(.gnu.version) }
44   .gnu.version_d  : { *(.gnu.version_d) }
45   .gnu.version_r  : { *(.gnu.version_r) }
46   .rel.init       : { *(.rel.init) }
47   .rela.init      : { *(.rela.init) }
48   .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
49   .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
50   .rel.fini       : { *(.rel.fini) }
51   .rela.fini      : { *(.rela.fini) }
52   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
53   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
54   .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
55   .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
56   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
57   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
58   .rel.tdata      : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
59   .rela.tdata     : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
60   .rel.tbss   : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
61   .rela.tbss      : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
62   .rel.ctors      : { *(.rel.ctors) }
63   .rela.ctors     : { *(.rela.ctors) }
64   .rel.dtors      : { *(.rel.dtors) }
65   .rela.dtors     : { *(.rela.dtors) }
66   .rel.got        : { *(.rel.got) }
67   .rela.got       : { *(.rela.got) }
68   .rel.sdata      : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
69   .rela.sdata     : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
70   .rel.sbss       : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
71   .rela.sbss      : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
72   .rel.sdata2     : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
73   .rela.sdata2    : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
74   .rel.sbss2      : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
75   .rela.sbss2     : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
76   .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
77   .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
78   .rel.plt        : { *(.rel.plt) }
79   .rela.plt       : { *(.rela.plt) }
80   .l2             :
81   {
82     *(.l2 .l2.*)
83   } >MEM_SDRAM
84  
85   .start           :
86   {
87     KEEP (*(.start))
88   } >MEM_INST_A =0
89  
90   .text           :
91   {
92     libkernel.a (.text .stub .text.* .gnu.linkonce.t.*)
93     KEEP (libkernel.a (.text.*personality*))
94   } >MEM_INST_A =0
95   
96         /* GNU LDは、同じ名前のセクションを同じ領域に配置しようとする。そのため、セクションを分割したければ
97         違うセクション名をつけなければならない */
98   .text_b         :
99   {
100     *(EXCLUDE_FILE(libkernel.a) .text .stub .text.* .gnu.linkonce.t.*)
101     KEEP (*(EXCLUDE_FILE(libkernel.a) .text.*personality*))
102     /* .gnu.warning sections are handled specially by elf32.em.  */
103     *(.gnu.warning)
104   } >MEM_INST_B = 0
105   
106   .init           :
107   {
108     KEEP (*(.init))
109   } >MEM_INST_B =0
110  
111   .plt            : { *(.plt) } >MEM_INST_B
112  
113   .fini           :
114   {
115     KEEP (*(.fini))
116   } >MEM_INST_B =0
117   
118   PROVIDE (__etext = .);
119   PROVIDE (_etext = .);
120   PROVIDE (etext = .);
121   
122   .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >MEM_DATA_A
123   .rodata1        : { *(.rodata1) } >MEM_DATA_A
124   
125   .sdata2         :
126   {
127     *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
128   } >MEM_DATA_A
129   
130   .sbss2          : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } >MEM_DATA_A
131   .eh_frame_hdr : { *(.eh_frame_hdr) } >MEM_DATA_A
132   .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) } >MEM_DATA_A
133   .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } >MEM_DATA_A
134   
135   /* Adjust the address for the data segment.  We want to adjust up to
136      the same address within the page on the next page up.  */
137   . = ALIGN(0x1000) + (. & (0x1000 - 1));
138   /* Exception handling  */
139   .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) } >MEM_DATA_A
140   .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } >MEM_DATA_A
141   /* Thread Local Storage sections  */
142   .tdata      : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >MEM_DATA_A
143   .tbss       : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >MEM_DATA_A
144   .preinit_array     :
145   {
146     PROVIDE_HIDDEN (___preinit_array_start = .);
147     KEEP (*(.preinit_array))
148     PROVIDE_HIDDEN (___preinit_array_end = .);
149   } >MEM_DATA_A
150   .init_array     :
151   {
152      PROVIDE_HIDDEN (___init_array_start = .);
153      KEEP (*(SORT(.init_array.*)))
154      KEEP (*(.init_array))
155      PROVIDE_HIDDEN (___init_array_end = .);
156   } >MEM_DATA_A
157   .fini_array     :
158   {
159     PROVIDE_HIDDEN (___fini_array_start = .);
160     KEEP (*(.fini_array))
161     KEEP (*(SORT(.fini_array.*)))
162     PROVIDE_HIDDEN (___fini_array_end = .);
163   } >MEM_DATA_A
164
165   .ctors          :
166   {
167     /* gcc uses crtbegin.o to find the start of
168        the constructors, so we make sure it is
169        first.  Because this is a wildcard, it
170        doesn't matter if the user does not
171        actually link against crtbegin.o; the
172        linker won't look for a file to match a
173        wildcard.  The wildcard also means that it
174        doesn't matter which directory crtbegin.o
175        is in.  */
176     KEEP (*crtbegin*.o(.ctors))
177     /* We don't want to include the .ctor section from
178        the crtend.o file until after the sorted ctors.
179        The .ctor section from the crtend file contains the
180        end of ctors marker and it must be last */
181     KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
182     KEEP (*(SORT(.ctors.*)))
183     KEEP (*crtend*.o(.ctors))
184   } >MEM_DATA_A
185   .dtors          :
186   {
187     KEEP (*crtbegin*.o(.dtors))
188     KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
189     KEEP (*(SORT(.dtors.*)))
190     KEEP (*crtend*.o(.dtors))
191   } >MEM_DATA_A
192   .jcr            : { KEEP (*(.jcr)) } >MEM_DATA_A
193   .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } >MEM_DATA_A
194   .dynamic        : { *(.dynamic) } >MEM_DATA_A
195   .data           :
196   {
197     *(.data .data.* .gnu.linkonce.d.*)
198     KEEP (*(.gnu.linkonce.d.*personality*))
199     SORT(CONSTRUCTORS)
200   } >MEM_DATA_A
201   .data1          : { *(.data1) } >MEM_DATA_A
202   .got            : { *(.got.plt) *(.got) } >MEM_DATA_A
203   /* We want the small data sections together, so single-instruction offsets
204      can access them all, and initialized data all before uninitialized, so
205      we can shorten the on-disk segment size.  */
206   .sdata          :
207   {
208     *(.sdata .sdata.* .gnu.linkonce.s.*)
209   } >MEM_DATA_A
210   __edata = .; PROVIDE (_edata = .);
211   .sbss           :
212   {
213     __bss_start = .;
214     *(.dynsbss)
215     *(.sbss .sbss.* .gnu.linkonce.sb.*)
216     *(.scommon)
217   } >MEM_DATA_A
218   .bss            :
219   {
220     *(.dynbss)
221     *(.bss .bss.* .gnu.linkonce.b.*)
222     *(COMMON)
223     /* Align here to ensure that the .bss section occupies space up to
224        _end.  Align after .bss to ensure correct alignment even if the
225        .bss section disappears because there are no input sections.
226        FIXME: Why do we need it? When there is no .bss section, we don't
227        pad the .data section.  */
228     . = ALIGN(. != 0 ? 32 / 8 : 1);
229     __bss_end = .;
230   } >MEM_DATA_A
231   . = ALIGN(32 / 8);
232   . = ALIGN(32 / 8);
233   __end = .; PROVIDE (_end = .);
234   /* Stabs debugging sections.  */
235   .stab          0 : { *(.stab) }
236   .stabstr       0 : { *(.stabstr) }
237   .stab.excl     0 : { *(.stab.excl) }
238   .stab.exclstr  0 : { *(.stab.exclstr) }
239   .stab.index    0 : { *(.stab.index) }
240   .stab.indexstr 0 : { *(.stab.indexstr) }
241   .comment       0 : { *(.comment) }
242   /* DWARF debug sections.
243      Symbols in the DWARF debugging sections are relative to the beginning
244      of the section so we begin them at 0.  */
245   /* DWARF 1 */
246   .debug          0 : { *(.debug) }
247   .line           0 : { *(.line) }
248   /* GNU DWARF 1 extensions */
249   .debug_srcinfo  0 : { *(.debug_srcinfo) }
250   .debug_sfnames  0 : { *(.debug_sfnames) }
251   /* DWARF 1.1 and DWARF 2 */
252   .debug_aranges  0 : { *(.debug_aranges) }
253   .debug_pubnames 0 : { *(.debug_pubnames) }
254   /* DWARF 2 */
255   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
256   .debug_abbrev   0 : { *(.debug_abbrev) }
257   .debug_line     0 : { *(.debug_line) }
258   .debug_frame    0 : { *(.debug_frame) }
259   .debug_str      0 : { *(.debug_str) }
260   .debug_loc      0 : { *(.debug_loc) }
261   .debug_macinfo  0 : { *(.debug_macinfo) }
262   /* SGI/MIPS DWARF 2 extensions */
263   .debug_weaknames 0 : { *(.debug_weaknames) }
264   .debug_funcnames 0 : { *(.debug_funcnames) }
265   .debug_typenames 0 : { *(.debug_typenames) }
266   .debug_varnames  0 : { *(.debug_varnames) }
267
268   __stack_end = ORIGIN(MEM_SCRATCH) + LENGTH(MEM_SCRATCH);
269
270   __heap_start = ORIGIN(MEM_DATA_B);
271   __heap_end = ORIGIN(MEM_DATA_B) + LENGTH(MEM_DATA_B);
272
273
274     PROVIDE (end = .) ;
275
276
277 /* ADSP-BF518依存のSYSTEM MMR 
278     .bss.sysmmr (NOLOAD) : { . = 0x0000; chip_mmr.o(SYSMMR0)}>MEM_SYSMMR
279     .bss.sysmmr (NOLOAD) : { . = 0x0100; chip_mmr.o(SYSMMR1)}>MEM_SYSMMR
280     .bss.sysmmr (NOLOAD) : { . = 0x010C; chip_mmr.o(SYSMMR2)}>MEM_SYSMMR
281     .bss.sysmmr (NOLOAD) : { . = 0x014C; chip_mmr.o(SYSMMR3)}>MEM_SYSMMR
282     .bss.sysmmr (NOLOAD) : { . = 0x0200; chip_mmr.o(SYSMMR4)}>MEM_SYSMMR
283     .bss.sysmmr (NOLOAD) : { . = 0x0300; chip_mmr.o(SYSMMR5)}>MEM_SYSMMR
284     .bss.sysmmr (NOLOAD) : { . = 0x0400; chip_mmr.o(SYSMMR6)}>MEM_SYSMMR
285     .bss.sysmmr (NOLOAD) : { . = 0x041C; chip_mmr.o(SYSMMR7)}>MEM_SYSMMR
286     .bss.sysmmr (NOLOAD) : { . = 0x0424; chip_mmr.o(SYSMMR8)}>MEM_SYSMMR
287     .bss.sysmmr (NOLOAD) : { . = 0x0500; chip_mmr.o(SYSMMR9)}>MEM_SYSMMR
288     .bss.sysmmr (NOLOAD) : { . = 0x0600; chip_mmr.o(SYSMMR10)}>MEM_SYSMMR
289     .bss.sysmmr (NOLOAD) : { . = 0x0700; chip_mmr.o(SYSMMR11)}>MEM_SYSMMR
290     .bss.sysmmr (NOLOAD) : { . = 0x0800; chip_mmr.o(SYSMMR12)}>MEM_SYSMMR
291     .bss.sysmmr (NOLOAD) : { . = 0x0818; chip_mmr.o(SYSMMR13)}>MEM_SYSMMR
292     .bss.sysmmr (NOLOAD) : { . = 0x0820; chip_mmr.o(SYSMMR14)}>MEM_SYSMMR
293     .bss.sysmmr (NOLOAD) : { . = 0x0900; chip_mmr.o(SYSMMR15)}>MEM_SYSMMR
294     .bss.sysmmr (NOLOAD) : { . = 0x0918; chip_mmr.o(SYSMMR16)}>MEM_SYSMMR
295     .bss.sysmmr (NOLOAD) : { . = 0x0920; chip_mmr.o(SYSMMR17)}>MEM_SYSMMR
296     .bss.sysmmr (NOLOAD) : { . = 0x0A00; chip_mmr.o(SYSMMR18)}>MEM_SYSMMR
297     .bss.sysmmr (NOLOAD) : { . = 0x0A10; chip_mmr.o(SYSMMR19)}>MEM_SYSMMR
298     .bss.sysmmr (NOLOAD) : { . = 0x0B0C; chip_mmr.o(SYSMMR20)}>MEM_SYSMMR
299     .bss.sysmmr (NOLOAD) : { . = 0x0C00; chip_mmr.o(SYSMMR21)}>MEM_SYSMMR
300     .bss.sysmmr (NOLOAD) : { . = 0x0C10; chip_mmr.o(SYSMMR22)}>MEM_SYSMMR
301     .bss.sysmmr (NOLOAD) : { . = 0x0C38; chip_mmr.o(SYSMMR23)}>MEM_SYSMMR
302     .bss.sysmmr (NOLOAD) : { . = 0x0C40; chip_mmr.o(SYSMMR24)}>MEM_SYSMMR
303     .bss.sysmmr (NOLOAD) : { . = 0x0C50; chip_mmr.o(SYSMMR25)}>MEM_SYSMMR
304     .bss.sysmmr (NOLOAD) : { . = 0x0C78; chip_mmr.o(SYSMMR26)}>MEM_SYSMMR
305     .bss.sysmmr (NOLOAD) : { . = 0x0C80; chip_mmr.o(SYSMMR27)}>MEM_SYSMMR
306     .bss.sysmmr (NOLOAD) : { . = 0x0C90; chip_mmr.o(SYSMMR28)}>MEM_SYSMMR
307     .bss.sysmmr (NOLOAD) : { . = 0x0CB8; chip_mmr.o(SYSMMR29)}>MEM_SYSMMR
308     .bss.sysmmr (NOLOAD) : { . = 0x0CC0; chip_mmr.o(SYSMMR30)}>MEM_SYSMMR
309     .bss.sysmmr (NOLOAD) : { . = 0x0CD0; chip_mmr.o(SYSMMR31)}>MEM_SYSMMR
310     .bss.sysmmr (NOLOAD) : { . = 0x0CF8; chip_mmr.o(SYSMMR32)}>MEM_SYSMMR
311     .bss.sysmmr (NOLOAD) : { . = 0x0D00; chip_mmr.o(SYSMMR33)}>MEM_SYSMMR
312     .bss.sysmmr (NOLOAD) : { . = 0x0D10; chip_mmr.o(SYSMMR34)}>MEM_SYSMMR
313     .bss.sysmmr (NOLOAD) : { . = 0x0D38; chip_mmr.o(SYSMMR35)}>MEM_SYSMMR
314     .bss.sysmmr (NOLOAD) : { . = 0x0D40; chip_mmr.o(SYSMMR36)}>MEM_SYSMMR
315     .bss.sysmmr (NOLOAD) : { . = 0x0D50; chip_mmr.o(SYSMMR37)}>MEM_SYSMMR
316     .bss.sysmmr (NOLOAD) : { . = 0x0D78; chip_mmr.o(SYSMMR38)}>MEM_SYSMMR
317     .bss.sysmmr (NOLOAD) : { . = 0x0D80; chip_mmr.o(SYSMMR39)}>MEM_SYSMMR
318     .bss.sysmmr (NOLOAD) : { . = 0x0D90; chip_mmr.o(SYSMMR40)}>MEM_SYSMMR
319     .bss.sysmmr (NOLOAD) : { . = 0x0DB8; chip_mmr.o(SYSMMR41)}>MEM_SYSMMR
320     .bss.sysmmr (NOLOAD) : { . = 0x0DC0; chip_mmr.o(SYSMMR42)}>MEM_SYSMMR
321     .bss.sysmmr (NOLOAD) : { . = 0x0DD0; chip_mmr.o(SYSMMR43)}>MEM_SYSMMR
322     .bss.sysmmr (NOLOAD) : { . = 0x0DF8; chip_mmr.o(SYSMMR44)}>MEM_SYSMMR
323     .bss.sysmmr (NOLOAD) : { . = 0x0E00; chip_mmr.o(SYSMMR45)}>MEM_SYSMMR
324     .bss.sysmmr (NOLOAD) : { . = 0x0E10; chip_mmr.o(SYSMMR46)}>MEM_SYSMMR
325     .bss.sysmmr (NOLOAD) : { . = 0x0E38; chip_mmr.o(SYSMMR47)}>MEM_SYSMMR
326     .bss.sysmmr (NOLOAD) : { . = 0x0E40; chip_mmr.o(SYSMMR48)}>MEM_SYSMMR
327     .bss.sysmmr (NOLOAD) : { . = 0x0E50; chip_mmr.o(SYSMMR49)}>MEM_SYSMMR
328     .bss.sysmmr (NOLOAD) : { . = 0x0E78; chip_mmr.o(SYSMMR50)}>MEM_SYSMMR
329     .bss.sysmmr (NOLOAD) : { . = 0x0E80; chip_mmr.o(SYSMMR51)}>MEM_SYSMMR
330     .bss.sysmmr (NOLOAD) : { . = 0x0E90; chip_mmr.o(SYSMMR52)}>MEM_SYSMMR
331     .bss.sysmmr (NOLOAD) : { . = 0x0EB8; chip_mmr.o(SYSMMR53)}>MEM_SYSMMR
332     .bss.sysmmr (NOLOAD) : { . = 0x0EC0; chip_mmr.o(SYSMMR54)}>MEM_SYSMMR
333     .bss.sysmmr (NOLOAD) : { . = 0x0ED0; chip_mmr.o(SYSMMR55)}>MEM_SYSMMR
334     .bss.sysmmr (NOLOAD) : { . = 0x0EF8; chip_mmr.o(SYSMMR56)}>MEM_SYSMMR
335     .bss.sysmmr (NOLOAD) : { . = 0x0F00; chip_mmr.o(SYSMMR57)}>MEM_SYSMMR
336     .bss.sysmmr (NOLOAD) : { . = 0x0F10; chip_mmr.o(SYSMMR58)}>MEM_SYSMMR
337     .bss.sysmmr (NOLOAD) : { . = 0x0F38; chip_mmr.o(SYSMMR59)}>MEM_SYSMMR
338     .bss.sysmmr (NOLOAD) : { . = 0x0F40; chip_mmr.o(SYSMMR60)}>MEM_SYSMMR
339     .bss.sysmmr (NOLOAD) : { . = 0x0F50; chip_mmr.o(SYSMMR61)}>MEM_SYSMMR
340     .bss.sysmmr (NOLOAD) : { . = 0x0F78; chip_mmr.o(SYSMMR62)}>MEM_SYSMMR
341     .bss.sysmmr (NOLOAD) : { . = 0x0F80; chip_mmr.o(SYSMMR63)}>MEM_SYSMMR
342     .bss.sysmmr (NOLOAD) : { . = 0x0F90; chip_mmr.o(SYSMMR64)}>MEM_SYSMMR
343     .bss.sysmmr (NOLOAD) : { . = 0x0FB8; chip_mmr.o(SYSMMR65)}>MEM_SYSMMR
344     .bss.sysmmr (NOLOAD) : { . = 0x0FC0; chip_mmr.o(SYSMMR66)}>MEM_SYSMMR
345     .bss.sysmmr (NOLOAD) : { . = 0x0FD0; chip_mmr.o(SYSMMR67)}>MEM_SYSMMR
346     .bss.sysmmr (NOLOAD) : { . = 0x0FF8; chip_mmr.o(SYSMMR68)}>MEM_SYSMMR
347     .bss.sysmmr (NOLOAD) : { . = 0x1000; chip_mmr.o(SYSMMR69)}>MEM_SYSMMR
348     .bss.sysmmr (NOLOAD) : { . = 0x1400; chip_mmr.o(SYSMMR70)}>MEM_SYSMMR
349     .bss.sysmmr (NOLOAD) : { . = 0x1480; chip_mmr.o(SYSMMR71)}>MEM_SYSMMR
350     .bss.sysmmr (NOLOAD) : { . = 0x1500; chip_mmr.o(SYSMMR72)}>MEM_SYSMMR
351     .bss.sysmmr (NOLOAD) : { . = 0x1700; chip_mmr.o(SYSMMR73)}>MEM_SYSMMR
352     .bss.sysmmr (NOLOAD) : { . = 0x2000; chip_mmr.o(SYSMMR74)}>MEM_SYSMMR
353     .bss.sysmmr (NOLOAD) : { . = 0x201C; chip_mmr.o(SYSMMR75)}>MEM_SYSMMR
354     .bss.sysmmr (NOLOAD) : { . = 0x2024; chip_mmr.o(SYSMMR76)}>MEM_SYSMMR
355     .bss.sysmmr (NOLOAD) : { . = 0x3000; chip_mmr.o(SYSMMR77)}>MEM_SYSMMR
356     .bss.sysmmr (NOLOAD) : { . = 0x302C; chip_mmr.o(SYSMMR78)}>MEM_SYSMMR
357     .bss.sysmmr (NOLOAD) : { . = 0x3060; chip_mmr.o(SYSMMR79)}>MEM_SYSMMR
358     .bss.sysmmr (NOLOAD) : { . = 0x30A0; chip_mmr.o(SYSMMR80)}>MEM_SYSMMR
359     .bss.sysmmr (NOLOAD) : { . = 0x3100; chip_mmr.o(SYSMMR81)}>MEM_SYSMMR
360     .bss.sysmmr (NOLOAD) : { . = 0x3180; chip_mmr.o(SYSMMR82)}>MEM_SYSMMR
361     .bss.sysmmr (NOLOAD) : { . = 0x3200; chip_mmr.o(SYSMMR83)}>MEM_SYSMMR
362     .bss.sysmmr (NOLOAD) : { . = 0x3210; chip_mmr.o(SYSMMR84)}>MEM_SYSMMR
363     .bss.sysmmr (NOLOAD) : { . = 0x3220; chip_mmr.o(SYSMMR85)}>MEM_SYSMMR
364     .bss.sysmmr (NOLOAD) : { . = 0x3240; chip_mmr.o(SYSMMR86)}>MEM_SYSMMR
365     .bss.sysmmr (NOLOAD) : { . = 0x3280; chip_mmr.o(SYSMMR87)}>MEM_SYSMMR
366     .bss.sysmmr (NOLOAD) : { . = 0x3288; chip_mmr.o(SYSMMR88)}>MEM_SYSMMR
367     .bss.sysmmr (NOLOAD) : { . = 0x3300; chip_mmr.o(SYSMMR89)}>MEM_SYSMMR
368     .bss.sysmmr (NOLOAD) : { . = 0x3340; chip_mmr.o(SYSMMR90)}>MEM_SYSMMR
369     .bss.sysmmr (NOLOAD) : { . = 0x3400; chip_mmr.o(SYSMMR91)}>MEM_SYSMMR
370     .bss.sysmmr (NOLOAD) : { . = 0x3500; chip_mmr.o(SYSMMR92)}>MEM_SYSMMR
371     .bss.sysmmr (NOLOAD) : { . = 0x3620; chip_mmr.o(SYSMMR93)}>MEM_SYSMMR
372     .bss.sysmmr (NOLOAD) : { . = 0x3680; chip_mmr.o(SYSMMR94)}>MEM_SYSMMR
373     .bss.sysmmr (NOLOAD) : { . = 0x3700; chip_mmr.o(SYSMMR95)}>MEM_SYSMMR
374     .bss.sysmmr (NOLOAD) : { . = 0x3800; chip_mmr.o(SYSMMR96)}>MEM_SYSMMR
375     .bss.sysmmr (NOLOAD) : { . = 0x3848; chip_mmr.o(SYSMMR97)}>MEM_SYSMMR
376     .bss.sysmmr (NOLOAD) : { . = 0x3880; chip_mmr.o(SYSMMR98)}>MEM_SYSMMR
377     .bss.sysmmr (NOLOAD) : { . = 0x38C0; chip_mmr.o(SYSMMR99)}>MEM_SYSMMR
378
379 */
380
381
382
383 /* Blackfin 共有のCORE MMR   
384     .bss.coremmr (NOLOAD) : {                    cpu_mmr.o(DMEMCTL)}> MEM_COREMMR
385     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(DCPLBA)}> MEM_COREMMR
386     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(DCPLBD)}> MEM_COREMMR
387     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(DTESTC)}> MEM_COREMMR
388     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(DTESTD)}> MEM_COREMMR
389     .bss.coremmr (NOLOAD) : { . = ALIGN(0x1000); cpu_mmr.o(IMEMCTL)}> MEM_COREMMR
390     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(ICPLBA)}> MEM_COREMMR
391     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(ICPLBD)}> MEM_COREMMR
392     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(ITESTC)}> MEM_COREMMR
393     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(ITESTD)}> MEM_COREMMR
394     .bss.coremmr (NOLOAD) : { . = ALIGN(0x1000); cpu_mmr.o(EVT)}> MEM_COREMMR
395     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(CEC)}> MEM_COREMMR
396     .bss.coremmr (NOLOAD) : { . = ALIGN(0x1000); cpu_mmr.o(CTMR)}> MEM_COREMMR
397     .bss.coremmr (NOLOAD) : { . = ALIGN(0x1000)+0x1000; cpu_mmr.o(DBG)}> MEM_COREMMR    
398     .bss.coremmr (NOLOAD) : { . = ALIGN(0x1000); cpu_mmr.o(TBCTL)}> MEM_COREMMR
399     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(TBUF)}> MEM_COREMMR
400     .bss.coremmr (NOLOAD) : { . = ALIGN(0x1000); cpu_mmr.o(WPICTL)}> MEM_COREMMR
401     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0040); cpu_mmr.o(WPIADDR)}> MEM_COREMMR
402     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0040); cpu_mmr.o(WPICNT)}> MEM_COREMMR
403     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(WPDCTL)}> MEM_COREMMR
404     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0040); cpu_mmr.o(WPDADDR)}> MEM_COREMMR
405     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0040); cpu_mmr.o(WPDCNT)}> MEM_COREMMR
406     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(WPSTAT)}> MEM_COREMMR
407     .bss.coremmr (NOLOAD) : { . = ALIGN(0x1000); cpu_mmr.o(PFCTL)}> MEM_COREMMR
408     .bss.coremmr (NOLOAD) : { . = ALIGN(0x0100); cpu_mmr.o(PFCNT)}> MEM_COREMMR
409 */
410     .comment        0 : { *(.comment) }
411     .debug          0 : { *(.debug) }
412     .line           0 : { *(.line) }
413     .debug_srcinfo  0 : { *(.debug_srcinfo) }
414     .debug_sfnames  0 : { *(.debug_sfnames) }
415     .debug_aranges  0 : { *(.debug_aranges) }
416     .debug_pubnames 0 : { *(.debug_pubnames) }
417 }