diff options
Diffstat (limited to 'firmware/app.lds')
-rw-r--r-- | firmware/app.lds | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/firmware/app.lds b/firmware/app.lds index feff264d39..d49949930d 100644 --- a/firmware/app.lds +++ b/firmware/app.lds | |||
@@ -128,8 +128,8 @@ _pluginbuf = 0; | |||
128 | #define IRAMSIZE 0xc000 | 128 | #define IRAMSIZE 0xc000 |
129 | #elif CONFIG_CPU==PNX0101 | 129 | #elif CONFIG_CPU==PNX0101 |
130 | #define DRAMORIG 0x24000000 + STUBOFFSET | 130 | #define DRAMORIG 0x24000000 + STUBOFFSET |
131 | #define IRAMORIG 0x400100 | 131 | #define IRAMORIG 0x400000 |
132 | #define IRAMSIZE 0x7f00 | 132 | #define IRAMSIZE 0x8000 |
133 | #else | 133 | #else |
134 | #define DRAMORIG 0x09000000 + STUBOFFSET | 134 | #define DRAMORIG 0x09000000 + STUBOFFSET |
135 | #define IRAMORIG 0x0f000000 | 135 | #define IRAMORIG 0x0f000000 |
@@ -150,6 +150,7 @@ MEMORY | |||
150 | 150 | ||
151 | SECTIONS | 151 | SECTIONS |
152 | { | 152 | { |
153 | #ifndef CPU_ARM | ||
153 | .vectors : | 154 | .vectors : |
154 | { | 155 | { |
155 | loadaddress = .; | 156 | loadaddress = .; |
@@ -162,6 +163,12 @@ SECTIONS | |||
162 | 163 | ||
163 | .text : | 164 | .text : |
164 | { | 165 | { |
166 | #else | ||
167 | .text : | ||
168 | { | ||
169 | loadaddress = .; | ||
170 | _loadaddress = .; | ||
171 | #endif | ||
165 | . = ALIGN(0x200); | 172 | . = ALIGN(0x200); |
166 | *(.init.text) | 173 | *(.init.text) |
167 | *(.text*) | 174 | *(.text*) |
@@ -193,7 +200,6 @@ SECTIONS | |||
193 | *(.data*) | 200 | *(.data*) |
194 | . = ALIGN(0x4); | 201 | . = ALIGN(0x4); |
195 | _dataend = .; | 202 | _dataend = .; |
196 | _iramcopy = .; | ||
197 | } > DRAM | 203 | } > DRAM |
198 | 204 | ||
199 | /DISCARD/ : | 205 | /DISCARD/ : |
@@ -201,14 +207,31 @@ SECTIONS | |||
201 | *(.eh_frame) | 207 | *(.eh_frame) |
202 | } | 208 | } |
203 | 209 | ||
204 | .iram IRAMORIG : AT ( _iramcopy) | 210 | #ifdef CPU_ARM |
211 | .vectors 0x0 : | ||
212 | { | ||
213 | _vectorsstart = .; | ||
214 | *(.vectors); | ||
215 | _vectorsend = .; | ||
216 | } AT> DRAM | ||
217 | |||
218 | _vectorscopy = LOADADDR(.vectors); | ||
219 | #endif | ||
220 | |||
221 | #if CONFIG_CPU==PNX0101 | ||
222 | .iram IRAMORIG + SIZEOF(.vectors) : | ||
223 | #else | ||
224 | .iram IRAMORIG : | ||
225 | #endif | ||
205 | { | 226 | { |
206 | _iramstart = .; | 227 | _iramstart = .; |
207 | *(.icode) | 228 | *(.icode) |
208 | *(.irodata) | 229 | *(.irodata) |
209 | *(.idata) | 230 | *(.idata) |
210 | _iramend = .; | 231 | _iramend = .; |
211 | } > IRAM | 232 | } > IRAM AT> DRAM |
233 | |||
234 | _iramcopy = LOADADDR(.iram); | ||
212 | 235 | ||
213 | .ibss (NOLOAD) : | 236 | .ibss (NOLOAD) : |
214 | { | 237 | { |
@@ -238,8 +261,10 @@ SECTIONS | |||
238 | } > DRAM | 261 | } > DRAM |
239 | #endif | 262 | #endif |
240 | 263 | ||
241 | #if defined(CPU_COLDFIRE) || defined(CPU_ARM) | 264 | #if defined(CPU_COLDFIRE) |
242 | .bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram): | 265 | .bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram): |
266 | #elif defined(CPU_ARM) | ||
267 | .bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram) + SIZEOF(.vectors): | ||
243 | #else | 268 | #else |
244 | .bss : | 269 | .bss : |
245 | #endif | 270 | #endif |