With cooperative multitasking (coroutines) you can get by with saving less CPU state. I do this for my C coroutines package [1] for x86 and x86-64 by only saving the registers required by the calling convention.
Some more info here: https://github.com/google/marl/blob/cbef55d588bc28661bedb822...