From: David Mosberger <davidm@hpl.hp.com>
To: linux-ia64@vger.kernel.org
Subject: [Linux-ia64] complete fixes for DRI/DRM
Date: Fri, 18 Aug 2000 07:33:09 +0000 [thread overview]
Message-ID: <marc-linux-ia64-105590678205354@msgid-missing> (raw)
The patch below is a superset of what I just sent to the
fixes@xfree86.org list. It include the config changes necessary to
get the GL/DRI/TDFX support built.
The way this config is setup, you'll get the DRI drivers built into
libGl instead of having them as separate modules. I didn't try
building them as modules, though I hope it would work just fine.
--david
diff -urN XFree86-4.0/xc/config/cf/host.def XFree86-4.0-lia/xc/config/cf/host.def
--- XFree86-4.0/xc/config/cf/host.def Thu Aug 17 22:07:39 2000
+++ XFree86-4.0-lia/xc/config/cf/host.def Tue Aug 8 15:48:55 2000
@@ -9,5 +9,5 @@
#define BuildPexExt YES
#define BuildHtmlManPages NO
#define MakeDllModules YES
-#define GlxStubLib YES
+#define GlxStubLib NO
#define UseInternalMalloc NO
diff -urN XFree86-4.0/xc/config/cf/linux.cf XFree86-4.0-lia/xc/config/cf/linux.cf
--- XFree86-4.0/xc/config/cf/linux.cf Thu Aug 17 22:07:38 2000
+++ XFree86-4.0-lia/xc/config/cf/linux.cf Wed Aug 9 02:52:03 2000
@@ -161,7 +161,7 @@
#ifndef XF86INT10_BUILD
# ifdef i386Architecture
# define XF86INT10_BUILD X86VM
-# elif defined(ia64Architecture)
+# elif 0/*defined(ia64Architecture)*/
# define UseX86Emu NO
# define XF86INT10_BUILD XF86INT10_STUB
# elif defined(X86EMU_LIBPATH)
@@ -172,7 +172,7 @@
/* The DRM module requires kernel services that appeared in late 2.1.x
kernels and are known to be present in 2.2.x kernels. */
#ifndef BuildXF86DRI
-# ifdef i386Architecture
+# if defined(i386Architecture) || defined(ia64Architecture)
# if OSMajorVersion > 2 || (OSMajorVersion = 2 && OSMinorVersion >= 2)
# define BuildXF86DRI YES
# else
@@ -189,7 +189,7 @@
kernel revisions. So, we'll only build the module for kernels that are
known to be supported by the module. */
#ifndef BuildXF86DRM
-# ifdef i386Architecture
+# if defined(i386Architecture) || defined(ia64Architecture)
# if OSMajorVersion = 2
/* Only tested for Linux 2.2.0 through 2.2.12 */
# if OSMinorVersion = 2 && OSTeenyVersion <= 12
@@ -199,8 +199,12 @@
# if OSMinorVersion = 3 && OSTeenyVersion <= 18
# define BuildXF86DRM YES
# else
- /* Note: add more conditions when 2.4.x and 2.5.x are released */
-# define BuildXF86DRM NO
+# if OSMinorVersion = 4
+# define BuildXF86DRM NO
+# else
+ /* Note: add more conditions when 2.5.x is released */
+# define BuildXF86DRM NO
+# endif
# endif
# endif
# else
@@ -213,7 +217,7 @@
#endif
#ifndef HasAgpGart
-# ifdef i386Architecture
+# if defined(i386Architecture) || defined(ia64Architecture)
/* The AGPGART header file is included in os-support/linux, which
allows all drivers that depend on AGP to build properly. */
# define HasAgpGart YES
diff -urN XFree86-4.0/xc/config/cf/xf86site.def XFree86-4.0-lia/xc/config/cf/xf86site.def
--- XFree86-4.0/xc/config/cf/xf86site.def Thu Aug 17 22:07:39 2000
+++ XFree86-4.0-lia/xc/config/cf/xf86site.def Wed Aug 9 02:52:50 2000
@@ -680,7 +680,7 @@
* If your system doesn't support vm86() mode and you have
* libx86emu set library path here
*
-#define X86EMU_LIBPATH /usr/local/lib
*/
+#define X86EMU_LIBPATH /usr/local/lib
diff -urN XFree86-4.0/xc/config/cf/xfree86.cf XFree86-4.0-lia/xc/config/cf/xfree86.cf
--- XFree86-4.0/xc/config/cf/xfree86.cf Thu Aug 17 22:07:38 2000
+++ XFree86-4.0-lia/xc/config/cf/xfree86.cf Tue Aug 8 15:38:05 2000
@@ -234,7 +234,7 @@
/* Pure PCI drivers should go first */
# ifndef XF86CardDrivers
-# define XF86CardDrivers mga vga
+# define XF86CardDrivers mga vga GlideDriver tdfx r128 AgpGartDrivers XF86ExtraCardDrivers
# endif
#endif
@@ -549,7 +549,7 @@
# define GlxBuiltInMesa NO
# endif
# ifndef GlxBuiltInTdfx
-# define GlxBuiltInTdfx NO
+# define GlxBuiltInTdfx YES
# endif
# if GlxBuiltInTdfx
diff -urN XFree86-4.0/xc/extras/Mesa/src/FX/fxddspan.c XFree86-4.0-lia/xc/extras/Mesa/src/FX/fxddspan.c
--- XFree86-4.0/xc/extras/Mesa/src/FX/fxddspan.c Thu Feb 17 09:11:31 2000
+++ XFree86-4.0-lia/xc/extras/Mesa/src/FX/fxddspan.c Fri Aug 11 00:16:03 2000
@@ -396,7 +396,7 @@
{
fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
GLuint i;
- GLint bottom=fxMesa->y_delta-1;
+ GLint bottom=fxMesa->height+fxMesa->y_offset-1;
if (MESA_VERBOSE&VERBOSE_DRIVER) {
fprintf(stderr,"fxmesa: fxDDReadRGBAPixels(...)\n");
diff -urN XFree86-4.0/xc/extras/x86emu/src/x86emu/makefile.lia64 XFree86-4.0-lia/xc/extras/x86emu/src/x86emu/makefile.lia64
--- XFree86-4.0/xc/extras/x86emu/src/x86emu/makefile.lia64 Wed Dec 31 16:00:00 1969
+++ XFree86-4.0-lia/xc/extras/x86emu/src/x86emu/makefile.lia64 Wed Aug 9 04:00:05 2000
@@ -0,0 +1,60 @@
+#############################################################################
+#
+# Realmode X86 Emulator Library
+#
+# Copyright (C) 1996-1999 SciTech Software, Inc.
+#
+# ====================================
+#
+# Permission to use, copy, modify, distribute, and sell this software and
+# its documentation for any purpose is hereby granted without fee,
+# provided that the above copyright notice appear in all copies and that
+# both that copyright notice and this permission notice appear in
+# supporting documentation, and that the name of the authors not be used
+# in advertising or publicity pertaining to distribution of the software
+# without specific, written prior permission. The authors makes no
+# representations about the suitability of this software for any purpose.
+# It is provided "as is" without express or implied warranty.
+#
+# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+#
+# ====================================
+#
+# Descripton: Linux specific makefile for the x86emu library.
+#
+#############################################################################
+
+TARGETLIB = libx86emu.a
+
+OBJS=\
+debug.o \
+decode.o \
+fpu.o \
+ops.o \
+ops2.o \
+prim_ops.o \
+sys.o
+
+$(TARGETLIB): $(OBJS)
+ ar rv $(TARGETLIB) $(OBJS)
+
+INCS = -I. -Ix86emu -I../../include
+CFLAGS = -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DDEBUG
+
+.c.o:
+ gcc -g -O2 -Wall -c $(CFLAGS) $(INCS) $*.c
+
+.cpp.o:
+ gcc -c $(CFLAGS) $(INCS) $*.cpp
+
+clean:
+ rm -f *.a *.o
+
+validate: validate.o libx86emu.a
+ gcc -o validate validate.o -lx86emu -L.
diff -urN XFree86-4.0/xc/lib/GL/Imakefile XFree86-4.0-lia/xc/lib/GL/Imakefile
--- XFree86-4.0/xc/lib/GL/Imakefile Fri Mar 3 20:37:25 2000
+++ XFree86-4.0-lia/xc/lib/GL/Imakefile Thu Aug 10 00:45:25 2000
@@ -79,11 +79,18 @@
TDFXPOBJS = mesa/src/drv/tdfx/profiled/?*.o
TDFXDONES = mesa/src/drv/tdfx/DONE
- MESAOBJS = mesa/src/?*.o mesa/src/X86/?*.o
- MESAUOBJS = mesa/src/unshared/?*.o mesa/src/X86/unshared/?*.o
- MESADOBJS = mesa/src/debugger/?*.o mesa/src/X86/debugger/?*.o
- MESAPOBJS = mesa/src/profiled/?*.o mesa/src/X86/profiled/?*.o
- MESADONES = mesa/src/DONE mesa/src/X86/DONE
+#ifdef i386Architecture
+ MESAOBJSARCH = mesa/src/X86/?*.o
+ MESAUOBJSARCH = mesa/src/X86/unshared/?*.o
+ MESADOBJSARCH = mesa/src/X86/debugger/?*.o
+ MESAPOBJSARCH = mesa/src/X86/profiled/?*.o
+ MESADONESARCH = mesa/src/X86/DONE
+#endif
+ MESAOBJS = mesa/src/?*.o $(MESAOBJSARCH)
+ MESAUOBJS = mesa/src/unshared/?*.o $(MESAUOBJSARCH)
+ MESADOBJS = mesa/src/debugger/?*.o $(MESADOBJSARCH)
+ MESAPOBJS = mesa/src/profiled/?*.o $(MESAPOBJSARCH)
+ MESADONES = mesa/src/DONE $(MESADONEARCH)
DRIMESAOBJS = mesa/dri/?*.o
DRIMESAUOBJS = mesa/dri/unshared/?*.o
@@ -97,7 +104,7 @@
DRVPOBJS = $(TDFXPOBJS) $(MESAPOBJS) $(DRIMESAPOBJS) $(DRMPOBJS)
DRVDONES = $(TDFXDONES) $(MESADONES) $(DRIMESADONES) $(DRMDONES)
- REQUIREDLIBS += -lglide3x
+ REQUIREDLIBS += -L/usr/local/lib -lglide3x
#elif GlxBuiltInMesa
#ifndef GlxDriverUsesMesa
DRVOBJS = mesa/src/?*.o mesa/src/X/?*.o
diff -urN XFree86-4.0/xc/lib/GL/dri/XF86dri.c XFree86-4.0-lia/xc/lib/GL/dri/XF86dri.c
--- XFree86-4.0/xc/lib/GL/dri/XF86dri.c Fri Feb 25 21:35:26 2000
+++ XFree86-4.0-lia/xc/lib/GL/dri/XF86dri.c Thu Aug 10 17:24:44 2000
@@ -427,7 +427,7 @@
_XEatData(dpy, rep.length);
return False;
}
- _XRead32(dpy, *pClipRects, rep.length);
+ _XRead(dpy, (char *) *pClipRects, rep.length);
} else {
*pClipRects = NULL;
}
@@ -466,7 +466,7 @@
*hFrameBuffer = rep.hFrameBufferLow;
#ifdef LONG64
- *hFrameBuffer = ((drmHandle)rep.hFrameBufferHigh) << 32;
+ *hFrameBuffer |= ((drmHandle)rep.hFrameBufferHigh) << 32;
#endif
*fbOrigin = rep.framebufferOrigin;
@@ -479,7 +479,7 @@
_XEatData(dpy, ((rep.length+3) & ~3));
return False;
}
- _XRead32(dpy, *pDevPrivate, rep.length);
+ _XRead(dpy, *pDevPrivate, rep.length);
} else {
*pDevPrivate = NULL;
}
diff -urN XFree86-4.0/xc/lib/GL/glx/packsingle.h XFree86-4.0-lia/xc/lib/GL/glx/packsingle.h
--- XFree86-4.0/xc/lib/GL/glx/packsingle.h Wed Feb 9 09:55:02 2000
+++ XFree86-4.0-lia/xc/lib/GL/glx/packsingle.h Thu Aug 10 16:27:07 2000
@@ -85,7 +85,7 @@
*((FLOAT32 *) (pc + offset)) = a
#else
-#define __GLX_SINGLE_PUT_SHORT(offset,a) \
+#define __GLX_SINGLE_PUT_SHORT(offset,a) \
{ GLubyte *cp = (pc+offset); \
int shift = (64-16) - ((int)(cp) >> (64-6)); \
*(int *)cp = (*(int *)cp & ~(0xffff << shift)) | ((a & 0xffff) << shift); }
diff -urN XFree86-4.0/xc/lib/GL/mesa/src/Imakefile XFree86-4.0-lia/xc/lib/GL/mesa/src/Imakefile
--- XFree86-4.0/xc/lib/GL/mesa/src/Imakefile Fri Mar 3 20:37:28 2000
+++ XFree86-4.0-lia/xc/lib/GL/mesa/src/Imakefile Tue Aug 8 14:44:06 2000
@@ -354,7 +354,9 @@
# We have to go into X to make the xmesaP.h symbolic link
MESASUBDIRS = X
+#ifdef i386Architecture
ASMSUBDIRS = X86
+#endif
#include <Library.tmpl>
@@ -374,8 +376,13 @@
#if !GlxUseBuiltInDRIDriver && !GlxDriverUsesMesa
LIBNAME = mesa_dri.so
-ALL_OBJS = $(CORE_OBJS) X/?*.o X86/?*.o
-ALL_DEPS = $(SUBDIRS) DONE X/DONE X86/DONE
+#ifdef i386Architecture
+ ALL_OBJS = $(CORE_OBJS) X/?*.o X86/?*.o
+ ALL_DEPS = $(SUBDIRS) DONE X/DONE X86/DONE
+#else
+ ALL_OBJS = $(CORE_OBJS) X/?*.o
+ ALL_DEPS = $(SUBDIRS) DONE X/DONE
+#endif
SharedDepModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS))
InstallDynamicModule($(LIBNAME),$(MODULEDIR)/dri,.)
diff -urN XFree86-4.0/xc/lib/Xxf86vm/XF86VMode.c XFree86-4.0-lia/xc/lib/Xxf86vm/XF86VMode.c
--- XFree86-4.0/xc/lib/Xxf86vm/XF86VMode.c Mon Jul 19 08:01:32 1999
+++ XFree86-4.0-lia/xc/lib/Xxf86vm/XF86VMode.c Wed Aug 9 16:15:22 2000
@@ -278,7 +278,7 @@
Xfree(modeline->private);
return False;
}
- _XRead32(dpy, modeline->private, rep.privsize * sizeof(INT32));
+ _XRead(dpy, (char *) modeline->private, rep.privsize * sizeof(INT32));
} else {
modeline->private = NULL;
}
@@ -354,7 +354,7 @@
for (i = 0; i < rep.modecount; i++) {
modelines[i] = mdinfptr++;
if (majorVersion < 2) {
- _XRead32(dpy, &oldxmdline, sizeof(xXF86OldVidModeModeInfo));
+ _XRead(dpy, (char *) &oldxmdline, sizeof(xXF86OldVidModeModeInfo));
modelines[i]->dotclock = oldxmdline.dotclock;
modelines[i]->hdisplay = oldxmdline.hdisplay;
modelines[i]->hsyncstart = oldxmdline.hsyncstart;
@@ -377,7 +377,7 @@
_XEatData(dpy, (oldxmdline.privsize) * sizeof(INT32));
Xfree(modelines[i]->private);
} else {
- _XRead32(dpy, modelines[i]->private,
+ _XRead(dpy, (char *) modelines[i]->private,
oldxmdline.privsize * sizeof(INT32));
}
} else {
@@ -385,7 +385,7 @@
}
}
} else {
- _XRead32(dpy, &xmdline, sizeof(xXF86VidModeModeInfo));
+ _XRead(dpy, (char *) &xmdline, sizeof(xXF86VidModeModeInfo));
modelines[i]->dotclock = xmdline.dotclock;
modelines[i]->hdisplay = xmdline.hdisplay;
modelines[i]->hsyncstart = xmdline.hsyncstart;
@@ -408,7 +408,7 @@
_XEatData(dpy, (xmdline.privsize) * sizeof(INT32));
Xfree(modelines[i]->private);
} else {
- _XRead32(dpy, modelines[i]->private,
+ _XRead(dpy, (char *) modelines[i]->private,
xmdline.privsize * sizeof(INT32));
}
} else {
@@ -962,12 +962,12 @@
return False;
}
for (i = 0; i < rep.nhsync; i++) {
- _XRead32(dpy, (long *)&syncrange, 4);
+ _XRead(dpy, (char *)&syncrange, 4);
monitor->hsync[i].lo = (float)(syncrange & 0xFFFF) / 100.0;
monitor->hsync[i].hi = (float)(syncrange >> 16) / 100.0;
}
for (i = 0; i < rep.nvsync; i++) {
- _XRead32(dpy, (long *)&syncrange, 4);
+ _XRead(dpy, (char *)&syncrange, 4);
monitor->vsync[i].lo = (float)(syncrange & 0xFFFF) / 100.0;
monitor->vsync[i].hi = (float)(syncrange >> 16) / 100.0;
}
@@ -1100,7 +1100,7 @@
}
for (i = 0; i < rep.clocks; i++) {
- _XRead32(dpy, &dotclk, 4);
+ _XRead(dpy, (char *) &dotclk, 4);
dotclocks[i] = dotclk;
}
*clocksPtr = dotclocks;
diff -urN XFree86-4.0/xc/programs/Xserver/GL/mesa/src/X/xf86glx.c XFree86-4.0-lia/xc/programs/Xserver/GL/mesa/src/X/xf86glx.c
--- XFree86-4.0/xc/programs/Xserver/GL/mesa/src/X/xf86glx.c Thu Aug 17 22:07:38 2000
+++ XFree86-4.0-lia/xc/programs/Xserver/GL/mesa/src/X/xf86glx.c Tue Aug 8 22:52:59 2000
@@ -62,6 +62,9 @@
#include <GL/internal/glcore.h>
#endif
+/* Avoid cyclic dependency between libglx and libGLcore due
+ to this symbol and glDDXExtensionInfo. --davidm 00/08/08 */
+__GLXcontext *__glXLastContext;
/*
* This structure is statically allocated in the __glXScreens[]
diff -urN XFree86-4.0/xc/programs/Xserver/hw/xfree86/common/compiler.h XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/common/compiler.h
--- XFree86-4.0/xc/programs/Xserver/hw/xfree86/common/compiler.h Thu Aug 17 22:07:38 2000
+++ XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/common/compiler.h Wed Aug 9 00:25:22 2000
@@ -365,14 +365,65 @@
#elif defined(linux) && defined(__ia64__)
-#define inline __inline__
-
-#include <stdlib.h>
-#include <asm/types.h>
-#include <asm/system.h>
+#if 0
+/* Geez, bogus stuff!! Must never include kernel headers in
+ applications... */
+# include <stdlib.h>
+# include <asm/types.h>
+# include <asm/system.h>
+# include <asm/unaligned.h>
+#endif
+
+#include <inttypes.h>
+
#include <sys/io.h>
-#include <asm/unaligned.h>
+struct __una_u64 { uint64_t x __attribute__((packed)); };
+struct __una_u32 { uint32_t x __attribute__((packed)); };
+struct __una_u16 { uint16_t x __attribute__((packed)); };
+
+extern __inline__ unsigned long
+__uldq (const unsigned long * r11)
+{
+ const struct __una_u64 *ptr = (const struct __una_u64 *) r11;
+ return ptr->x;
+}
+
+extern __inline__ unsigned long
+__uldl (const unsigned int * r11)
+{
+ const struct __una_u32 *ptr = (const struct __una_u32 *) r11;
+ return ptr->x;
+}
+
+extern __inline__ unsigned long
+__uldw (const unsigned short * r11)
+{
+ const struct __una_u16 *ptr = (const struct __una_u16 *) r11;
+ return ptr->x;
+}
+
+extern __inline__ void
+__ustq (unsigned long r5, unsigned long * r11)
+{
+ struct __una_u64 *ptr = (struct __una_u64 *) r11;
+ ptr->x = r5;
+}
+
+extern __inline__ void
+__ustl (unsigned long r5, unsigned int * r11)
+{
+ struct __una_u32 *ptr = (struct __una_u32 *) r11;
+ ptr->x = r5;
+}
+
+extern __inline__ void
+__ustw (unsigned long r5, unsigned short * r11)
+{
+ struct __una_u16 *ptr = (struct __una_u16 *) r11;
+ ptr->x = r5;
+}
+
#define ldq_u(p) __uldq(p)
#define ldl_u(p) __uldl(p)
#define ldw_u(p) __uldw(p)
diff -urN XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile
--- XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile Thu Aug 17 22:07:38 2000
+++ XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile Wed Aug 9 00:08:39 2000
@@ -44,7 +44,7 @@
PCIDRVRSRC = freebsdPci.c
PCIDRVROBJ = freebsdPci.o
-#elif defined(i386Architecture) || defined(ia64Architecture)
+#elif defined(i386Architecture)
XCOMM ix86 PCI driver
@@ -52,6 +52,15 @@
PCIDRVROBJ = ix86Pci.o
XCOMM PCIDRVRSRC = linuxPci.c
XCOMM PCIDRVROBJ = linuxPci.o
+
+#elif defined(ia64Architecture)
+
+XCOMM Not a typo, just a misnomer. For Linux/ia64 provides the same
+XCOMM PCI config read/write syscalls as Linux/alpha, so why not use
+XCOMM them?
+
+PCIDRVRSRC = axpPci.c
+PCIDRVROBJ = axpPci.o
#else
XCOMM no PCI driver -- shouldn't get here
diff -urN XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.h XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.h
--- XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.h Sat Feb 12 23:53:02 2000
+++ XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.h Wed Aug 9 01:58:54 2000
@@ -85,7 +85,7 @@
*/
#define MAX_PCI_DEVICES 64 /* Max number of devices accomodated */
/* by xf86scanpci */
-#define MAX_PCI_BUSES 32 /* Max number of PCI buses */
+#define MAX_PCI_BUSES 256 /* Max number of PCI buses */
#define PCI_NOT_FOUND 0xffffffff
@@ -106,6 +106,7 @@
* Debug Macros/Definitions
*/
/* #define DEBUGPCI 2 */ /* Disable/enable trace in PCI code */
+#define ErrorF printf
#if defined(DEBUGPCI)
@@ -146,7 +147,7 @@
# endif
#elif defined(__sparc__) && defined(linux)
# define ARCH_PCI_INIT sparcPciInit
-#elif defined(__alpha__) && defined(linux)
+#elif (defined(__alpha__) || defined(__ia64__)) && defined(linux)
# define ARCH_PCI_INIT axpPciInit
# define INCLUDE_XF86_MAP_PCI_MEM
#elif defined(__alpha__) && defined(__FreeBSD__)
diff -urN XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/bus/axpPci.c XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/bus/axpPci.c
--- XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/bus/axpPci.c Sun Dec 5 19:07:39 1999
+++ XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/bus/axpPci.c Wed Aug 9 01:53:06 2000
@@ -61,6 +61,7 @@
void axpPciCfgWrite(PCITAG, int off, CARD32 val);
void axpPciCfgSetBits(PCITAG tag, int off, CARD32 mask, CARD32 bits);
+#if 0
pciBusInfo_t axpPci0 = {
/* configMech */ PCI_CFG_MECH_OTHER,
/* numDevices */ 32,
@@ -77,12 +78,32 @@
},
/* pciBusPriv */ NULL
};
+#else
+pciBusInfo_t axpPci[MAX_PCI_BUSES];
+#endif
void
axpPciInit()
{
+#if 0
pciNumBuses = 1;
pciBusInfo[0] = &axpPci0;
+#else
+ int i;
+
+ pciNumBuses = MAX_PCI_BUSES;
+ memset(&axpPci, 0, sizeof(axpPci));
+ for (i = 0; i < MAX_PCI_BUSES; ++i) {
+ axpPci[i].configMech = PCI_CFG_MECH_OTHER;
+ axpPci[i].numDevices = 32;
+ axpPci[i].funcs.pciReadLong = axpPciCfgRead;
+ axpPci[i].funcs.pciWriteLong = axpPciCfgWrite;
+ axpPci[i].funcs.pciSetBitsLong = axpPciCfgSetBits;
+ axpPci[i].funcs.pciAddrHostToBus = pciAddrNOOP;
+ axpPci[i].funcs.pciAddrBusToHost = pciAddrNOOP;
+ pciBusInfo[i] = axpPci + i;
+ }
+#endif
pciFindFirstFP = pciGenFindFirst;
pciFindNextFP = pciGenFindNext;
}
diff -urN XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c
--- XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c Fri Feb 25 21:43:53 2000
+++ XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c Thu Aug 10 15:55:13 2000
@@ -497,7 +497,15 @@
drmSize size,
drmAddressPtr address)
{
+ static unsigned long pagesize_mask = 0;
+
if (fd < 0) return -EINVAL;
+
+ if (!pagesize_mask)
+ pagesize_mask = getpagesize() - 1;
+
+ size = (size + pagesize_mask) & ~pagesize_mask;
+
*address = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, handle);
if (*address = MAP_FAILED) return -errno;
return 0;
diff -urN XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c
--- XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c Thu Aug 17 22:07:38 2000
+++ XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c Wed Aug 9 00:15:57 2000
@@ -143,7 +143,9 @@
/* For xf86getpagesize() */
#if defined(linux)
+#if 0
#include <asm/page.h>
+#endif
#define HAS_SC_PAGESIZE
#define HAS_GETPAGESIZE
#elif defined(CSRG_BASED)
diff -urN XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h
--- XFree86-4.0/xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h Fri Feb 25 21:43:46 2000
+++ XFree86-4.0-lia/xc/programs/Xserver/hw/xfree86/os-support/xf86drm.h Thu Aug 10 18:32:35 2000
@@ -179,7 +179,8 @@
#define DRM_LOCK_HELD 0x80000000 /* Hardware lock is held */
#define DRM_LOCK_CONT 0x40000000 /* Hardware lock is contended */
-#if __GNUC__ >= 2 && defined(__i386)
+#if __GNUC__ >= 2
+# if defined(__i386)
/* Reflect changes here to drmP.h */
#define DRM_CAS(lock,old,new,__ret) \
do { \
@@ -193,10 +194,40 @@
: "2" (old), \
"r" (new)); \
} while (0)
+
+# elif defined (__ia64__)
+
+#if 0
+/* this currently generates bad code (missing stop bits)... */
+#include <ia64intrin.h>
+
+#define DRM_CAS(lock,old,new,__ret) \
+ do { \
+ __ret = (__sync_val_compare_and_swap(&__drm_dummy_lock(lock), \
+ (old), (new)) \
+ != (old)); \
+ } while (0)
+
+#else
+#define DRM_CAS(lock,old,new,__ret) \
+ do { \
+ unsigned int __result, __old = (old); \
+ __asm__ __volatile__( \
+ "mf\n" \
+ "mov ar.ccv=%2\n" \
+ ";;\n" \
+ "cmpxchg4.acq %0=%1,%3,ar.ccv" \
+ : "=r" (__result), "=m" (__drm_dummy_lock(lock)) \
+ : "r" (__old), "r" (new) \
+ : "memory"); \
+ __ret = (__result) != (__old); \
+ } while (0)
#endif
+# endif /* __ia64__ */
+#endif /* __GNUC__ >= 2 */
#ifndef DRM_CAS
-#define DRM_CAS(lock,old,new,ret) /* FAST LOCK FAILS */
+#define DRM_CAS(lock,old,new,ret) /* FAST LOCK FAILS */ THIS IS BROKEN!!!
#endif
#define DRM_LIGHT_LOCK(fd,lock,context) \
reply other threads:[~2000-08-18 7:33 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=marc-linux-ia64-105590678205354@msgid-missing \
--to=davidm@hpl.hp.com \
--cc=linux-ia64@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.