Index: x11/Xserver/GL/dri/Makefile
===================================================================
RCS file: /cvsroot/src/x11/Xserver/GL/dri/Makefile,v
retrieving revision 1.1
diff -u -r1.1 Makefile
--- x11/Xserver/GL/dri/Makefile	6 Mar 2004 10:30:26 -0000	1.1
+++ x11/Xserver/GL/dri/Makefile	26 Jul 2004 14:22:37 -0000
@@ -32,6 +32,6 @@
 #     subdirs install libxxx_dri.so.n.n however the final file installed
 #     needs to be xxx_dri.so, since our .mk magic can't do this I've been
 #     doing it by hand until I get enthusiastic about fixing it.
-SUBDIR=	mga_dri radeon_dri
+SUBDIR=	mga_dri radeon_dri r200_dri
 
 .include <bsd.subdir.mk>
Index: x11/Xserver/hw/xfree86/drm/Makefile
===================================================================
RCS file: /cvsroot/src/x11/Xserver/hw/xfree86/drm/Makefile,v
retrieving revision 1.1
diff -u -r1.1 Makefile
--- x11/Xserver/hw/xfree86/drm/Makefile	6 Mar 2004 11:36:05 -0000	1.1
+++ x11/Xserver/hw/xfree86/drm/Makefile	26 Jul 2004 14:22:38 -0000
@@ -28,6 +28,6 @@
 LIBDIR=	${XMODULEDIR}
 .include <bsd.lib.mk>
 
-SUBDIR=	mga #radeon
+SUBDIR=	mga radeon
 
 .include <bsd.subdir.mk>
Index: x11/Xserver/hw/xfree86/drm/radeon/Makefile
===================================================================
RCS file: /cvsroot/src/x11/Xserver/hw/xfree86/drm/radeon/Makefile,v
retrieving revision 1.1
diff -u -r1.1 Makefile
--- x11/Xserver/hw/xfree86/drm/radeon/Makefile	6 Mar 2004 11:44:41 -0000	1.1
+++ x11/Xserver/hw/xfree86/drm/radeon/Makefile	26 Jul 2004 14:22:38 -0000
@@ -15,7 +15,8 @@
 
 opt_drm.h:
 	echo > opt_drm.h
-	echo "#define DRM_DEBUG 1" >> opt_drm.h
+# This is slightly too verbose!
+#	echo "#define DRM_DEBUG 1" >> opt_drm.h
 	echo "#define DRM_LINUX 1" >> opt_drm.h
 
 CPPFLAGS+=	-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel \
Index: x11/lib/GL/Makefile
===================================================================
RCS file: /cvsroot/src/x11/lib/GL/Makefile,v
retrieving revision 1.6
diff -u -r1.6 Makefile
--- x11/lib/GL/Makefile	5 Apr 2004 12:01:42 -0000	1.6
+++ x11/lib/GL/Makefile	26 Jul 2004 14:22:38 -0000
@@ -1,5 +1,7 @@
 #	$NetBSD: Makefile,v 1.6 2004/04/05 12:01:42 lukem Exp $
 
+NOLINT=		1	# Doesn't like extras/Mesa/src/math/m_xform.h
+
 .include <bsd.own.mk>
 
 LIB=		GL
@@ -15,10 +17,10 @@
 .PATH:	${X11SRCDIR.xc}/extras/Mesa/src
 SRCS.glx+=	glapi.c
 
-.if ${MACHINE} == "i386"
+.if ${MACHINE} == "noti386" # Duplicate symbols with no x86 asm.
 .PATH:		${X11SRCDIR.xc}/extras/Mesa/src/X86
 SRCS.glx+=	glapi_x86.S
 CPPFLAGS+=	-DUSE_X86_ASM -I${X11SRCDIR.xc}/extras/Mesa/src/X86
Index: x11/lib/OSmesa/Makefile
===================================================================
RCS file: /cvsroot/src/x11/lib/OSmesa/Makefile,v
retrieving revision 1.12
diff -u -r1.12 Makefile
--- x11/lib/OSmesa/Makefile	13 May 2004 22:32:47 -0000	1.12
+++ x11/lib/OSmesa/Makefile	26 Jul 2004 14:22:38 -0000
@@ -71,7 +71,7 @@
 # XXX removed in xf44 if not found to be needed remove by > xf44
 # 3dnow_vertex.S, sse_vertex.S, x86_vertex.S
 
