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/