]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - ld/scripttempl/ip2k.sc
* scripttempl/armbpabi.sc: Revert 2010-11-02 H.J. Lu.
[thirdparty/binutils-gdb.git] / ld / scripttempl / ip2k.sc
1 cat << EOF
2 OUTPUT_FORMAT("elf32-ip2k", "elf32-ip2k", "elf32-ip2k")
3 OUTPUT_ARCH(ip2k)
4 ${RELOCATING+ENTRY(_start)}
5 SEARCH_DIR(.);
6
7 /* IP2022 default linker script. */
8
9 MEMORY
10 {
11 D_GPR : org = 0x01000080, len = 128
12 D_RAM : org = 0x01000100, len = 4K - 256
13 P_RAM : org = 0x02000000, len = 16K
14 P_ROM : org = 0x02010000, len = 64K - 32
15 P_RESET : org = 0x0201FFE0, len = 32
16 P_CONFIG : org = 0x02020000, len = 128
17 }
18
19 SECTIONS
20 {
21 /* Allocated memory end markers
22 (initialized to start of appropiate memory address). */
23 __data_end = 0x01000100;
24 __pram_end = 0x02000000;
25 __flash_end = 0x02010000;
26
27 /* Global general purpose registers in direct addressing range. */
28 .gpr 0x01000080 :
29 {
30 *(.gpr)
31 } >D_GPR
32
33 /* Pre-allocated, pre-initialized data memory. */
34 __data_run_begin = __data_end;
35 __data_load_begin = (__flash_end + 1) & 0xFFFFFFFE;
36 .data __data_run_begin : AT (__data_load_begin)
37 {
38 * (.data);
39 * (.rodata)
40 } >D_RAM
41 __data_run_end = __data_run_begin + SIZEOF(.data);
42 __data_load_end = __data_load_begin + SIZEOF(.data);
43 __data_end = __data_run_end;
44 __flash_end = __data_load_end;
45
46 /* Pre-allocated, uninitialized data memory. */
47 __bss_begin = __data_end;
48 .bss __bss_begin :
49 {
50 * (.bss)
51 } >D_RAM
52 __bss_end = __bss_begin + SIZEOF(.bss);
53 __data_end = __bss_end;
54
55 /* Pre-allocated PRAM data memory. */
56 __pram_data_begin = (__pram_end + 1) & 0xFFFFFFFE;
57 .pram_data __pram_data_begin :
58 {
59 * (.pram_data)
60 } >P_RAM
61 __pram_data_end = __pram_data_begin + SIZEOF(.pram_data);
62 __pram_end = __pram_data_end;
63
64 /* PRAM code. */
65 __pram_run_begin = (__pram_end + 1) & 0xFFFFFFFE;
66 __pram_load_begin = (__flash_end + 1) & 0xFFFFFFFE;
67 .pram __pram_run_begin : AT (__pram_load_begin)
68 {
69 * (.pram)
70 } >P_RAM
71 __pram_run_end = __pram_run_begin + SIZEOF(.pram);
72 __pram_load_end = __pram_load_begin + SIZEOF(.pram);
73
74 __pram_load_shift = ((__pram_run_begin - __pram_load_begin) & 0x1FFFF) | 0x02000000;
75 __pram_end = __pram_run_end;
76 __flash_end = __pram_load_end;
77
78 /* PRAM overlay code. */
79 __pram_overlay_run_start = (__pram_end + 1) & 0xFFFFFFFE;
80 __pram_overlay_load_start = (__flash_end + 1) & 0xFFFFFFFE;
81 OVERLAY __pram_overlay_run_start : AT (__pram_overlay_load_start)
82 {
83 .pram1 { */overlay1/* (.pram); * (.pram1) }
84 .pram2 { */overlay2/* (.pram); * (.pram2) }
85 } >P_RAM
86 __pram_overlay_run_end = .;
87 __pram_overlay_load_end = __pram_overlay_load_start + SIZEOF(.pram1) + SIZEOF(.pram2);
88 __pram_end = __pram_overlay_run_end;
89 __flash_end = __pram_overlay_load_end;
90
91 /* Flash code. */
92 __text_begin = (__flash_end + 1) & 0xFFFFFFFE;
93 .text __text_begin :
94 {
95 * (.text);
96 * (.text.libgcc)
97 } >P_ROM = 0xffff
98 __text_end = __text_begin + SIZEOF(.text);
99 __flash_end = __text_end;
100
101 /* Strings. */
102 __strings_begin = (__flash_end + 1) & 0xFFFFFFFE;
103 .strings __strings_begin :
104 {
105 * (strings);
106 * (.progmem.data)
107 } >P_ROM = 0xffff
108 __strings_end = __strings_begin + SIZEOF (.strings);
109 __flash_end = __strings_end;
110
111 .ctors : { * (.ctors) } > P_ROM
112 .dtors : { * (.dtors) } > P_ROM
113
114 /* Reset code. */
115 .reset : { * (.reset) } >P_RESET = 0xffff
116
117 /* Configuration block. */
118 .config : { * (.config) } >P_CONFIG = 0xffff
119
120 /* Stack. */
121 PROVIDE (__stack = 0x01000FFF);
122
123 /* Stabs debugging sections. */
124 .stab 0 : { *(.stab) }
125 .stabstr 0 : { *(.stabstr) }
126 .stab.excl 0 : { *(.stab.excl) }
127 .stab.exclstr 0 : { *(.stab.exclstr) }
128 .stab.index 0 : { *(.stab.index) }
129 .stab.indexstr 0 : { *(.stab.indexstr) }
130 .comment 0 : { *(.comment) }
131
132 /* DWARF 1. */
133 .debug 0 : { *(.debug) }
134 .line 0 : { *(.line) }
135 /* GNU DWARF 1 extensions. */
136 .debug_srcinfo 0 : { *(.debug_srcinfo) }
137 .debug_sfnames 0 : { *(.debug_sfnames) }
138 /* DWARF 1.1 and DWARF 2. */
139 .debug_aranges 0 : { *(.debug_aranges) }
140 .debug_pubnames 0 : { *(.debug_pubnames) }
141 /* DWARF 2. */
142 .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
143 .debug_abbrev 0 : { *(.debug_abbrev) }
144 .debug_line 0 : { *(.debug_line) }
145 .debug_frame 0 : { *(.debug_frame) }
146 .debug_str 0 : { *(.debug_str) }
147 .debug_loc 0 : { *(.debug_loc) }
148 .debug_macinfo 0 : { *(.debug_macinfo) }
149 }
150 EOF