[OpenBIOS] [PATCH] sparc32: fix __context corruption in __switch_context_nosave
Artyom Tarasenko
atar4qemu at gmail.com
Wed Feb 9 19:37:04 CET 2011
__switch_context_nosave shall not write to __context, only read it.
Signed-off-by: Artyom Tarasenko <atar4qemu at gmail.com>
--- arch/sparc32/switch.S (revision 1024)
+++ arch/sparc32/switch.S (working copy)
@@ -79,11 +79,14 @@
set (PSR_PS | PSR_S | PSR_PIL | PSR_EF), %g2
wr %g2, 0x0, %psr
#endif
-
+ set __context, %g1
+ swap [%g1], %fp
+ ba __set_context
__switch_context_nosave:
- set __context, %g1
+ set __context, %g1
/* Swap ctx pointer with %fp */
- swap [%g1], %fp
+ 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/
More information about the OpenBIOS
mailing list