Rev 2280 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2280 | Rev 2282 | ||
---|---|---|---|
Line 53... | Line 53... | ||
53 | 53 | ||
54 | //TODO: Remove include and move into exceptio.c |
54 | //TODO: Remove include and move into exceptio.c |
55 | #include <arch/exception.h> |
55 | #include <arch/exception.h> |
56 | 56 | ||
57 | #include <syscall/syscall.h> |
57 | #include <syscall/syscall.h> |
- | 58 | void tmp_swi_exception(int exc_no, istate_t* istate); |
|
58 | static void tmp_swi_exception(int exc_no, istate_t* istate) |
59 | void tmp_swi_exception(int exc_no, istate_t* istate) |
59 | { |
60 | { |
60 | ASSERT(exc_no == EXC_SWI); |
61 | ASSERT(exc_no == EXC_SWI); |
61 | ASSERT(istate); |
62 | ASSERT(istate); |
62 | // TODO: Alf ... remove aftet swi_exception is tested |
63 | // TODO: Alf ... remove aftet swi_exception is tested |
63 | dprintf("\nSWI - istate dump input :\n"); |
64 | dprintf("\nSWI - istate dump input :\n"); |
64 | dprintf(" r0:%X r1:%X r2:%X r3:%X\n", istate->r0, istate->r1, istate->r2, istate->r3); |
65 | dprintf(" r0:%X r1:%X r2:%X r3:%X\n", istate->r0, istate->r1, istate->r2, istate->r3); |
65 | dprintf(" r4:%X r5:%X r6:%X r7:%X\n", istate->r4, istate->r5, istate->r6, istate->r7); |
66 | dprintf(" r4:%X r5:%X r6:%X r7:%X\n", istate->r4, istate->r5, istate->r6, istate->r7); |
66 | dprintf(" r8:%X r8:%X r10:%X r11:%X\n", istate->r8, istate->r9, istate->r10, istate->r11); |
67 | dprintf(" r8:%X r8:%X r10:%X r11:%X\n", istate->r8, istate->r9, istate->r10, istate->r11); |
67 | dprintf(" r12:%X r13:%X lr:%X spsr:%X\n", istate->r12, istate->sp, istate->lr, istate->spsr); |
68 | dprintf(" r12:%X r13:%X lr:%X spsr:%X\n", istate->r12, istate->sp, istate->lr, istate->spsr); |
68 | dprintf(" prev_lr:%X prev_sp:%X\n", istate->r12, istate->prev_lr, istate->prev_sp); |
69 | // dprintf(" prev_lr:%X prev_sp:%X\n", istate->r12, istate->prev_lr, istate->prev_sp); |
69 | // call kernel to serve syscall |
70 | // call kernel to serve syscall |
70 | istate->r0 = syscall_handler( |
71 | istate->r0 = syscall_handler( |
71 | istate->r0, |
72 | istate->r0, |
72 | istate->r1, |
73 | istate->r1, |
73 | istate->r2, |
74 | istate->r2, |
Line 78... | Line 79... | ||
78 | dprintf("\nSWI - Istate dump after :\n"); |
79 | dprintf("\nSWI - Istate dump after :\n"); |
79 | dprintf(" r0:%X r1:%X r2:%X r3:%X\n", istate->r0, istate->r1, istate->r2, istate->r3); |
80 | dprintf(" r0:%X r1:%X r2:%X r3:%X\n", istate->r0, istate->r1, istate->r2, istate->r3); |
80 | dprintf(" r4:%X r5:%X r6:%X r7:%X\n", istate->r4, istate->r5, istate->r6, istate->r7); |
81 | dprintf(" r4:%X r5:%X r6:%X r7:%X\n", istate->r4, istate->r5, istate->r6, istate->r7); |
81 | dprintf(" r8:%X r8:%X r10:%X r11:%X\n", istate->r8, istate->r9, istate->r10, istate->r11); |
82 | dprintf(" r8:%X r8:%X r10:%X r11:%X\n", istate->r8, istate->r9, istate->r10, istate->r11); |
82 | dprintf(" r12:%X r13:%X lr:%X spsr:%X\n", istate->r12, istate->sp, istate->lr, istate->spsr); |
83 | dprintf(" r12:%X r13:%X lr:%X spsr:%X\n", istate->r12, istate->sp, istate->lr, istate->spsr); |
83 | dprintf(" prev_lr:%X prev_sp:%X\n", istate->r12, istate->prev_lr, istate->prev_sp); |
84 | // dprintf(" prev_lr:%X prev_sp:%X\n", istate->r12, istate->prev_lr, istate->prev_sp); |
84 | } |
85 | } |
85 | 86 | ||
86 | 87 | ||
87 | void arch_pre_main(void) |
88 | void arch_pre_main(void) |
88 | { |
89 | { |
Line 238... | Line 239... | ||
238 | "ldmfd r0, {r0-r12, sp, lr, pc}^\n" // jump into user mode |
239 | "ldmfd r0, {r0-r12, sp, lr, pc}^\n" // jump into user mode |
239 | : // no output |
240 | : // no output |
240 | : "r"(&ustate), "r"(cpsr), "r"(tmpsr) // |
241 | : "r"(&ustate), "r"(cpsr), "r"(tmpsr) // |
241 | : "r0","r1" |
242 | : "r0","r1" |
242 | ); |
243 | ); |
243 | 244 | */ |
|
244 | while(1) |
245 | while(1) |
245 | ; |
246 | ; |
246 | */ |
- | |
247 | 247 | ||
248 | } |
248 | } |
249 | /** @} |
249 | /** @} |
250 | */ |
250 | */ |
251 | 251 |