Subject: XFree86 4.6.0 on Alpha - success
To: NetBSD port-alpha mailing list <port-alpha@netbsd.org>
From: David Hopper <dhop@nwlink.com>
List: port-alpha
Date: 05/14/2006 05:11:56
--Apple-Mail-6--349691333
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=US-ASCII;
delsp=yes;
format=flowed
Hi there,
After a good deal of trial-and-error and learning more than I wanted
to about volatile void pointers, I have a functional XFree86 4.6.0
installation on my PWS 600au with a Radeon 9200 SE, running NetBSD
from March of 2005 (3.99.1). Anything >=3.0 should work, I imagine:
current (3.99.19) also compiles the tree cleanly after patching.
XFree86 still wedges my AlphaServer 1200, but it has been doing this
since 2002, so I'm not surprised by that.
XFree86 4.6.0 was released May 10, 2006. If it is imported, then PCI-
based Alphas shouldn't be marooned by the move. X.org is still a no-
op on Alpha, but apparently there is a proposal to rip out the old
PCI cruft for 7.1 (cf. http://wiki.x.org/wiki/PciReworkProposal); I
hope NetBSD-Alpha is represented there.
There are three files to patch, and one of them is, squeamishly, <sys/
types.h>. Two simple #ifndef's bracket dev_t and key_t-- these must
be handled by xf86_libc.h, but we need all of pio.h-->bus.h-->types.h
and can't simply junk the #include. It would be nice to shove this
off onto xf86_libc.h but I couldn't figure out how (interestingly,
this here Darwin on OS X brackets #ifndef's around dev_t and key_t in
<sys/types.h>, too).
Download XFree86 4.6.0 from ftp.xfree86.org, apply the diffs, and do
'make World && make install'. Some card drivers may still have
compilation issues; I haven't tested them all, only the ones I use.
Please-- I'm not a programmer, just a scavenger, so no points for
style. "Works for me." I would love it if anyone could vet these
for propriety and come up with a better solution.
Finally, this is all pretty fresh. I haven't tested how robust it is
yet.
Thanks,
Dave
First, my xc/config/cf/host.def:
#define HasPerl YES /* optional, from pkgsrc; for some fonts */
#define DefaultGcc2AxpOpt -O2 -mcpu=ev56 -Wa,-m21164a /* modify to
match your CPU */
#define BuildXF86DRI NO /* :( */
#define BuildXF86DRIDriverSupport NO
#define XF86CardDrivers mga ati tga s3 s3virge vga /* modify to match
your card(s) */
#define DoLoadableServer NO /* This can now be YES for 4.6.0 on Alpha,
* I believe, opening the door for
* 'build.sh -x' to finally work (PR
29882)
*/
--- /usr/include/sys/types.h.orig 2006-05-14
04:08:59.000000000 -0700
+++ /usr/include/sys/types.h 2006-05-14 04:12:32.000000000 -0700
@@ -153,7 +153,10 @@
typedef int64_t daddr_t; /* disk address */
#endif
+#ifndef dev_t
typedef uint32_t dev_t; /* device number */
+#endif
+
typedef uint32_t fixpt_t; /* fixed point number */
#ifndef gid_t
@@ -163,7 +166,10 @@
typedef uint32_t id_t; /* group id, process
id or user id */
typedef uint64_t ino_t; /* inode number */
+
+#ifndef key_t
typedef long key_t; /* IPC key (for Sys V
IPC) */
+#endif
#ifndef mode_t
typedef __mode_t mode_t; /* permissions */
--- xc/programs/Xserver/hw/xfree86/loader/xf86sym.c.orig
2006-03-20 19:56:26.000000000 -0800
+++ xc/programs/Xserver/hw/xfree86/loader/xf86sym.c 2006-05-14
04:16:24.000000000 -0700
@@ -129,7 +129,7 @@
extern unsigned int _inl(unsigned short port);
# endif
-# ifdef __FreeBSD__
+#if defined (__FreeBSD__) || defined (__NetBSD__)
# include <sys/types.h>
extern void outb(u_int32_t port, u_int8_t val);
extern void outw(u_int32_t port, u_int16_t val);
--- alpha_video.c.orig 2006-01-09 07:00:19.000000000 -0800
+++ alpha_video.c 2006-05-14 04:21:47.000000000 -0700
@@ -706,22 +706,22 @@
return;
}
-void (*xf86WriteMmio8)(int Value, pointer Base, unsigned long Offset)
+void (*xf86WriteMmio8)(int Value, volatile void * Base, unsigned
long Offset)
= writeDense8;
-void (*xf86WriteMmio16)(int Value, pointer Base, unsigned long Offset)
+void (*xf86WriteMmio16)(int Value, volatile void * Base, unsigned
long Offset)
= writeDense16;
-void (*xf86WriteMmio32)(int Value, pointer Base, unsigned long Offset)
+void (*xf86WriteMmio32)(int Value, volatile void * Base, unsigned
long Offset)
= writeDense32;
-void (*xf86WriteMmioNB8)(int Value, pointer Base, unsigned long Offset)
+void (*xf86WriteMmioNB8)(int Value, volatile void * Base, unsigned
long Offset)
= writeDenseNB8;
-void (*xf86WriteMmioNB16)(int Value, pointer Base, unsigned long
Offset)
+void (*xf86WriteMmioNB16)(int Value, volatile void * Base, unsigned
long Offset)
= writeDenseNB16;
-void (*xf86WriteMmioNB32)(int Value, pointer Base, unsigned long
Offset)
+void (*xf86WriteMmioNB32)(int Value, volatile void * Base, unsigned
long Offset)
= writeDenseNB32;
-int (*xf86ReadMmio8)(pointer Base, unsigned long Offset)
+int (*xf86ReadMmio8)(volatile void * Base, unsigned long Offset)
= readDense8;
-int (*xf86ReadMmio16)(pointer Base, unsigned long Offset)
+int (*xf86ReadMmio16)(volatile void * Base, unsigned long Offset)
= readDense16;
-int (*xf86ReadMmio32)(pointer Base, unsigned long Offset)
+int (*xf86ReadMmio32)(volatile void * Base, unsigned long Offset)
= readDense32;
--Apple-Mail-6--349691333
Content-Transfer-Encoding: base64
Content-Type: application/x-gzip;
x-mac-type=54455854;
x-unix-mode=0644;
x-mac-creator=21526368;
name="Alpha_XFree6.4.0_log.gz"
Content-Disposition: attachment;
filename=Alpha_XFree6.4.0_log.gz
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
--Apple-Mail-6--349691333--