[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