This one fixes a problem that screws up virtual terminals whenever you try to start X on certain video hardware (including Intel i810/i830, which is what I have). I've been using Xorg with this patch for a while and it's been working fine.
gcc4 has issues with libvgahw.a. This patch is a workaround stolen from
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161242 (by Olivier
Baudron). See also Debian #318218 and bugs merged to it

diff -ruN xc-old/programs/Xserver/hw/xfree86/vgahw/vgaHW.c 
xc/programs/Xserver/hw/xfree86/vgahw/vgaHW.c
--- xc-old/programs/Xserver/hw/xfree86/vgahw/vgaHW.c    2005-05-08 
23:23:09.000000000 -0400
+++ xc/programs/Xserver/hw/xfree86/vgahw/vgaHW.c        2005-07-15 
15:09:29.000000000 -0400
@@ -428,12 +428,16 @@
 static void
 mmioWriteAttr(vgaHWPtr hwp, CARD8 index, CARD8 value)
 {
+    volatile CARD8 tmp;
+
     if (hwp->paletteEnabled)
        index &= ~0x20;
     else
        index |= 0x20;
 
-    (void) minb(hwp->IOBase + VGA_IN_STAT_1_OFFSET);
+    /* gcc-4.0 -O2 is broken : needs a volatile assignment */ 
+    tmp = minb(hwp->IOBase + VGA_IN_STAT_1_OFFSET);
+
     moutb(VGA_ATTR_INDEX, index);
     moutb(VGA_ATTR_DATA_W, value);
 }
@@ -441,12 +445,16 @@
 static CARD8
 mmioReadAttr(vgaHWPtr hwp, CARD8 index)
 {
+    volatile CARD8 tmp;
+  
     if (hwp->paletteEnabled)
        index &= ~0x20;
     else
        index |= 0x20;
 
-    (void) minb(hwp->IOBase + VGA_IN_STAT_1_OFFSET);
+    /* gcc-4.0 -O2 is broken : needs a volatile assignment */ 
+    tmp = minb(hwp->IOBase + VGA_IN_STAT_1_OFFSET);
+
     moutb(VGA_ATTR_INDEX, index);
     return minb(VGA_ATTR_DATA_R);
 }
@@ -466,7 +474,11 @@
 static void
 mmioEnablePalette(vgaHWPtr hwp)
 {
-    (void) minb(hwp->IOBase + VGA_IN_STAT_1_OFFSET);
+    volatile CARD8 tmp;
+    
+    /* gcc-4.0 -O2 is broken : needs a volatile assignment */ 
+    tmp = minb(hwp->IOBase + VGA_IN_STAT_1_OFFSET);
+    
     moutb(VGA_ATTR_INDEX, 0x00);
     hwp->paletteEnabled = TRUE;
 }
@@ -474,7 +486,11 @@
 static void
 mmioDisablePalette(vgaHWPtr hwp)
 {
-    (void) minb(hwp->IOBase + VGA_IN_STAT_1_OFFSET);
+    volatile CARD8 tmp;
+    
+    /* gcc-4.0 -O2 is broken : needs a volatile assignment */ 
+    tmp = minb(hwp->IOBase + VGA_IN_STAT_1_OFFSET);
+    
     moutb(VGA_ATTR_INDEX, 0x20);
     hwp->paletteEnabled = FALSE;
 }
-- 
http://linuxfromscratch.org/mailman/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to