diff options
Diffstat (limited to 'firmware/target/arm/crt0-pp.S')
-rw-r--r-- | firmware/target/arm/crt0-pp.S | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/firmware/target/arm/crt0-pp.S b/firmware/target/arm/crt0-pp.S index e0d1034f74..bbeace1b60 100644 --- a/firmware/target/arm/crt0-pp.S +++ b/firmware/target/arm/crt0-pp.S | |||
@@ -222,6 +222,19 @@ cop_init: | |||
222 | strhi r4, [r2], #4 | 222 | strhi r4, [r2], #4 |
223 | bhi 2b | 223 | bhi 2b |
224 | 224 | ||
225 | /* Set up stack for IRQ mode */ | ||
226 | msr cpsr_c, #0xd2 | ||
227 | ldr sp, =cop_irq_stack | ||
228 | /* Set up stack for FIQ mode */ | ||
229 | msr cpsr_c, #0xd1 | ||
230 | ldr sp, =fiq_stack | ||
231 | |||
232 | /* Let abort and undefined modes use IRQ stack */ | ||
233 | msr cpsr_c, #0xd7 | ||
234 | ldr sp, =cop_irq_stack | ||
235 | msr cpsr_c, #0xdb | ||
236 | ldr sp, =cop_irq_stack | ||
237 | |||
225 | ldr sp, =cop_stackend | 238 | ldr sp, =cop_stackend |
226 | 239 | ||
227 | /* Run cop_main() in apps/main.c */ | 240 | /* Run cop_main() in apps/main.c */ |
@@ -307,6 +320,10 @@ UIE: | |||
307 | .space 256*4 | 320 | .space 256*4 |
308 | irq_stack: | 321 | irq_stack: |
309 | 322 | ||
323 | /* 256 words of COP IRQ stack */ | ||
324 | .space 256*4 | ||
325 | cop_irq_stack: | ||
326 | |||
310 | /* 256 words of FIQ stack */ | 327 | /* 256 words of FIQ stack */ |
311 | .space 256*4 | 328 | .space 256*4 |
312 | fiq_stack: | 329 | fiq_stack: |