Rev 2286 | Rev 2304 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2286 | Rev 2298 | ||
---|---|---|---|
Line 63... | Line 63... | ||
63 | bne 1f \n\ |
63 | bne 1f \n\ |
64 | \n\ |
64 | \n\ |
65 | @prev mode was usermode \n\ |
65 | @prev mode was usermode \n\ |
66 | ldmfd r13!, {r0} \n\ |
66 | ldmfd r13!, {r0} \n\ |
67 | ldr r13, =supervisor_sp \n\ |
67 | ldr r13, =supervisor_sp \n\ |
- | 68 | ldr r13, [r13] \n\ |
|
68 | stmfd r13!, {lr} \n\ |
69 | stmfd r13!, {lr} \n\ |
69 | stmfd r13!, {r0-r12} \n\ |
70 | stmfd r13!, {r0-r12} \n\ |
70 | stmfd r13!, {r13, lr}^ \n\ |
71 | stmfd r13!, {r13, lr}^ \n\ |
71 | mrs r0, spsr \n\ |
72 | mrs r0, spsr \n\ |
72 | stmfd r13!, {r0} \n\ |
73 | stmfd r13!, {r0} \n\ |
Line 85... | Line 86... | ||
85 | mov r3, r13 \n\ |
86 | mov r3, r13 \n\ |
86 | stmfd r13!, {r2} \n\ |
87 | stmfd r13!, {r2} \n\ |
87 | mov r2, lr \n\ |
88 | mov r2, lr \n\ |
88 | stmfd r13!, {r4-r12} \n\ |
89 | stmfd r13!, {r4-r12} \n\ |
89 | mov r1, r13 \n\ |
90 | mov r1, r13 \n\ |
90 | mov lr, #0 \n\ |
91 | @following two lines are for debugging \n\ |
91 | mov sp, #0 \n\ |
92 | mov sp, #0 \n\ |
- | 93 | mov lr, #0 \n\ |
|
92 | msr cpsr_c, r0 \n\ |
94 | msr cpsr_c, r0 \n\ |
93 | \n\ |
95 | \n\ |
94 | ldmfd r13!, {r4, r5, r6, r7} \n\ |
96 | ldmfd r13!, {r4, r5, r6, r7} \n\ |
95 | stmfd r1!, {r4, r5, r6} \n\ |
97 | stmfd r1!, {r4, r5, r6} \n\ |
96 | stmfd r1!, {r7} \n\ |
98 | stmfd r1!, {r7} \n\ |
Line 128... | Line 130... | ||
128 | mov r13, r1 \n\ |
130 | mov r13, r1 \n\ |
129 | mov lr, r2 \n\ |
131 | mov lr, r2 \n\ |
130 | msr cpsr_c, r0 \n\ |
132 | msr cpsr_c, r0 \n\ |
131 | \n\ |
133 | \n\ |
132 | @actual return \n\ |
134 | @actual return \n\ |
133 | \n\ |
- | |
134 | ldmfd r13, {r0-r12, pc}^ \n\ |
135 | 4: ldmfd r13, {r0-r12, pc}^" |
135 | 4:" |
- | |
136 | ); |
136 | ); |
137 | } |
137 | } |
138 | 138 | ||
139 | 139 | ||
140 | 140 | ||
Line 244... | Line 244... | ||
244 | * |
244 | * |
245 | * Dispatches the syscall. |
245 | * Dispatches the syscall. |
246 | */ |
246 | */ |
247 | static void swi_exception(int exc_no, istate_t* istate) |
247 | static void swi_exception(int exc_no, istate_t* istate) |
248 | { |
248 | { |
- | 249 | dprintf("SYSCALL: r0-r4: %x, %x, %x, %x, %x; pc: %x", istate->r0, |
|
- | 250 | istate->r1, istate->r2, istate->r3, istate->r4, istate->pc); |
|
- | 251 | ||
249 | istate->r0 = syscall_handler( |
252 | istate->r0 = syscall_handler( |
250 | istate->r0, |
253 | istate->r0, |
251 | istate->r1, |
254 | istate->r1, |
252 | istate->r2, |
255 | istate->r2, |
253 | istate->r3, |
256 | istate->r3, |