diff options
-rw-r--r-- | vgasrc/vbe.c | 7 | ||||
-rw-r--r-- | vgasrc/vgabios.h | 4 |
2 files changed, 7 insertions, 4 deletions
diff --git a/vgasrc/vbe.c b/vgasrc/vbe.c index 06ec22e..e2aeced 100644 --- a/vgasrc/vbe.c +++ b/vgasrc/vbe.c @@ -381,11 +381,12 @@ vbe_104f10(struct bregs *regs) case 0x00: regs->bx = 0x0f30; break; - case 0x01: - SET_BDA_EXT(vbe_flag, regs->bh); + case 0x01: ; + u8 flags = GET_BDA_EXT(flags); + SET_BDA_EXT(flags, (flags & ~BF_PM_MASK) | (regs->bh & BF_PM_MASK)); break; case 0x02: - regs->bh = GET_BDA_EXT(vbe_flag); + regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK; break; default: regs->ax = 0x014f; diff --git a/vgasrc/vgabios.h b/vgasrc/vgabios.h index fc8d45a..0ec4a8e 100644 --- a/vgasrc/vgabios.h +++ b/vgasrc/vgabios.h @@ -79,11 +79,13 @@ struct gfx_op { #define VGA_CUSTOM_BDA 0xb9 struct vga_bda_s { - u8 vbe_flag; + u8 flags; u16 vbe_mode; u16 vgamode_offset; } PACKED; +#define BF_PM_MASK 0x0f + #define GET_BDA_EXT(var) \ GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var) #define SET_BDA_EXT(var, val) \ |