|
@@ -272,12 +272,17 @@ rt_hw_interrupt_thread_switch PROC
|
|
|
HardFault_Handler PROC
|
|
|
|
|
|
; get current context
|
|
|
- MRS r0, msp ;get fault context from handler
|
|
|
- TST lr, #0x04 ;if(!EXC_RETURN[2])
|
|
|
+ MRS r0, msp ; get fault context from handler
|
|
|
+ TST lr, #0x04 ; if(!EXC_RETURN[2])
|
|
|
BEQ get_sp_done
|
|
|
- MRS r0, psp ;get fault context from thread
|
|
|
+ MRS r0, psp ; get fault context from thread
|
|
|
get_sp_done
|
|
|
|
|
|
+ IF {FPU} != "SoftVFP"
|
|
|
+ TST lr, #0x10 ; if(!EXC_RETURN[4])
|
|
|
+ VSTMFDEQ r0!, {d8 - d15} ; push FPU register s16~s31
|
|
|
+ ENDIF
|
|
|
+
|
|
|
STMFD r0!, {r4 - r11} ; push r4 - r11 register
|
|
|
|
|
|
LDR r2, =rt_trustzone_current_context ; r2 = &rt_secure_current_context
|