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(a)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
@@ -304,7 +304,7 @@ vga_set_mode(int mode, int flags)
SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
- 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).