Browse Source

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
mbbill 15 năm trước cách đây
mục cha
commit
8a590215b6
1 tập tin đã thay đổi với 6 bổ sung1 xóa
  1. 6 1
      libcpu/arm/AT91SAM7X/start_rvds.S

+ 6 - 1
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