Skip to content

Commit

Permalink
xtesa: fix lost save & restore states caused by merge code
Browse files Browse the repository at this point in the history
this is caused by:
35c8c80

Signed-off-by: ligd <liguiding1@xiaomi.com>
  • Loading branch information
GUIDINGLI committed Sep 27, 2024
1 parent 0bf2c9c commit 382e763
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion arch/xtensa/src/common/xtensa_switchcontext.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,24 @@ void up_switch_context(struct tcb_s *tcb, struct tcb_s *rtcb)
{
/* Are we in an interrupt handler? */

if (!up_current_regs())
if (up_current_regs())
{
/* Yes, then we have to do things differently.
* Just copy the current_regs into the OLD rtcb.
*/

xtensa_savestate(rtcb->xcp.regs);

/* Then switch contexts. Any necessary address environment
* changes will be made when the interrupt returns.
*/

xtensa_restorestate(tcb->xcp.regs);
}

/* No, then we will need to perform the user context switch */

else
{
/* Switch context to the context of the task at the head of the
* ready to run list.
Expand Down

0 comments on commit 382e763

Please sign in to comment.