- Call a yield function
- I yield my excecution to someone else
- Save context to stack
- register values & stack pointer
- Run some Rescheduele function to find a new thread
- Restore (differenet) stack pointer and registers
- Return (this will “return” into a different place than we “call”ed from!)