-CPPFLAGS+=	-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM
+#CPPFLAGS+=	-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM
 COMPILE.S=	${COMPILE.s}		# XXX don't want -traditional-cpp
 AFLAGS+=	-DUSE_GAS -I. -I${X11SRCDIR.xc}/extras/Mesa/src/X86
 .endif
--- /dev/null	2004-07-26 17:02:46.000000000 +0100
+++ x11/Xserver/GL/dri/r200_dri/Makefile	2004-07-25 18:04:24.000000000 +0100
@@ -0,0 +1,133 @@
+#	$NetBSD$
+
+XMODULEDIR=	${X11USRLIBDIR}/modules
+
+NOLINT=	1
+
+.include <bsd.own.mk>
+
+LIB=	r200_dri
+
+# dri
+.PATH:		${X11SRCDIR.xc}/lib/GL/dri
+SRCS.dri=	dri_util.c
+CPPFLAGS.dri_util.c=	-I${DESTDIR}${X11INCDIR}/X11 \
+			-I${DESTDIR}${X11INCDIR}/X11/extensions \
+			-I${X11SRCDIR.xc}/include/GL \
+			-I${X11SRCDIR.xc}/programs/Xserver/include \
+			-I${X11SRCDIR.xc}/programs/Xserver/GL/dri \
+			-I${X11SRCDIR.xc}/lib/GL/include \
+			-I${X11SRCDIR.xc}/extras/Mesa/include \
+			-I${X11SRCDIR.xc}/extras/Mesa/src \
+			-I${X11SRCDIR.xc}/lib/GL/glx \
+			-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/os-support
+CPPFLAGS.dri_util.c+=	-DDEFAULT_DRIVER_DIR=\"${X11USRLIBDIR}/modules\"
+
+
+# drm
+.PATH:		${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/os-support/linux/drm
+SRCS.drm=	xf86drm.c xf86drmHash.c xf86drmRandom.c xf86drmSL.c
+.for fn in ${SRCS.drm}
+CPPFLAGS.${fn}=	-I${DESTDIR}${X11INCDIR}/X11 \
+		-I${DESTDIR}${X11INCDIR}/X11/extensions \
+		-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/os-support \
+		-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/os-support/shared/drm/kernel
+#		-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/os-support/bsd/drm
+.endfor
+
+
+# mesa
+.PATH:		${X11SRCDIR.xc}/extras/Mesa/src
+SRCS.mesa=	accum.c api_arrayelt.c api_eval.c api_loopback.c \
+		api_noop.c api_validate.c attrib.c blend.c buffers.c \
+		clip.c colortab.c context.c convolve.c debug.c depth.c \
+		dispatch.c dlist.c drawpix.c enable.c enums.c \
+		eval.c extensions.c feedback.c fog.c get.c \
+		glthread.c hash.c hint.c histogram.c image.c \
+		imports.c light.c lines.c matrix.c mmath.c pixel.c \
+		points.c polygon.c rastpos.c state.c stencil.c \
+		texcompress.c texformat.c teximage.c texobj.c texstate.c \
+		texstore.c texutil.c varray.c vtxfmt.c vpexec.c \
+		vpparse.c  vpstate.c
+.for fn in ${SRCS.mesa}
+CPPFLAGS.${fn}=	-I${X11SRCDIR.xc}/extras/Mesa/src/array_cache \
+		-I${X11SRCDIR.xc}/extras/Mesa/src/math \
+		-I${X11SRCDIR.xc}/extras/Mesa/src/swrast \
+		-I${X11SRCDIR.xc}/extras/Mesa/src/swrast_setup \
+		-I${X11SRCDIR.xc}/extras/Mesa/src/tnl \
+		-I${X11SRCDIR.xc}/extras/Mesa/src/tnl_dd \
+		-I${X11SRCDIR.xc}/lib/GL/include \
+		-I${X11SRCDIR.xc}/extras/Mesa/src \
+		-I${X11SRCDIR.xc}/include
+.endfor
+
+# XXX MESA_ASM_OBJS
+
+.include <bsd.endian.mk>
+
+.if ${TARGET_ENDIANNESS} == "1234"
+X_BYTE_ORDER=X_LITTLE_ENDIAN
+.elif ${TARGET_ENDIANNESS} == "4321"
+X_BYTE_ORDER=X_BIG_ENDIAN
+.else
+X_BYTE_ORDER=0
+.endif
+
+# common
+.PATH:		${X11SRCDIR.xc}/lib/GL/mesa/src/drv/common
+SRCS.common=	hwlog.c mm.c utils.c vblank.c texmem.c
+.for fn in ${SRCS.common}
+CPPFLAGS.${fn}=	-I${X11SRCDIR.xc}/lib/GL/dri \
+		-I${X11SRCDIR.xc}/lib/GL/glx \
+		-I${X11SRCDIR.xc}/include/GL \
+		-I${X11SRCDIR.xc}/include \
+		-I${X11SRCDIR.xc}/programs/Xserver/GL/dri \
+		-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/os-support \
+		-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/common \
+		-I${X11SRCDIR.xc}/lib/GL/dri/drm \
+		-I${X11SRCDIR.xc}/lib/GL/include \
+		-I${X11SRCDIR.xc}/extras/Mesa/src
+CPPFLAGS.${fn}+=-DX_BYTE_ORDER=${X_BYTE_ORDER}
+.endfor
+
+# XXX currently i386 specific
+# r200
+.PATH:		${X11SRCDIR.xc}/lib/GL/mesa/src/drv/r200
+SRCS.r200=	r200_cmdbuf.c r200_context.c r200_ioctl.c r200_lock.c \
+		r200_maos.c \
+		r200_pixel.c r200_sanity.c r200_screen.c r200_span.c \
+		r200_state.c r200_state_init.c r200_swtcl.c r200_tcl.c \
+		r200_tex.c r200_texmem.c r200_texstate.c r200_vtxfmt.c \
+		r200_vtxfmt_c.c r200_vtxfmt_sse.c r200_vtxfmt_x86.c
+
+.for fn in ${SRCS.r200}
+CPPFLAGS.${fn}= -I${DESTDIR}${X11INCDIR}/X11 \
+		-I${X11SRCDIR.xc}/include/extensions
+CPPFLAGS.${fn}+=-I${X11SRCDIR.xc}/extras/Mesa/src \
+		-I${X11SRCDIR.xc}/lib/GL/mesa/src/drv/common \
+		-I${X11SRCDIR.xc}/lib/GL/mesa/src/drv/r200 \
+		-I${X11SRCDIR.xc}/lib/GL/dri \
+		-I${X11SRCDIR.xc}/lib/GL/glx \
+		-I${X11SRCDIR.xc}/include \
+		-I${X11SRCDIR.xc}/include/GL \
+		-I${X11SRCDIR.xc}/programs/Xserver/GL/dri \
+		-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/os-support \
+		-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/drivers/ati \
+		-I${X11SRCDIR.xc}/programs/Xserver/hw/xfree86/common \
+		-I${X11SRCDIR.xc}/lib/GL/dri/drm \
+		-I${X11SRCDIR.xc}/lib/GL/include \
+		-I${X11SRCDIR.xc}
+CPPFLAGS.${fn}+=-DX_BYTE_ORDER=${X_BYTE_ORDER}
+.endfor
+
+
+SRCS=	${SRCS.dri} ${SRCS.drm} ${SRCS.mesa} ${SRCS.common} ${SRCS.r200}
+
+CPPFLAGS+=	${X11FLAGS.DRI} ${X11FLAGS.EXTENSION} ${X11FLAGS.THREADLIB} # -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM
+
+LDADD=	-lm
+DPADD=	${LIBM}
+
+.include <bsd.x11.mk>
+LIBDIR=	${XMODULEDIR}
+.include <bsd.lib.mk>
--- /dev/null	2004-07-26 17:02:52.000000000 +0100
+++ x11/Xserver/GL/dri/r200_dri/shlib_version	2004-03-06 10:30:26.000000000 +0000
@@ -0,0 +1,4 @@
+#	$NetBSD$
+#
+major=1
+minor=0
Index: xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/ati_pcigart.h
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/ati_pcigart.h,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 ati_pcigart.h
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/ati_pcigart.h	5 Mar 2004 14:29:17 -0000	1.1.1.3
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/ati_pcigart.h	26 Jul 2004 14:18:50 -0000
@@ -58,8 +58,14 @@
 		goto done;
 	}
 
