diff options
| author | mbbill <[email protected]> | 2009-12-29 07:48:10 +0000 |
|---|---|---|
| committer | mbbill <[email protected]> | 2009-12-29 07:48:10 +0000 |
| commit | 8a590215b66ac780c9d5a168146b945b8071dcf6 (patch) | |
| tree | 2ba86cf5f34861b6311e95cefa391ac85d0a13b3 /libcpu | |
| parent | ef9d8e4a001b5962852e09d499d11585346fce69 (diff) | |
FIX: If abort happened in irq mode, halt system.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@259 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'libcpu')
| -rw-r--r-- | libcpu/arm/AT91SAM7X/start_rvds.S | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libcpu/arm/AT91SAM7X/start_rvds.S b/libcpu/arm/AT91SAM7X/start_rvds.S index 453d8beea2..bc5c6e9cce 100644 --- a/libcpu/arm/AT91SAM7X/start_rvds.S +++ b/libcpu/arm/AT91SAM7X/start_rvds.S @@ -415,11 +415,16 @@ MC_RCR EQU 0x00 ; MC_RCR Offset IMPORT rt_interrupt_from_thread
IMPORT rt_interrupt_to_thread
IMPORT rt_hw_trap_irq
- IMPORT rt_hw_trap_abort
+ IMPORT rt_hw_trap_abort
+ IMPORT rt_interrupt_nest
Abort_Handler PROC
EXPORT Abort_Handler
stmfd sp!, {r0-r12,lr}
+ LDR r0, =rt_interrupt_nest
+ LDR r1, [r0]
+ CMP r1, #0
+DeadLoop BHI DeadLoop ; Abort happened in irq mode, halt system.
bl rt_interrupt_enter
bl rt_hw_trap_abort
bl rt_interrupt_leave
|
