]> xenbits.xensource.com Git - seabios.git/commitdiff
vgabios: Don't declare custom internal BDA storage in std/bda.h
authorKevin O'Connor <kevin@koconnor.net>
Sat, 18 Oct 2014 01:17:48 +0000 (21:17 -0400)
committerKevin O'Connor <kevin@koconnor.net>
Mon, 27 Oct 2014 15:00:32 +0000 (11:00 -0400)
The vgabios uses storage in the BDA at offset 0xb9 for internal custom
storage (the contents do not appear to be part of any bios standard).
Move the description of this custom vgabios area from std/bda.h to
vgasrc/vgabios.h.  Add two new macros (GET_BDA_EXT and SET_BDA_EXT).
This should make it more clear that the area is for custom internal
storage.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
src/std/bda.h
vgasrc/vbe.c
vgasrc/vgabios.c
vgasrc/vgabios.h

index 948bdbf731e3dca3f2d8dc41f6a5bf036e511c3c..c321266e2b895fa8859db2707a5d9a4810b349fe 100644 (file)
@@ -95,12 +95,7 @@ struct bios_data_area_s {
     struct segoff_s video_savetable;
     u8 other_ac[4];
     // 40:B0
-    u8 other_b0[9];
-    u8 vbe_flag;
-    u16 vbe_mode;
-    u8 other_bc[4];
-    // 40:C0
-    u8 other_c0[4*16];
+    u8 other_b0[5*16];
 } PACKED;
 
 // BDA floppy_recalibration_status bitdefs
index 12bd9812167c1a40665635b349a47496b82c5c44..06ec22ef690b14abb3d020cd0e2f2f2648fc6ef5 100644 (file)
@@ -217,7 +217,7 @@ vbe_104f02(struct bregs *regs)
 static void
 vbe_104f03(struct bregs *regs)
 {
-    regs->bx = GET_BDA(vbe_mode);
+    regs->bx = GET_BDA_EXT(vbe_mode);
     dprintf(1, "VBE current mode=%x\n", regs->bx);
     regs->ax = 0x004f;
 }
@@ -247,7 +247,7 @@ vbe_104f05(struct bregs *regs)
 {
     if (regs->bh > 1 || regs->bl > 1)
         goto fail;
-    if (GET_BDA(vbe_mode) & MF_LINEARFB) {
+    if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
         regs->ah = VBE_RETURN_STATUS_INVALID;
         return;
     }
@@ -382,10 +382,10 @@ vbe_104f10(struct bregs *regs)
         regs->bx = 0x0f30;
         break;
     case 0x01:
-        SET_BDA(vbe_flag, regs->bh);
+        SET_BDA_EXT(vbe_flag, regs->bh);
         break;
     case 0x02:
-        regs->bh = GET_BDA(vbe_flag);
+        regs->bh = GET_BDA_EXT(vbe_flag);
         break;
     default:
         regs->ax = 0x014f;
index e87b7ebffb8fb50a4d68a0a79dc65c3fad45982c..d36b62a379b98ed099f378c718f15c749e01147b 100644 (file)
@@ -252,7 +252,7 @@ bda_save_restore(int cmd, u16 seg, void *data)
                    , sizeof(info->bda_0x49));
         memcpy_far(seg, info->bda_0x84, SEG_BDA, (void*)0x84
                    , sizeof(info->bda_0x84));
-        SET_FARVAR(seg, info->vbe_mode, GET_BDA(vbe_mode));
+        SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
     }
@@ -261,7 +261,7 @@ bda_save_restore(int cmd, u16 seg, void *data)
                    , sizeof(info->bda_0x49));
         memcpy_far(SEG_BDA, (void*)0x84, seg, info->bda_0x84
                    , sizeof(info->bda_0x84));
-        SET_BDA(vbe_mode, GET_FARVAR(seg, info->vbe_mode));
+        SET_BDA_EXT(vbe_mode, GET_FARVAR(seg, info->vbe_mode));
         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
     }
@@ -276,7 +276,7 @@ bda_save_restore(int cmd, u16 seg, void *data)
 struct vgamode_s *
 get_current_mode(void)
 {
-    return vgahw_find_mode(GET_BDA(vbe_mode) & ~MF_VBEFLAGS);
+    return vgahw_find_mode(GET_BDA_EXT(vbe_mode) & ~MF_VBEFLAGS);
 }
 
 // Setup BDA after a mode switch.
@@ -301,7 +301,7 @@ vga_set_mode(int mode, int flags)
         SET_BDA(video_mode, mode);
     else
         SET_BDA(video_mode, 0xff);
-    SET_BDA(vbe_mode, mode | (flags & MF_VBEFLAGS));
+    SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
     if (memmodel == MM_TEXT) {
         SET_BDA(video_cols, width);
         SET_BDA(video_rows, height-1);
index 02cf3e3250c2bd6da1edc08255471bc48ecb4e58..70682c955227f98c0e3ffdf156c016d5437bde70 100644 (file)
@@ -75,6 +75,19 @@ struct gfx_op {
 #define GO_MEMSET  3
 #define GO_MEMMOVE 4
 
+// Custom internal storage in BDA
+#define VGA_CUSTOM_BDA 0xb9
+
+struct vga_bda_s {
+    u8 vbe_flag;
+    u16 vbe_mode;
+} PACKED;
+
+#define GET_BDA_EXT(var) \
+    GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
+#define SET_BDA_EXT(var, val) \
+    SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
+
 // Debug settings
 #define DEBUG_VGA_POST 1
 #define DEBUG_VGA_10 3