changeset 2359:ee6ef0b10655

More iopl'ed ports and test for brken BIOS
author nick
date Mon, 22 Oct 2001 09:28:44 +0000
parents 8b971caf9e03
children aa4d96380b7f
files linux/vbelib.c linux/vbelib.h
diffstat 2 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/linux/vbelib.c	Mon Oct 22 07:43:32 2001 +0000
+++ b/linux/vbelib.c	Mon Oct 22 09:28:44 2001 +0000
@@ -56,14 +56,22 @@
 
 int vbeInit( void )
 {
+   unsigned short iopl_port,int_10_seg;
+   size_t i;
    if(!LRMI_init()) return VBE_VM86_FAIL;
    /*
     Allow read/write to ALL io ports
    */
+   int_10_seg = *(unsigned short *)PhysToVirtSO(0x0000,0x0042);
+   /* Video BIOS should be at C000:0000 and above */
+   if((int_10_seg >> 12) < 0xC) return VBE_BROKEN_BIOS;
    ioperm(0, 1024, 1);
    iopl(3);
    memset(&vbe_pm_info,0,sizeof(struct VesaProtModeInterface));
    vbeGetProtModeInfo(&vbe_pm_info);
+   i = 0;
+   while((iopl_port=vbe_pm_info.iopl_ports[i++]) != 0xFFFF) ioperm(iopl_port,1,1);
+   iopl(3);
    return VBE_OK;
 }
 
--- a/linux/vbelib.h	Mon Oct 22 07:43:32 2001 +0000
+++ b/linux/vbelib.h	Mon Oct 22 09:28:44 2001 +0000
@@ -189,6 +189,7 @@
 #define VBE_VM86_FAIL         -1
 #define VBE_OUT_OF_DOS_MEM    -2
 #define VBE_OUT_OF_MEM        -3
+#define VBE_BROKEN_BIOS       -4
 #define VBE_VESA_ERROR_MASK   0x004f
 #define VBE_VESA_ERRCODE_MASK 0xff00