|
0
|
1 STARTUP(vectors.o) |
|
|
2 ENTRY(reset_vector) |
|
|
3 |
|
|
4 GROUP(libtarget.a libgcc.a) |
|
|
5 |
|
|
6 #include <pkgconf/hal.h> |
|
|
7 |
|
|
8 #define LOAD_BASE 0x40000000 |
|
|
9 #define DATA_BASE |
|
|
10 |
|
|
11 SECTIONS |
|
|
12 { |
|
|
13 |
|
|
14 /* Start of ROM */ |
|
|
15 . = LOAD_BASE; |
|
|
16 |
|
|
17 .rom_vectors : |
|
|
18 { |
|
|
19 KEEP(*(.vectors)) |
|
|
20 } |
|
|
21 |
|
|
22 .text : |
|
|
23 { |
|
|
24 _stext = .; |
|
|
25 *(.text*) |
|
|
26 *(.gnu.warning) |
|
|
27 *(.gnu.linkonce*) |
|
|
28 *(.init) |
|
|
29 |
|
|
30 } |
|
|
31 _etext = .; |
|
|
32 PROVIDE (etext = .); |
|
|
33 .fini : { *(.fini) } |
|
|
34 .rodata : { *(.rodata*) } |
|
|
35 .rodata1 : { *(.rodata1) } |
|
|
36 .fixup : { *(.fixup) } |
|
|
37 .gcc_except_table : { *(.gcc_except_table) } |
|
|
38 |
|
|
39 __rom_data_start = ALIGN(4); |
|
|
40 .data DATA_BASE : |
|
|
41 AT( __rom_data_start ) |
|
|
42 { |
|
|
43 __ram_data_start = .; |
|
|
44 *(.data*) |
|
|
45 *(.data1) |
|
|
46 _GOT1_START_ = .; |
|
|
47 *(.got1) |
|
|
48 _GOT1_END_ = .; |
|
|
49 /* Put .ctors and .dtors next to the .got2 section, so that the pointers |
|
|
50 get relocated with -mrelocatable. */ |
|
|
51 _GOT2_START_ = .; |
|
|
52 *(.got2) |
|
|
53 _GOT2_END_ = .; |
|
|
54 . = ALIGN(4); |
|
|
55 #ifdef CYG_KERNEL_USE_INIT_PRIORITY |
|
|
56 __CTOR_LIST__ = .; |
|
|
57 KEEP(*(SORT(.ctors*))) |
|
|
58 __CTOR_END__ = .; |
|
|
59 __DTOR_LIST__ = .; |
|
|
60 KEEP(*(SORT(.dtors*))) |
|
|
61 __DTOR_END__ = .; |
|
|
62 #else |
|
|
63 __CTOR_LIST__ = .; |
|
|
64 KEEP(*sched.o(.ctors*)) |
|
|
65 KEEP(*clock.o(.ctors*)) |
|
|
66 KEEP(*thread.o(.ctors*)) |
|
|
67 KEEP(*(.ctors*)) |
|
|
68 __CTOR_END__ = .; |
|
|
69 __DTOR_LIST__ = .; |
|
|
70 KEEP(*(.dtors)) |
|
|
71 __DTOR_END__ = .; |
|
|
72 #endif |
|
|
73 _GOT_START_ = .; |
|
|
74 _GLOBAL_OFFSET_TABLE_ = . + 32768; |
|
|
75 _SDA_BASE_ = .; |
|
|
76 *(.got.plt) |
|
|
77 *(.got) |
|
|
78 _GOT_END_ = .; |
|
|
79 *(.dynamic) |
|
|
80 /* We want the small data sections together, so single-instruction offsets |
|
|
81 can access them all, and initialized data all before uninitialized, so |
|
|
82 we can shorten the on-disk segment size. */ |
|
|
83 *(.sdata*) |
|
|
84 *(.sbss*) |
|
|
85 } |
|
|
86 __ram_data_end = .; |
|
|
87 PROVIDE( __ram_data_end = .); |
|
|
88 _edata = .; |
|
|
89 PROVIDE (edata = .); |
|
|
90 . = ALIGN(4); |
|
|
91 __bss_start = .; |
|
|
92 .bss : |
|
|
93 { |
|
|
94 *(.scommon) |
|
|
95 *(.dynbss) |
|
|
96 *(.bss) |
|
|
97 *(COMMON) |
|
|
98 } |
|
|
99 . = ALIGN(4); |
|
|
100 _end = . ; |
|
|
101 PROVIDE (end = .); |
|
|
102 |
|
|
103 } |
|
|
104 |
|
|
105 _mn10300_interrupt_control = 0x34000100; |
|
|
106 _mn10300_interrupt_vectors = 0x20000000; |