65,6 → 65,7 |
@prev mode was usermode \n\ |
ldmfd r13!, {r0} \n\ |
ldr r13, =supervisor_sp \n\ |
ldr r13, [r13] \n\ |
stmfd r13!, {lr} \n\ |
stmfd r13!, {r0-r12} \n\ |
stmfd r13!, {r13, lr}^ \n\ |
87,8 → 88,9 |
mov r2, lr \n\ |
stmfd r13!, {r4-r12} \n\ |
mov r1, r13 \n\ |
@following two lines are for debugging \n\ |
mov sp, #0 \n\ |
mov lr, #0 \n\ |
mov sp, #0 \n\ |
msr cpsr_c, r0 \n\ |
\n\ |
ldmfd r13!, {r4, r5, r6, r7} \n\ |
130,9 → 132,7 |
msr cpsr_c, r0 \n\ |
\n\ |
@actual return \n\ |
\n\ |
ldmfd r13, {r0-r12, pc}^ \n\ |
4:" |
4: ldmfd r13, {r0-r12, pc}^" |
); |
} |
|
246,6 → 246,9 |
*/ |
static void swi_exception(int exc_no, istate_t* istate) |
{ |
dprintf("SYSCALL: r0-r4: %x, %x, %x, %x, %x; pc: %x", istate->r0, |
istate->r1, istate->r2, istate->r3, istate->r4, istate->pc); |
|
istate->r0 = syscall_handler( |
istate->r0, |
istate->r1, |