Rev 2465 | Rev 3135 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2465 | Rev 2611 | ||
---|---|---|---|
Line 212... | Line 212... | ||
212 | static void install_handler (unsigned handler_addr, unsigned* vector) |
212 | static void install_handler (unsigned handler_addr, unsigned* vector) |
213 | { |
213 | { |
214 | /* relative address (related to exc. vector) of the word |
214 | /* relative address (related to exc. vector) of the word |
215 | * where handler's address is stored |
215 | * where handler's address is stored |
216 | */ |
216 | */ |
217 | volatile uint32_t handler_address_ptr = EXC_VECTORS_SIZE - PREFETCH_OFFSET; |
217 | volatile uint32_t handler_address_ptr = EXC_VECTORS_SIZE - |
- | 218 | PREFETCH_OFFSET; |
|
218 | 219 | ||
219 | /* make it LDR instruction and store at exception vector */ |
220 | /* make it LDR instruction and store at exception vector */ |
220 | *vector = handler_address_ptr | LDR_OPCODE; |
221 | *vector = handler_address_ptr | LDR_OPCODE; |
221 | 222 | ||
222 | /* store handler's address */ |
223 | /* store handler's address */ |
Line 284... | Line 285... | ||
284 | * |
285 | * |
285 | * Dispatches the syscall. |
286 | * Dispatches the syscall. |
286 | */ |
287 | */ |
287 | static void swi_exception(int exc_no, istate_t *istate) |
288 | static void swi_exception(int exc_no, istate_t *istate) |
288 | { |
289 | { |
289 | /* |
- | |
290 | dprintf("SYSCALL: r0-r4: %x, %x, %x, %x, %x; pc: %x\n", istate->r0, |
- | |
291 | istate->r1, istate->r2, istate->r3, istate->r4, istate->pc); |
- | |
292 | */ |
- | |
293 | - | ||
294 | istate->r0 = syscall_handler(istate->r0, istate->r1, istate->r2, |
290 | istate->r0 = syscall_handler(istate->r0, istate->r1, istate->r2, |
295 | istate->r3, istate->r4); |
291 | istate->r3, istate->r4, istate->r5, istate->r6); |
296 | } |
292 | } |
297 | 293 | ||
298 | /** Interrupt Exception handler. |
294 | /** Interrupt Exception handler. |
299 | * |
295 | * |
300 | * Determines the sources of interrupt and calls their handlers. |
296 | * Determines the sources of interrupt and calls their handlers. |