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