Subversion Repositories HelenOS

Rev

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,