That's an odd way of writing it.
Don't we have a per-cpu segment here? I'd much rather just see it do
something like this (_before_ restoring the regular registers)
movq EIP(%esp),%rax
movq ESP(%esp),%rdx
movq %rax,gs:saved_esp
movq %rdx,gs:saved_eip
# restore regular regs
RESTORE_ALL
# skip eip/esp to get at eflags
addl $16,%esp
popfq
# restore rsp/rip
movq gs:saved_esp,%rsp
jmpq *(gs:saved_eip)
but I haven't thought deeply about it. Maybe there's something wrong with
the above.