diff --git a/arch/arm/src/armv8-r/arm_doirq.c b/arch/arm/src/armv8-r/arm_doirq.c index c265a14976..c949d21b96 100644 --- a/arch/arm/src/armv8-r/arm_doirq.c +++ b/arch/arm/src/armv8-r/arm_doirq.c @@ -31,6 +31,7 @@ #include #include +#include #include "arm_internal.h" #include "arm_gic.h" @@ -64,6 +65,13 @@ uint32_t *arm_doirq(int irq, uint32_t *regs) if (regs != CURRENT_REGS) { + /* Record the new "running" task when context switch occurred. + * g_running_tasks[] is only used by assertion logic for reporting + * crashes. + */ + + g_running_tasks[this_cpu()] = this_task(); + restore_critical_section(); regs = (uint32_t *)CURRENT_REGS; }