Re: Bug#319003: xserver-xorg: Trident and -3: libvgahw is still broken, Bug#318405: acknowledged by developer (Bug#318218: fixed in xorg-x11 6.8.2.dfsg.1-3)
Hello David.
On Wed, 20 Jul 2005 10:50:28 +0200
you wrote:
> What workaround have you tried to build that libvgahw.a? No
> optimization, or
> an enhanced version of the X.Org patch?
Enhanced version. Attached.
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
Index: xorg-x11-6.8.2.dfsg.1/programs/Xserver/hw/xfree86/vgahw/vgaHW.c
===================================================================
--- xc-old/programs/Xserver/hw/xfree86/vgahw/vgaHW.c 2005-07-20 10:32:26.000000000 +0800
+++ xc/programs/Xserver/hw/xfree86/vgahw/vgaHW.c 2005-07-20 10:33:42.000000000 +0800
@@ -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;
}
Reply to: