|
@@ -30,14 +30,14 @@
|
|
*
|
|
*
|
|
* @param regs the registers point
|
|
* @param regs the registers point
|
|
*/
|
|
*/
|
|
-void rt_hw_show_register (struct rt_hw_base_stack *regs)
|
|
|
|
|
|
+void rt_hw_show_register (struct rt_hw_exp_stack *regs)
|
|
{
|
|
{
|
|
rt_kprintf("Execption:\n");
|
|
rt_kprintf("Execption:\n");
|
|
rt_kprintf("r00:0x%08x r01:0x%08x r02:0x%08x r03:0x%08x\n", regs->r0, regs->r1, regs->r2, regs->r3);
|
|
rt_kprintf("r00:0x%08x r01:0x%08x r02:0x%08x r03:0x%08x\n", regs->r0, regs->r1, regs->r2, regs->r3);
|
|
rt_kprintf("r04:0x%08x r05:0x%08x r06:0x%08x r07:0x%08x\n", regs->r4, regs->r5, regs->r6, regs->r7);
|
|
rt_kprintf("r04:0x%08x r05:0x%08x r06:0x%08x r07:0x%08x\n", regs->r4, regs->r5, regs->r6, regs->r7);
|
|
rt_kprintf("r08:0x%08x r09:0x%08x r10:0x%08x\n", regs->r8, regs->r9, regs->r10);
|
|
rt_kprintf("r08:0x%08x r09:0x%08x r10:0x%08x\n", regs->r8, regs->r9, regs->r10);
|
|
rt_kprintf("fp :0x%08x ip :0x%08x\n", regs->fp, regs->ip);
|
|
rt_kprintf("fp :0x%08x ip :0x%08x\n", regs->fp, regs->ip);
|
|
- rt_kprintf("sp :0x%08x lr :0x%08x pc :0x%08x\n", regs+1, regs->lr, regs->pc);
|
|
|
|
|
|
+ rt_kprintf("sp :0x%08x lr :0x%08x pc :0x%08x\n", regs->sp, regs->lr, regs->pc);
|
|
rt_kprintf("cpsr:0x%08x\n", regs->cpsr);
|
|
rt_kprintf("cpsr:0x%08x\n", regs->cpsr);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -49,7 +49,7 @@ void rt_hw_show_register (struct rt_hw_base_stack *regs)
|
|
*
|
|
*
|
|
* @note never invoke this function in application
|
|
* @note never invoke this function in application
|
|
*/
|
|
*/
|
|
-void rt_hw_trap_udef(struct rt_hw_base_stack *regs)
|
|
|
|
|
|
+void rt_hw_trap_udef(struct rt_hw_exp_stack *regs)
|
|
{
|
|
{
|
|
rt_kprintf("undefined instruction\n");
|
|
rt_kprintf("undefined instruction\n");
|
|
rt_hw_show_register(regs);
|
|
rt_hw_show_register(regs);
|
|
@@ -67,12 +67,13 @@ void rt_hw_trap_udef(struct rt_hw_base_stack *regs)
|
|
*
|
|
*
|
|
* @note never invoke this function in application
|
|
* @note never invoke this function in application
|
|
*/
|
|
*/
|
|
-void rt_hw_trap_swi(struct rt_hw_base_stack *regs)
|
|
|
|
|
|
+void rt_hw_trap_svc(struct rt_hw_exp_stack *regs)
|
|
{
|
|
{
|
|
rt_kprintf("software interrupt\n");
|
|
rt_kprintf("software interrupt\n");
|
|
rt_hw_show_register(regs);
|
|
rt_hw_show_register(regs);
|
|
- if (rt_thread_self() != RT_NULL)
|
|
|
|
- rt_kprintf("Current Thread: %s\n", rt_thread_self()->name);
|
|
|
|
|
|
+#ifdef RT_USING_FINSH
|
|
|
|
+ list_thread();
|
|
|
|
+#endif
|
|
rt_hw_cpu_shutdown();
|
|
rt_hw_cpu_shutdown();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -84,12 +85,13 @@ void rt_hw_trap_swi(struct rt_hw_base_stack *regs)
|
|
*
|
|
*
|
|
* @note never invoke this function in application
|
|
* @note never invoke this function in application
|
|
*/
|
|
*/
|
|
-void rt_hw_trap_pabt(struct rt_hw_base_stack *regs)
|
|
|
|
|
|
+void rt_hw_trap_pabt(struct rt_hw_exp_stack *regs)
|
|
{
|
|
{
|
|
rt_kprintf("prefetch abort\n");
|
|
rt_kprintf("prefetch abort\n");
|
|
rt_hw_show_register(regs);
|
|
rt_hw_show_register(regs);
|
|
- if (rt_thread_self() != RT_NULL)
|
|
|
|
- rt_kprintf("Current Thread: %s\n", rt_thread_self()->name);
|
|
|
|
|
|
+#ifdef RT_USING_FINSH
|
|
|
|
+ list_thread();
|
|
|
|
+#endif
|
|
rt_hw_cpu_shutdown();
|
|
rt_hw_cpu_shutdown();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -101,12 +103,13 @@ void rt_hw_trap_pabt(struct rt_hw_base_stack *regs)
|
|
*
|
|
*
|
|
* @note never invoke this function in application
|
|
* @note never invoke this function in application
|
|
*/
|
|
*/
|
|
-void rt_hw_trap_dabt(struct rt_hw_base_stack *regs)
|
|
|
|
|
|
+void rt_hw_trap_dabt(struct rt_hw_exp_stack *regs)
|
|
{
|
|
{
|
|
rt_kprintf("Data Abort ");
|
|
rt_kprintf("Data Abort ");
|
|
rt_hw_show_register(regs);
|
|
rt_hw_show_register(regs);
|
|
- if (rt_thread_self() != RT_NULL)
|
|
|
|
- rt_kprintf("Current Thread: %s\n", rt_thread_self()->name);
|
|
|
|
|
|
+#ifdef RT_USING_FINSH
|
|
|
|
+ list_thread();
|
|
|
|
+#endif
|
|
rt_hw_cpu_shutdown();
|
|
rt_hw_cpu_shutdown();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -117,12 +120,13 @@ void rt_hw_trap_dabt(struct rt_hw_base_stack *regs)
|
|
*
|
|
*
|
|
* @note never invoke this function in application
|
|
* @note never invoke this function in application
|
|
*/
|
|
*/
|
|
-void rt_hw_trap_resv(struct rt_hw_base_stack *regs)
|
|
|
|
|
|
+void rt_hw_trap_resv(struct rt_hw_exp_stack *regs)
|
|
{
|
|
{
|
|
- rt_kprintf("not used\n");
|
|
|
|
|
|
+ rt_kprintf("Reserved trap\n");
|
|
rt_hw_show_register(regs);
|
|
rt_hw_show_register(regs);
|
|
- if (rt_thread_self() != RT_NULL)
|
|
|
|
- rt_kprintf("Current Thread: %s\n", rt_thread_self()->name);
|
|
|
|
|
|
+#ifdef RT_USING_FINSH
|
|
|
|
+ list_thread();
|
|
|
|
+#endif
|
|
rt_hw_cpu_shutdown();
|
|
rt_hw_cpu_shutdown();
|
|
}
|
|
}
|
|
|
|
|