+#ifdef __FreeBSD__
 	address = (long)contigmalloc((1 << ATI_PCIGART_TABLE_ORDER) * PAGE_SIZE, 
 	    DRM(M_DRM), M_NOWAIT, 0ul, 0xfffffffful, PAGE_SIZE, 0);
+/* XXX: bus_dmamem_alloc */
+#elif defined __NetBSD__
+	(void *)address = malloc((1 << ATI_PCIGART_TABLE_ORDER) * PAGE_SIZE, 
+	    DRM(M_DRM), M_NOWAIT);
+#endif
 	if ( !address ) {
 		DRM_ERROR( "cannot allocate PCI GART page!\n" );
 		goto done;
@@ -109,6 +115,8 @@
 
 #if __FreeBSD_version > 500000
 	contigfree( (void *)addr, (1 << ATI_PCIGART_TABLE_ORDER) * PAGE_SIZE, DRM(M_DRM));	/* Not available on 4.x */
+#elif defined __NetBSD__
+	free( (void *)addr, DRM(M_DRM));
 #endif
 	return 1;
 }
Index: xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drmP.h
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drmP.h,v
retrieving revision 1.2
diff -u -r1.2 drmP.h
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drmP.h	6 Mar 2004 11:24:28 -0000	1.2
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drmP.h	26 Jul 2004 14:18:50 -0000
@@ -308,18 +308,14 @@
 } drm_vbl_sig_t;
 
 struct drm_device {
-#ifdef __NetBSD__
-	struct device	  device;	/* NetBSD's softc is an extension of struct device */
-
-	DRM_SPINTYPE	dev_lock;
-	DRM_SPINTYPE	dma_lock;
-#endif
 	const char	  *name;	/* Simple driver name		   */
 	char		  *unique;	/* Unique identifier: e.g., busid  */
 	int		  unique_len;	/* Length of unique field	   */
 #ifdef __FreeBSD__
 	device_t	  device;	/* Device instance from newbus     */
-#endif
+#elif defined __NetBSD__
+	struct device	  device;	/* NetBSD's softc is an extension of struct device */
+#endif /* __NetBSD__ */
 	dev_t		  devnode;	/* Device number for mknod	   */
 	int		  if_version;	/* Highest interface version set */
 
@@ -331,9 +327,17 @@
 	struct mtx	  dma_lock;	/* protects dev->dma */
 #endif
 #if __HAVE_IRQ
-	struct mtx	  irq_lock; /* protects irq condition checks */
+	struct mtx	  irq_lock;	/* protects irq condition checks */
 #endif
 	struct mtx	  dev_lock;	/* protects everything else */
+#elif defined(__NetBSD__)
+#if __HAVE_DMA
+	DRM_SPINTYPE	  dma_lock;	/* protects dev->dma */
+#endif
+#if __HAVE_IRQ
+	struct simplelock irq_lock;	/* protects irq condition checks */
+#endif
+	DRM_SPINTYPE	  dev_lock;	/* protects everything else */
 #endif
 				/* Usage Counters */
 	int		  open_count;	/* Outstanding files open	   */
Index: xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_bufs.h
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_bufs.h,v
retrieving revision 1.2
diff -u -r1.2 drm_bufs.h
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_bufs.h	6 Mar 2004 10:45:43 -0000	1.2
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_bufs.h	26 Jul 2004 14:18:50 -0000
@@ -262,7 +262,7 @@
 #if __HAVE_PCI_DMA
 	if (entry->seg_count) {
 		for (i = 0; i < entry->seg_count; i++) {
-			if (entry->seglist[i] != NULL)
+			if ((vm_offset_t *)entry->seglist[i] != NULL)
 				DRM(pci_free)(dev, entry->buf_size,
 				    (void *)entry->seglist[i],
 				    entry->seglist_bus[i]);
@@ -482,7 +482,7 @@
 	while ( entry->buf_count < count ) {
 		vaddr = (vm_offset_t) DRM(pci_alloc)(dev, size, alignment,
 		    0xfffffffful, &bus_addr);
-		if (vaddr == NULL) {
+		if ((vm_offset_t *)vaddr == NULL) {
 			/* Set count correctly so we free the proper amount. */
 			entry->buf_count = count;
 			entry->seg_count = count;
Index: xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_dma.h
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_dma.h,v
retrieving revision 1.2
diff -u -r1.2 drm_dma.h
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_dma.h	6 Mar 2004 11:18:14 -0000	1.2
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_dma.h	26 Jul 2004 14:18:50 -0000
@@ -74,7 +74,7 @@
 				  dma->bufs[i].buf_count,
 				  dma->bufs[i].seg_count);
 			for (j = 0; j < dma->bufs[i].seg_count; j++) {
-				if (dma->bufs[i].seglist[j] != NULL)
+				if ((vm_offset_t *)dma->bufs[i].seglist[j] != NULL)
 					DRM(pci_free)(dev, dma->bufs[i].buf_size,
 					    (void *)dma->bufs[i].seglist[j],
 					    dma->bufs[i].seglist_bus[j]);
Index: xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_ioctl.h
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_ioctl.h,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 drm_ioctl.h
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_ioctl.h	5 Mar 2004 14:29:17 -0000	1.1.1.3
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_ioctl.h	26 Jul 2004 14:18:50 -0000
@@ -87,6 +87,7 @@
 	/* Return error if the busid submitted doesn't match the device's actual
 	 * busid.
 	 */
+#ifndef __NetBSD__ /* XXX: No sscanf in the kernel */
 	ret = sscanf(dev->unique, "PCI:%d:%d:%d", &bus, &slot, &func);
 	if (ret != 3)
 		return DRM_ERR(EINVAL);
@@ -98,7 +99,7 @@
 	    (slot != dev->pci_slot) ||
 	    (func != dev->pci_func))
 		return DRM_ERR(EINVAL);
-
+#endif
 	return 0;
 }
 
Index: xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_os_netbsd.h
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_os_netbsd.h,v
retrieving revision 1.2
diff -u -r1.2 drm_os_netbsd.h
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_os_netbsd.h	6 Mar 2004 11:27:47 -0000	1.2
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_os_netbsd.h	26 Jul 2004 14:18:50 -0000
@@ -62,13 +62,13 @@
 #include <machine/sysarch.h>
 #include <machine/mtrr.h>
 
-#include <dev/pci/pcireg.h>
+#include <dev/pci/pcidevs.h>
 #include <dev/pci/pcivar.h>
  
 #define __REALLY_HAVE_AGP	__HAVE_AGP
 
 #define __REALLY_HAVE_MTRR	1
-#define __REALLY_HAVE_SG	0
+#define __REALLY_HAVE_SG	(__HAVE_SG)
 
 #if __REALLY_HAVE_AGP
 #include <dev/pci/agpvar.h>
@@ -105,6 +105,7 @@
 #define DRM_SPINUNINIT(l)
 #define DRM_SPINLOCK(l)		simple_lock(l)
 #define DRM_SPINUNLOCK(u)	simple_unlock(u)
+#define DRM_SPINLOCK_ASSERT(l)
 #define DRM_CURRENTPID		curproc->p_pid
 
 /* Currently our DRMFILE (filp) is a void * which is actually the pid
@@ -211,14 +212,15 @@
 /* FIXME: can't find equivalent functionality for nocheck yet.
  * It'll be slower than linux, but should be correct.
  */
-#define DRM_VERIFYAREA_READ( uaddr, size )		\
-	(!uvm_useracc((caddr_t)uaddr, size, VM_PROT_READ))
+#define DRM_VERIFYAREA_READ( uaddr, size )	(0)
 #define DRM_COPY_FROM_USER_UNCHECKED(arg1, arg2, arg3) 	\
 	copyin(arg2, arg1, arg3)
 #define DRM_COPY_TO_USER_UNCHECKED(arg1, arg2, arg3)	\
 	copyout(arg2, arg1, arg3)
 #define DRM_GET_USER_UNCHECKED(val, uaddr)			\
 	((val) = fuword(uaddr), 0)
+#define	DRM_PUT_USER_UNCHECKED(uaddr, val)			\
+	suword(uaddr, val)
 
 /* DRM_READMEMORYBARRIER() prevents reordering of reads.
  * DRM_WRITEMEMORYBARRIER() prevents reordering of writes.
Index: xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_pci.h
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_pci.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 drm_pci.h
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_pci.h	5 Mar 2004 14:29:17 -0000	1.1.1.1
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_pci.h	26 Jul 2004 14:18:50 -0000
@@ -44,9 +44,13 @@
 {
 	void *vaddr;
 
+#ifdef __FreeBSD__
 	vaddr = contigmalloc(size, DRM(M_DRM), M_NOWAIT, 0ul, maxaddr, align,
 	    0);
-	*busaddr = vtophys(vaddr);
+#elif defined __NetBSD__ /* XXX: bus_dmamem_alloc */
+	vaddr = malloc(size, DRM(M_DRM), M_NOWAIT);
+#endif
+	*busaddr = vtophys((vaddr_t)vaddr);
 	
 	return vaddr;
 }
