mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 13:12:37 -05:00
arm: factor all exception handlers out of the crt0.S files
Remove the implementations of all exceptions handlers from the various crt0.S files and have a single implementation in system-arm.h The new implementation is weak so that it can be overwritten by some specific code (like the unwinder) Change-Id: Ib3e041ed6037376bbe0e79286057e1051640dd90 Reviewed-on: http://gerrit.rockbox.org/205 Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
This commit is contained in:
parent
bb0e4cc543
commit
f33330c0ff
11 changed files with 50 additions and 312 deletions
|
|
@ -161,38 +161,6 @@ remap:
|
|||
1:
|
||||
b 1b
|
||||
|
||||
/* All illegal exceptions call into UIE with exception address as first
|
||||
* parameter. This is calculated differently depending on which exception
|
||||
* we're in. Second parameter is exception number, used for a string lookup
|
||||
* in UIE. */
|
||||
undef_instr_handler:
|
||||
sub r0, lr, #4 @ r0 points to the faulty ARM instruction
|
||||
#ifdef USE_THUMB
|
||||
mrs r1, spsr
|
||||
tst r1, #(1<<5) @ T bit set ?
|
||||
subne r0, lr, #2 @ if yes, r0 points to the faulty THUMB instruction
|
||||
#endif /* USE_THUMB */
|
||||
mov r1, #0
|
||||
b UIE
|
||||
|
||||
/* We run sys mode most of the time, and should never see a software
|
||||
* exception being thrown. Make it illegal and call UIE. */
|
||||
software_int_handler:
|
||||
reserved_handler:
|
||||
sub r0, lr, #4
|
||||
mov r1, #4
|
||||
b UIE
|
||||
|
||||
prefetch_abort_handler:
|
||||
sub r0, lr, #4
|
||||
mov r1, #1
|
||||
b UIE
|
||||
|
||||
data_abort_handler:
|
||||
sub r0, lr, #8
|
||||
mov r1, #2
|
||||
b UIE
|
||||
|
||||
/* 256 words of IRQ stack */
|
||||
.space 256*4
|
||||
irq_stack:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue