(Большинство) регистров, видимых для кода режима пользователя, также можно сохранять / восстанавливать в коде режима пользователя.
Так как поток пользовательского режима (по крайней мере, обычно) не переключается приоритетно, вам все равно обычно не нужно сохранять все регистры. Типичная реализация использует setjmp и longjmp для сохранения / восстановления необходимого состояния. Обычно они не связаны с переключением режимов пользователя / ядра.