]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - ld/scripttempl/ip2k.sc
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / ld / scripttempl / ip2k.sc
CommitLineData
250d07de 1# Copyright (C) 2014-2021 Free Software Foundation, Inc.
6c19b93b 2#
985743c7
NC
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
2bf2bf23
AM
7# Using an empty script for ld -r is better than mashing together
8# sections. This hack likely leaves ld -Ur broken.
9test -n "${RELOCATING}" || exit 0
cf88bb9f 10cat << EOF
250d07de 11/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
985743c7
NC
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
cf88bb9f
NC
17OUTPUT_FORMAT("elf32-ip2k", "elf32-ip2k", "elf32-ip2k")
18OUTPUT_ARCH(ip2k)
b34c1498 19${RELOCATING+ENTRY(_start)}
cf88bb9f
NC
20SEARCH_DIR(.);
21
22/* IP2022 default linker script. */
23
24MEMORY
25{
26 D_GPR : org = 0x01000080, len = 128
6c19b93b
AM
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
cf88bb9f
NC
32}
33
34SECTIONS
35{
36 /* Allocated memory end markers
b81c93c8 37 (initialized to start of appropriate memory address). */
cf88bb9f
NC
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;
6c19b93b 95 __pram_overlay_load_start = (__flash_end + 1) & 0xFFFFFFFE;
cf88bb9f
NC
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
ceb0a680
NC
147EOF
148
d061dfac 149. $srcdir/scripttempl/DWARF.sc
ceb0a680
NC
150
151cat <<EOF
cf88bb9f
NC
152}
153EOF