[SeaBIOS] [PATCH] vgabios: Don't use "smsww" instruction - it confuses x86emu
Kevin O'Connor
kevin at koconnor.net
Thu Apr 9 18:58:47 CEST 2015
On Thu, Apr 09, 2015 at 06:39:55PM +0200, Paolo Bonzini wrote:
> On 09/04/2015 18:37, Kevin O'Connor wrote:
> > Commit 251e2638 introduced the "smsww" instruction to the vgabios.
> > Unfortunately, it appears at least some versions of x86emu crash when
> > executing that instruction (eg, FC13 installer crashes). That
> > instruction wasn't required to work around the problem fixed in
> > 251e2638, so just avoid it.
> >
> > Signed-off-by: Kevin O'Connor <kevin at koconnor.net>
> > ---
> >
> > The fix for the "skifree bug" tickled yet another old OS problem - old
> > versions of x86emu don't like smsww. :-( The smsww wasn't strickly
> > necessary, so this patch just stops using it.
> >
> > ---
> > vgasrc/vgabios.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/vgasrc/vgabios.c b/vgasrc/vgabios.c
> > index 7c1f0b8..f07e85b 100644
> > --- a/vgasrc/vgabios.c
> > +++ b/vgasrc/vgabios.c
> > @@ -304,7 +304,7 @@ vga_set_mode(int mode, int flags)
> > SET_BDA(video_mode, 0xff);
> > SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
> > SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
> > - if (CONFIG_VGA_ALLOCATE_EXTRA_STACK && !(getcr0_vm86() & CR0_PE))
> > + if (CONFIG_VGA_ALLOCATE_EXTRA_STACK)
> > // Disable extra stack if it appears a modern OS is in use.
> > // This works around bugs in some versions of Windows (Vista
> > // and possibly later) when the stack is in the e-segment.
> >
>
> Is it worth keeping the definition in src/x86.h?
Thanks for reviewing.
It could be removed, but I was thinking of leaving it in. It's always
a pain getting the parameters of gcc inline assembler correct and it
might be useful for some future requirement in the main bios (which
doesn't need to support x86emu).
-Kevin
More information about the SeaBIOS
mailing list