ASM context switching and panicking


I'm toying with green threading implementation. The ASM code I use basically stores FPU state, SP, BP, IP and some other registers on current stack, then uses provided destination pointer to restore the same state from the other stack, in reverse order. To be clear, it's ASM derived from Boost.Context.
So my question is. Do I need some tricks to support panicking and stack unwinding properly? Or does Rust use some mechanisms independent of registers and stack segment location?