提交 0d1cc356 编写于 作者: Z zhaohengbo

Merge remote-tracking branch 'upstream/master'

...@@ -114,3 +114,22 @@ void rt_hw_hard_fault_exception(struct exception_stack_frame *contex) ...@@ -114,3 +114,22 @@ void rt_hw_hard_fault_exception(struct exception_stack_frame *contex)
while (1); while (1);
} }
#define SCB_CFSR (*(volatile const unsigned *)0xE000ED28) /* Configurable Fault Status Register */
#define SCB_HFSR (*(volatile const unsigned *)0xE000ED2C) /* HardFault Status Register */
#define SCB_MMAR (*(volatile const unsigned *)0xE000ED34) /* MemManage Fault Address register */
#define SCB_BFAR (*(volatile const unsigned *)0xE000ED38) /* Bus Fault Address Register */
#define SCB_AIRCR (*(volatile unsigned long *)0xE000ED00) /* Reset control Address Register */
#define SCB_RESET_VALUE 0x05FA0004 /* Reset value, write to SCB_AIRCR can reset cpu */
#define SCB_CFSR_MFSR (*(volatile const unsigned char*)0xE000ED28) /* Memory-management Fault Status Register */
#define SCB_CFSR_BFSR (*(volatile const unsigned char*)0xE000ED29) /* Bus Fault Status Register */
#define SCB_CFSR_UFSR (*(volatile const unsigned short*)0xE000ED2A) /* Usage Fault Status Register */
/**
* reset CPU
*/
RT_WEAK void rt_hw_cpu_reset(void)
{
SCB_AIRCR = SCB_RESET_VALUE;//((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |SCB_AIRCR_SYSRESETREQ_Msk);
}
...@@ -69,9 +69,9 @@ trap_entry: ...@@ -69,9 +69,9 @@ trap_entry:
/* need to switch new thread */ /* need to switch new thread */
la s0, rt_thread_switch_interrupt_flag la s0, rt_thread_switch_interrupt_flag
LOAD s2, 0(s0) lw s2, 0(s0)
beqz s2, spurious_interrupt beqz s2, spurious_interrupt
STORE zero, 0(s0) sw zero, 0(s0)
csrr a0, mepc csrr a0, mepc
STORE a0, 0 * REGBYTES(sp) STORE a0, 0 * REGBYTES(sp)
......
...@@ -69,10 +69,10 @@ IRQ_Handler: ...@@ -69,10 +69,10 @@ IRQ_Handler:
/* need to switch new thread */ /* need to switch new thread */
la s0, rt_thread_switch_interrupt_flag la s0, rt_thread_switch_interrupt_flag
LOAD s2, 0(s0) lw s2, 0(s0)
beqz s2, spurious_interrupt beqz s2, spurious_interrupt
/* clear switch interrupt flag */ /* clear switch interrupt flag */
STORE zero, 0(s0) sw zero, 0(s0)
csrr a0, mepc csrr a0, mepc
STORE a0, 0 * REGBYTES(sp) STORE a0, 0 * REGBYTES(sp)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册