__switch_context_nosave shall not write to __context, only read it.
Signed-off-by: Artyom Tarasenko atar4qemu@gmail.com --- arch/sparc32/switch.S (revision 1024) +++ arch/sparc32/switch.S (working copy) @@ -79,11 +79,15 @@ set (PSR_PS | PSR_S | PSR_PIL | PSR_EF), %g2 wr %g2, 0x0, %psr #endif - -__switch_context_nosave: - set __context, %g1 + set __context, %g1 /* Swap ctx pointer with %fp */ swap [%g1], %fp + ba __set_context +__switch_context_nosave: + set __context, %g1 + /* Load %fp from ctx pointer */ + ld [%g1], %fp +__set_context: /* Load all registers */ /* offset 0: %g0, no need to load */ ld [%fp + 4], %g1 --- Regards, Artyom Tarasenko
solaris/sparc under qemu blog: http://tyom.blogspot.com/