diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2015-03-17 11:37:25 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2015-03-18 01:46:56 -0400 |
commit | 251e26388b83f4bfd8a5ae28263db295e5b683b5 (patch) | |
tree | 0d4c0430771f91336580d1ed83510a8524d65597 /vgasrc/vgabios.h | |
parent | 184496863a40ac1eff5612ba0da11399535bfa40 (diff) | |
download | seabios-251e26388b83f4bfd8a5ae28263db295e5b683b5.tar.gz |
vgabios: Don't use extra stack if it appears a modern OS is in use
If the last mode set (while not in vm86 mode) was done from a VBE mode
set call then disable the extra stack. This works under the premise
that only a modern OS would invoke the VBE mode changing facilities
and a modern OS would always call the vgabios with sufficient stack
space.
This is an ugly hack to work around a problem Windows Vista (and
possibly later Windows releases) has with the VGA BIOS using a stack
in the e-segment.
Reported-by: Richard Laager <rlaager@wiktel.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'vgasrc/vgabios.h')
-rw-r--r-- | vgasrc/vgabios.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/vgasrc/vgabios.h b/vgasrc/vgabios.h index fd796f2e..831f6940 100644 --- a/vgasrc/vgabios.h +++ b/vgasrc/vgabios.h @@ -62,7 +62,8 @@ struct gfx_op { #define GO_MEMSET 3 #define GO_MEMMOVE 4 -// Custom internal storage in BDA +// Custom internal storage in BDA (don't change here without also +// updating vgaentry.S) #define VGA_CUSTOM_BDA 0xb9 struct vga_bda_s { @@ -74,6 +75,7 @@ struct vga_bda_s { #define BF_PM_MASK 0x0f #define BF_EMULATE_TEXT 0x10 #define BF_SWCURSOR 0x20 +#define BF_EXTRA_STACK 0x40 #define GET_BDA_EXT(var) \ GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var) |