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@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