summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tcc780x/crt0.S
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2011-10-11 16:06:03 +0000
committerMarcin Bukat <marcin.bukat@gmail.com>2011-10-11 16:06:03 +0000
commitbf056d5372b6375b088836dd57339d7a499fe0d6 (patch)
tree0e8b2d2f9782b3267b289f8c9715e6a6cb42660d /firmware/target/arm/tcc780x/crt0.S
parent90559156450082628ab1b3aed3d2db862de377c1 (diff)
downloadrockbox-bf056d5372b6375b088836dd57339d7a499fe0d6.tar.gz
rockbox-bf056d5372b6375b088836dd57339d7a499fe0d6.zip
Switch to SYS mode on arm FS#12322 by me
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30741 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/tcc780x/crt0.S')
-rw-r--r--firmware/target/arm/tcc780x/crt0.S23
1 files changed, 12 insertions, 11 deletions
diff --git a/firmware/target/arm/tcc780x/crt0.S b/firmware/target/arm/tcc780x/crt0.S
index 1612973866..1dbccf9828 100644
--- a/firmware/target/arm/tcc780x/crt0.S
+++ b/firmware/target/arm/tcc780x/crt0.S
@@ -120,17 +120,16 @@ copied_start:
120 ldr r11, =dma_play_data 120 ldr r11, =dma_play_data
121#endif 121#endif
122 122
123 /* Let abort and undefined modes use IRQ stack */ 123 /* Let svc, abort and undefined modes use irq stack */
124 mov r0,#0xd7 124 msr cpsr, #0xd3
125 msr cpsr, r0
126 ldr sp, =irq_stack 125 ldr sp, =irq_stack
127 mov r0,#0xdb 126 msr cpsr, #0xd7
128 msr cpsr, r0 127 ldr sp, =irq_stack
128 msr cpsr, #0xdb
129 ldr sp, =irq_stack 129 ldr sp, =irq_stack
130 130
131 /* Switch to supervisor mode */ 131 /* Switch to sys mode */
132 mov r0,#0xd3 132 msr cpsr, #0xdf
133 msr cpsr, r0
134 ldr sp, =stackend 133 ldr sp, =stackend
135 134
136 /* Enable MMU & caches. At present this is just doing what the OF does. 135 /* Enable MMU & caches. At present this is just doing what the OF does.
@@ -293,12 +292,14 @@ undef_instr_handler:
293 mov r1, #0 292 mov r1, #0
294 b UIE 293 b UIE
295 294
296/* We run supervisor mode most of the time, and should never see a software 295/* We run sys mode most of the time, and should never see a software
297 exception being thrown. Perhaps make it illegal and call UIE? 296 exception being thrown. Make it illegal and call UIE.
298 */ 297 */
299software_int_handler: 298software_int_handler:
300reserved_handler: 299reserved_handler:
301 movs pc, lr 300 sub r0, lr, #4
301 mov r1, #4
302 b UIE
302 303
303prefetch_abort_handler: 304prefetch_abort_handler:
304 sub r0, lr, #4 305 sub r0, lr, #4