Bug#234808: Updated patch for 4.3.0
Here is an updated version of the 4.1.0 patch that applies to 4.3.0.
It replaces the existing 315_arm_* patch that was the result of the
partial bug223567 patch.
I haven't yet proved that it works (building now...), but I do think that
this bug needs upgrading from wishlist - xfree86 doesn't work at all on the
netwinder without it, and is probably broken on all/most other arm devices
too.
---------
The files xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c
xc/programs/Xserver/hw/xfree86/common/xf86Bus.c and
xc/programs/Xserver/hw/xfree86/vgahw/vhaHW.h
require some checks for the ARM architecture to prevent the X server from
trying to execute code meant only for x86. This is consistent with other
non-x86 platforms.
This patch by Peter Naulls, updated by Wookey. Not submitted upstream yet.
diff -urN xc/programs/Xserver/hw/xfree86/common/xf86Bus.c xc.new/programs/Xserver/hw/xfree86/common/xf86Bus.c
--- xc/programs/Xserver/hw/xfree86/common/xf86Bus.c 2003-02-21 18:19:34.000000000 +0100
+++ xc.new/programs/Xserver/hw/xfree86/common/xf86Bus.c 2004-05-06 17:41:54.000000000 +0200
@@ -2966,7 +2966,7 @@
CheckGenericGA()
{
/* This needs to be changed for multiple domains */
-#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__)
+#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__) && !defined(__arm__)
IOADDRESS GenericIOBase = VGAHW_GET_IOBASE();
CARD8 CurrentValue, TestValue;
diff -urN xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c xc.new/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c
--- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c 2004-05-06 18:11:19.000000000 +0200
+++ xc.new/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c 2004-05-06 18:03:55.000000000 +0200
@@ -420,7 +420,7 @@
Base,realBase,alignOff);
#endif
-#if defined(__ia64__)
+#if defined(__ia64__) || defined(__arm__)
#ifndef MAP_WRITECOMBINED
#define MAP_WRITECOMBINED 0x00010000
#endif
@@ -522,7 +522,7 @@
#endif
}
close(fd);
-#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__)
+#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__)
if (ioperm(0, 1024, 1) || iopl(3)) {
if (errno == ENODEV)
ErrorF("xf86EnableIOPorts: no I/O ports found\n");
@@ -548,7 +548,7 @@
#if defined(__powerpc__)
munmap(ioBase, 0x20000);
ioBase = NULL;
-#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__)
+#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__)
iopl(0);
ioperm(0, 1024, 0);
#endif
@@ -567,7 +567,7 @@
Bool
xf86DisableInterrupts()
{
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__)
+#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__)
if (!ExtendedEnabled)
if (iopl(3) || ioperm(0, 1024, 1))
return (FALSE);
@@ -586,7 +586,7 @@
asm("cli");
# endif
#endif
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__)
+#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__) && !defined(__arm__)
if (!ExtendedEnabled) {
iopl(0);
ioperm(0, 1024, 0);
@@ -599,7 +599,7 @@
void
xf86EnableInterrupts()
{
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__)
+#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__)
if (!ExtendedEnabled)
if (iopl(3) || ioperm(0, 1024, 1))
return;
@@ -618,7 +618,7 @@
asm("sti");
# endif
#endif
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__)
+#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__) && !defined(__arm__)
if (!ExtendedEnabled) {
iopl(0);
ioperm(0, 1024, 0);
diff -urN xc/programs/Xserver/hw/xfree86/vgahw/vgaHW.h xc.new/programs/Xserver/hw/xfree86/vgahw/vgaHW.h
--- xc/programs/Xserver/hw/xfree86/vgahw/vgaHW.h 2002-04-04 16:05:56.000000000 +0200
+++ xc.new/programs/Xserver/hw/xfree86/vgahw/vgaHW.h 2004-05-06 17:43:49.000000000 +0200
@@ -176,7 +176,7 @@
#define BITS_PER_GUN 6
#define COLORMAP_SIZE 256
-#if defined(__powerpc__)
+#if defined(__powerpc__) || defined(__arm__)
#define DACDelay(hw) /* No legacy VGA support */
#else
#define DACDelay(hw) \
Wookey
--
Aleph One Ltd, Bottisham, CAMBRIDGE, CB5 9BA, UK Tel +44 (0) 1223 811679
work: http://www.aleph1.co.uk/ play: http://www.chaos.org.uk/~wookey/
Reply to: