<div dir="ltr">Hi,<div><br></div><div>I am debugging a code (<a href="https://git.rtems.org/rtems/tree/testsuites/tmtests/tm24/task1.c">tm24</a>) and there is a scenario where a thread is blocked on the CPU and a new thread has to start executing in its place. So, the thread which is getting blocked (executing thread) executes the _Thread_Do_dispatch and runs the code <a href="https://git.rtems.org/rtems/tree/cpukit/score/src/threaddispatch.c#n308">until </a>:</div>_Context_Switch( &executing->Registers, &heir->Registers ). After this, the heir thread starts executing from _Thread_Handler. Why is this the case? Should the heir not start its execution from where the (earlier) executing thread left the program counter at, i.e. after the _Context_Switch in _Thread_Do_dispatch?<div><br></div><div>Please let me know your thoughts.</div><div><br></div><div>Thanks,</div><div>Richi.<br><div>  </div></div></div>