summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/arm/arm_exc_abort.S
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/cpu/arm/arm_exc_abort.S')
-rw-r--r--cpukit/score/cpu/arm/arm_exc_abort.S41
1 files changed, 21 insertions, 20 deletions
diff --git a/cpukit/score/cpu/arm/arm_exc_abort.S b/cpukit/score/cpu/arm/arm_exc_abort.S
index 59ab5d2988..f4cf6724b8 100644
--- a/cpukit/score/cpu/arm/arm_exc_abort.S
+++ b/cpukit/score/cpu/arm/arm_exc_abort.S
@@ -28,13 +28,13 @@
#ifdef ARM_MULTILIB_ARCH_V4
-.extern rtems_fatal_error_occurred
+.extern _ARM_Exception_default
-.globl arm_exc_data_abort_set_handler
-.globl arm_exc_data_abort
+.globl _ARMV4_Exception_data_abort_set_handler
+.globl _ARMV4_Exception_data_abort
-.globl arm_exc_prefetch_abort_set_handler
-.globl arm_exc_prefetch_abort
+.globl _ARMV4_Exception_prefetch_abort_set_handler
+.globl _ARMV4_Exception_prefetch_abort
.section ".bss"
@@ -50,7 +50,7 @@ prefetch_abort_handler:
.thumb_func
#endif
-arm_exc_data_abort_set_handler:
+_ARMV4_Exception_data_abort_set_handler:
ldr r1, =data_abort_handler
str r0, [r1]
#ifdef __thumb__
@@ -63,7 +63,7 @@ arm_exc_data_abort_set_handler:
.thumb_func
#endif
-arm_exc_prefetch_abort_set_handler:
+_ARMV4_Exception_prefetch_abort_set_handler:
ldr r1, =prefetch_abort_handler
str r0, [r1]
#ifdef __thumb__
@@ -74,20 +74,22 @@ arm_exc_prefetch_abort_set_handler:
.arm
-arm_exc_prefetch_abort:
+_ARMV4_Exception_prefetch_abort:
/* Save context and load handler */
- sub sp, #16
+ sub sp, #20
stmdb sp!, {r0-r12}
+ mov r4, #3
ldr r6, =prefetch_abort_handler
b save_more_context
-arm_exc_data_abort:
+_ARMV4_Exception_data_abort:
/* Save context and load handler */
- sub sp, #16
+ sub sp, #20
stmdb sp!, {r0-r12}
+ mov r4, #4
ldr r6, =data_abort_handler
save_more_context:
@@ -95,22 +97,21 @@ save_more_context:
/* Save more context */
mov r2, lr
mrs r3, spsr
- mrs r4, cpsr
+ mrs r7, cpsr
orr r5, r3, #ARM_PSR_I
bic r5, #ARM_PSR_T
msr cpsr, r5
mov r0, sp
mov r1, lr
- msr cpsr, r4
- add r5, sp, #68
- stmdb r5!, {r0-r3}
+ msr cpsr, r7
+ add r5, sp, #72
+ stmdb r5!, {r0-r4}
/* Call high level handler */
ldr r2, [r6]
cmp r2, #0
- ldreq r2, =rtems_fatal_error_occurred
- movne r0, sp
- moveq r0, #0xaa
+ ldreq r2, =_ARM_Exception_default
+ mov r0, sp
#ifndef __thumb__
mov lr, pc
mov pc, r2
@@ -121,11 +122,11 @@ save_more_context:
#endif /* __thumb__ */
/* Restore context */
- ldmia r5!, {r0-r3}
+ ldmia r5!, {r0-r4}
mov lr, r2
msr spsr, r3
ldmia sp!, {r0-r12}
- add sp, #16
+ add sp, #20
/* Return from interrupt */
subs pc, lr, #8