[OpenBIOS] [PATCH v3] sparc32: fix __context corruption in __switch_context_nosave
Blue Swirl
blauwirbel at gmail.com
Sat Feb 12 17:41:29 CET 2011
Thanks, applied.
On Sat, Feb 12, 2011 at 3:21 PM, Artyom Tarasenko <atar4qemu at gmail.com> wrote:
> __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,15 @@
> set (PSR_PS | PSR_S | PSR_PIL | PSR_EF), %g2
> wr %g2, 0x0, %psr
> #endif
> -
> + set __context, %g1
> + /* Swap ctx pointer with %fp and jump*/
> + ba __set_context
> + swap [%g1], %fp
> __switch_context_nosave:
> - set __context, %g1
> - /* Swap ctx pointer with %fp */
> - swap [%g1], %fp
> + 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/
>
More information about the OpenBIOS
mailing list