]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - ld/scripttempl/ip2k.sc
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / ld / scripttempl / ip2k.sc
1 # Copyright (C) 2014-2022 Free Software Foundation, Inc.
2 #
3 # Copying and distribution of this file, with or without modification,
4 # are permitted in any medium without royalty provided the copyright
5 # notice and this notice are preserved.
6
7 # Using an empty script for ld -r is better than mashing together
8 # sections. This hack likely leaves ld -Ur broken.
9 test -n "${RELOCATING}" || exit 0
10 cat << EOF
11 /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
12
13 Copying and distribution of this script, with or without modification,
14 are permitted in any medium without royalty provided the copyright
15 notice and this notice are preserved. */
16
17 OUTPUT_FORMAT("elf32-ip2k", "elf32-ip2k", "elf32-ip2k")
18 OUTPUT_ARCH(ip2k)
19 ${RELOCATING+ENTRY(_start)}
20 SEARCH_DIR(.);
21
22 /* IP2022 default linker script. */
23
24 MEMORY
25 {
26 D_GPR : org = 0x01000080, len = 128
27 D_RAM : org = 0x01000100, len = 4K - 256
28 P_RAM : org = 0x02000000, len = 16K
29 P_ROM : org = 0x02010000, len = 64K - 32
30 P_RESET : org = 0x0201FFE0, len = 32
31 P_CONFIG : org = 0x02020000, len = 128
32 }
33
34 SECTIONS
35 {
36 /* Allocated memory end markers
37 (initialized to start of appropriate memory address). */
38 __data_end = 0x01000100;
39 __pram_end = 0x02000000;
40 __flash_end = 0x02010000;
41
42 /* Global general purpose registers in direct addressing range. */
43 .gpr 0x01000080 :
44 {
45 *(.gpr)
46 } >D_GPR
47
48 /* Pre-allocated, pre-initialized data memory. */
49 __data_run_begin = __data_end;
50 __data_load_begin = (__flash_end + 1) & 0xFFFFFFFE;
51 .data __data_run_begin : AT (__data_load_begin)
52 {
53 * (.data);
54 * (.rodata)
55 } >D_RAM
56 __data_run_end = __data_run_begin + SIZEOF(.data);
57 __data_load_end = __data_load_begin + SIZEOF(.data);
58 __data_end = __data_run_end;
59 __flash_end = __data_load_end;
60
61 /* Pre-allocated, uninitialized data memory. */
62 __bss_begin = __data_end;
63 .bss __bss_begin :
64 {
65 * (.bss)
66 } >D_RAM
67 __bss_end = __bss_begin + SIZEOF(.bss);
68 __data_end = __bss_end;
69
70 /* Pre-allocated PRAM data memory. */
71 __pram_data_begin = (__pram_end + 1) & 0xFFFFFFFE;
72 .pram_data __pram_data_begin :
73 {
74 * (.pram_data)
75 } >P_RAM
76 __pram_data_end = __pram_data_begin + SIZEOF(.pram_data);
77 __pram_end = __pram_data_end;
78
79 /* PRAM code. */
80 __pram_run_begin = (__pram_end + 1) & 0xFFFFFFFE;
81 __pram_load_begin = (__flash_end + 1) & 0xFFFFFFFE;
82 .pram __pram_run_begin : AT (__pram_load_begin)
83 {
84 * (.pram)
85 } >P_RAM
86 __pram_run_end = __pram_run_begin + SIZEOF(.pram);
87 __pram_load_end = __pram_load_begin + SIZEOF(.pram);
88
89 __pram_load_shift = ((__pram_run_begin - __pram_load_begin) & 0x1FFFF) | 0x02000000;
90 __pram_end = __pram_run_end;
91 __flash_end = __pram_load_end;
92
93 /* PRAM overlay code. */
94 __pram_overlay_run_start = (__pram_end + 1) & 0xFFFFFFFE;
95 __pram_overlay_load_start = (__flash_end + 1) & 0xFFFFFFFE;
96 OVERLAY __pram_overlay_run_start : AT (__pram_overlay_load_start)
97 {
98 .pram1 { */overlay1/* (.pram); * (.pram1) }
99 .pram2 { */overlay2/* (.pram); * (.pram2) }
100 } >P_RAM
101 __pram_overlay_run_end = .;
102 __pram_overlay_load_end = __pram_overlay_load_start + SIZEOF(.pram1) + SIZEOF(.pram2);
103 __pram_end = __pram_overlay_run_end;
104 __flash_end = __pram_overlay_load_end;
105
106 /* Flash code. */
107 __text_begin = (__flash_end + 1) & 0xFFFFFFFE;
108 .text __text_begin :
109 {
110 * (.text);
111 * (.text.libgcc)
112 } >P_ROM = 0xffff
113 __text_end = __text_begin + SIZEOF(.text);
114 __flash_end = __text_end;
115
116 /* Strings. */
117 __strings_begin = (__flash_end + 1) & 0xFFFFFFFE;
118 .strings __strings_begin :
119 {
120 * (strings);
121 * (.progmem.data)
122 } >P_ROM = 0xffff
123 __strings_end = __strings_begin + SIZEOF (.strings);
124 __flash_end = __strings_end;
125
126 .ctors : { * (.ctors) } > P_ROM
127 .dtors : { * (.dtors) } > P_ROM
128
129 /* Reset code. */
130 .reset : { * (.reset) } >P_RESET = 0xffff
131
132 /* Configuration block. */
133 .config : { * (.config) } >P_CONFIG = 0xffff
134
135 /* Stack. */
136 PROVIDE (__stack = 0x01000FFF);
137
138 /* Stabs debugging sections. */
139 .stab 0 : { *(.stab) }
140 .stabstr 0 : { *(.stabstr) }
141 .stab.excl 0 : { *(.stab.excl) }
142 .stab.exclstr 0 : { *(.stab.exclstr) }
143 .stab.index 0 : { *(.stab.index) }
144 .stab.indexstr 0 : { *(.stab.indexstr) }
145 .comment 0 : { *(.comment) }
146
147 EOF
148
149 . $srcdir/scripttempl/DWARF.sc
150
151 cat <<EOF
152 }
153 EOF