public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
From: David Mosberger <davidm@hpl.hp.com>
To: linux-ia64@vger.kernel.org
Subject: [Linux-ia64] Glide patches for IA-64
Date: Tue, 15 Aug 2000 07:22:24 +0000	[thread overview]
Message-ID: <marc-linux-ia64-105590678205327@msgid-missing> (raw)

As promised, here is the patch necessary to make Glide_V3 work on
IA-64 Linux.  I tested this with an AGP Vodoo 3 1000, though it should
work with other cards, too.  The patch is relative to
Glide_V3-DRI-3.10-6.src.rpm available from 3dfx (sorry, I didn't
bother checking out the CVS tree at sourceforge).

Caveat: the patch below may break backwards compatibility with 16-bit
platforms.  If anyone still cares about building on such a platform,
you may want to scan the patch below for uses of "int" and use
FxI32/FxU32 instead.

To develop this patch, my approach was to first build Glide using the
"standlone" mode.  I got a bunch of test programs to work that way
(test00, test01, etc. up to about test08) and then I realized that
something was seriously wrong with the buffer allocation code (beyond
64-bit problems), so I didn't bother to push it any further and
switched to the DRI mode instead.  In DRI mode, those buffer
allocation problems do not exist and all works fine as far as I know.

In the patch, getting rid of some of the compiler warnings may seem
pedantic, but I think it would have been a LOT harder to find some of
the bad casts if the other warnings had been left unfixed.  I'd
strongly recommend to merge in those changes.  A clean build with gcc
-O -Wall" goes a long way towards 64-bit cleanliness.

On the DRI front: note that you'll still need a 64-bit cleanup patch
(and IA-64) support for the X server before DRM/DRI works on IA-64.  I
plan to send that patch sometime tomorrow or on Wednesday.

Enjoy,

	--david

PS: If you're interested in seeing the IA-64 Linux Voodoo in action,
    visit the HP booth at Linux World Expo in San Jose this week. ;-)

diff -urN Glide_V3-DRI-3.10/ChangeLog Glide_V3-DRI-3.10-lia/ChangeLog
--- Glide_V3-DRI-3.10/ChangeLog	Wed Dec 31 16:00:00 1969
+++ Glide_V3-DRI-3.10-lia/ChangeLog	Mon Aug 14 23:51:43 2000
@@ -0,0 +1,326 @@
+2000-08-14  David Mosberger  <davidm@hpl.hp.com>
+
+	* swlibs/texus/lib/util.c (txYABtoPal256): Change type of yabTable
+	from "long*" to "int*".  Declare Y, A, and B to be of type "int*"
+	instead of "long*".
+	(txNearestColor): Change ir, ig, and ib arguments from "long" to
+	"int".
+
+	* swlibs/texus/lib/texusint.h (txYABtoPal256): Change yabTable
+	argument from "long*" to "int*".
+	(txNearestColor): Change ir, ig, and ib arguments from "long" to
+	"int".
+
+	* swlibs/texus/lib/texus.h [__LP64__]: Define FxI32 as "signed
+	int" and FxU32 as "unsigned int".
+
+	* swlibs/texus/lib/rgt.c (swapShorts): Change type of "length"
+	from "long" to "int".
+	(swapLongs): Ditto.
+	(swapRGB): Ditto.
+	(_txReadRGTData): Change cast of info->width to "long".
+
+	* swlibs/texus/lib/quantize.c: Put braces around each sub-array
+	initializer to keep compiler happy.
+	(_txPixQuantize_RGB332): Change type of argb from "unsigned long"
+	to "unsigned int".
+	(_txPixQuantize_RGB332_D4x4): Ditto.
+	(_txPixQuantize_RGB332_DErr): Ditto.
+	(_txPixQuantize_RGB332_A8): Ditto.
+	(_txPixQuantize_RGB332_I8): Ditto.
+	(_txPixQuantize_RGB332_AI44): Ditto.
+	(_txPixQuantize_RGB332_AI44_D4x4): Ditto.
+	(_txPixQuantize_RGB332_AI44_DErr): Ditto.
+	(_txPixQuantize_RGB332_ARGB8332): Ditto.
+	(_txPixQuantize_RGB332_ARGB8332_D4x4): Ditto.
+	(_txPixQuantize_RGB332_ARGB8332_DErr): Ditto.
+	(_txPixQuantize_RGB565): Ditto.
+	(_txPixQuantize_RGB565_D4x4): Ditto.
+	(_txPixQuantize_RGB565_DErr): Ditto.
+	(_txPixQuantize_ARGB1555): Ditto.
+	(_txPixQuantize_ARGB1555_D4x4): Ditto.
+	(_txPixQuantize_ARGB1555_DErr): Ditto.
+	(_txPixQuantize_ARGB4444): Ditto.
+	(_txPixQuantize_ARGB4444_D4x4): Ditto.
+	(_txPixQuantize_ARGB4444_DErr): Ditto.
+	(_txPixQuantize_AI88): Ditto.
+	(_txImgQuantize): Change type of quantizer callback to have a
+	first argument of type "unsigned int" instead of "unsigned long".
+	Cast "src" pointer to "unsigned int*" instead of "unsigned long*".
+	
+	* swlibs/texus/lib/pal256.c (Box): Change type of mean, weight,
+	and freq from "ulong" to "uint".
+	(Histogram): Change element type from "ulong" to "uint".
+	(SumPixels): Ditto.
+	(ColormaxI): Ditto.
+	(QuantHistogram): Change type of "pixels" from "ulong*" to
+	"uint*".
+	(txMipPal256): Change return value cast of txMalloc from "ulong*"
+	to "uint *".
+	(txMipPal256): In calls to bzero(), multiply by sizeof(uint)
+	instead of sizeof(ulong).
+	(txMipPal256): In call to QuantHistogram, change cast from
+	"ulong*" to "uint*".
+	(txMipPal256): Declare r, g, and b as "uint" instead of "ulong"
+	and truncate results of expressions for these variables to this
+	type as well.  Change type of src from "ulong*" to "uint*".
+	(QuantHistogram): Change type of rf, gf, and bf from "ulong*" to
+	"uint *".
+	(FindCutpoint): Change type of optweight and curweight from
+	"ulong" to "uint".
+	(UpdateFrequencies): Change type of myfreq and 8 to "uint" and
+	"uint*", respectively.  In calls to bzero(), multiply by
+	sizeof(uint) instead of sizeof(ulong).
+
+	* swlibs/texus/lib/nccnnet.c (struct _weight): Change member types
+	from "long" to "int".
+	(struct _vector): Ditto.
+	(errR): Change type from "long" to "int".
+	(errG): Ditto.
+	(errB): Ditto.
+	(errMax): Ditto.
+	(totR): Ditto.
+	(totG): Ditto.
+	(totB): Ditto.
+	(_nn_modifyNeurons): Change type of arguments from "long" to
+	"int".  Change type of "d", "dr", "dg", and "db" from "long" to
+	"int".
+	(txMapPal256toYAB): Change type of "bstR", "bstG", "bstB",
+	"bstMax" na "dyab2pal[]" from "long" to "int". Remove superfluous
+	cast in call to txYABtoPal256().
+	(txMipNccNNet): Change type of "yabTable[]" from "long" to "int".
+	Remove superfluous cast in call to txYABtoPal256().
+
+	* swlibs/texus/lib/ncc.c: Put braces around each sub-array
+	initializer to keep compiler happy.
+	(_txImgNcc): Change type of idata from "unsigned long*" to
+	"unsigned int *".
+	(txMipNcc): Remove superfluous cast to "long*".
+
+	* swlibs/texus/lib/mipmap.c (_txImgHalve): Change type of "indata"
+	from "long*" to "int*".
+
+	* swlibs/texus/lib/dequant.c (_txImgDequantizeYIQ422): Change type
+	of yabTable from "long*" to FxU32*.  Remove superfluous type casts
+	when passing argument to txYABtoPal256.
+	(_txImgDequantizeAYIQ8422): Change type of yab from "long*" to
+	FxU32*.  Declare "pal[]" as array of type FxU32 instead of "long".
+	Remove superfluous type cast when passing pallete to
+	_txImgDequantizeYIQ422() and _txImgDequantizeAYIQ8422().
+
+	* swlibs/newpci/pcilib/pcilib.h (FxPlatformIOProces): Change type
+	of addrUnmap's linearAddr argument from FxU32 to "long*".  Change
+	type of addrSetPermission's addrBase argument from FxU32 to
+	"long*".
+
+	* swlibs/newpci/pcilib/fxpci.h (pciMapPhysicalToLinear): Change
+	type of linear_addr from FxU32* to "long*".
+	(pciMapPhysicalDeviceToLinear): Ditto.
+	(pciUnmapPhysical): Change type of linear_addr from FxU32 to
+	"long".
+	(pciLinearRangeSetPermission): Change type of addrBase from FxU32
+	to "long".
+	
+	* swlibs/newpci/pcilib/fxpci.c (pciMapCardMulti): Change type of
+	virtAddress from FxU32 to "long".
+	(pciMapCardMulti): Cast "length" to "long" before casting it
+	to a pointer to avoid compiler warning.
+	(pciMapPhysicalToLinear): Change type of linear_addr from FxU32*
+	to "long*".
+	(pciMapPhysicalDeviceToLinear): Ditto.
+	(pciUnmapPhysical): Change type of linear_addr from FxU32 to "long".
+	(pciLinearRangeSetPermission): change type of addrBase from FxU32
+	to "long".
+
+	* swlibs/newpci/pcilib/fxlinux.c (pciMapLinearLinux): Change
+	linear_addr argument from FxU32* to "long*" type.
+	(pciUnmapLinearLinux): Change linear_addr type from FxU32 to
+	"long".
+	(pciSetPermissionLinux): Ditto.
+	(pciMapLinearLinux): Cast return value of mmap() to "long" instead
+	of FxU32 to avoid truncating top 32 bits.
+
+	* swlibs/include/make/3dfx.mak (CNODEBUG): Don't use x86 specific
+	compiler option "-m486" and reduce optimization level to -O3.
+
+	* swlibs/fxmisc/linutil.c: Explicitly give "init_done" a type of "int"
+	to avoid compiler warning.
+
+	* swlibs/fxmisc/fxos.c (fxFopenPath): Explicitly compare result
+	of assignment against NULL to avoid compiler warning.
+
+	* swlibs/fxmisc/fximg.c (_imgGuessType): Don't use non-portable
+	multi-byte character constants.
+	(_imgWriteP6Header): Remove extraneous argument in fprintf() call.
+	(imgReadFile): Explicitly compare result of assignment against
+	NULL to avoid compiler warning.
+
+	* swlibs/fxmisc/3dfx.h [__LP64__]: Define FxI32 as "signed int"
+	and FxU32 as "unsigned int".
+
+	* set-for-standalone: New script to set source for standalone
+	compilation.
+	* set-for-dri: New script to set up source for compilation with
+	DRI.
+
+	* h3/minihwc/minihwc.h: Change type of linearAddress[] from FxU32
+	to "long".  Change type of ioMemBase, cmdAGPBase, waxBase, sstBase,
+	lfbBase, and rawLfbBase from FxU32 to "long".
+
+	* h3/minihwc/minihwc.c (hwcMapBoard): Do not cast return value of
+	pciMapCardMulti() to FxU32 to avoid truncating top 32 bits.
+
+	* h3/minihwc/linhwc.c.save (P6FENCE) [__ia64__]: Make P6FENCE
+	expand into "mf.a" instruction.
+	(loadEnvFile): Rename local "first" to "is_first" to avoid
+	collision with global "first" list head pointer.
+	(hwcInitRegisters): Cast pointers to "long" instead of FxU32.
+
+	* h3/minihwc/linhwc.c.dri (P6FENCE) [__ia64__]: Make P6FENCE
+	expand into "mf.a" instruction.
+	(loadEnvFile): Rename local "first" to "is_first" to avoid
+	collision with global "first" list head pointer.
+	(hwcMapBoard): Cast pointers to "long" instead of FxU32.
+	(_grImportFifo): Declare as external function.
+	(_grInvalidateAll): Ditto.
+	(_grExportFifo): Ditto.
+	(grDRIResetSAREA): Cast fifoPtr to (int *).
+
+	* h3/minihwc/hwcext.h (struct hwcExtLinearADdrRes_s): Change type
+	of baseAddresses[] from FxU32 to "long".
+
+	* h3/incsrc/h3regs.h (struct vertex_Rec): Declare members as
+	FxU32/FxI32 instead of "unsigned long"/"long" to guarantee 32-bit
+	width.
+	(struct sstregs): Ditto.
+
+	* h3/incsrc/h3info.h (FxU32) [__LP64__]: Define FxU32 as "unsigned
+	int".
+	* h3/incsrc/h3regs.h: Ditto.
+
+	* h3/incsrc/h3defs.h (FLOAT_ISNEG): Define more suitable version
+	for IA-64.
+	(ISIGN): Ditto.
+	(FSIGN): Ditto.
+	(SST_WRAP): Cast "sst" pointer to "long" instead of FxI32 before
+	doing arithmetic on it.
+	(SST_CHIP): Ditto.
+	(SST_TMU): Ditto.
+	(SST_BASE_ADDRESS): Ditto.
+	
+	* h3/incsrc/gdebug.h (GDBG_INFO) [__GNUC__]: Use GNU CPP varag
+	macros to avoid flood of compiler warnings due to useless
+	expressions.
+	(GDBG_INFO_MORE): Ditto.
+	(GDBG_PRINF): Ditto.
+	(GDBG_ERROR_SET_CALLBACK): Ditto.
+	(GDBG_ERROR_CLEAR_CALLBACK): Ditto.
+
+	* h3/glide3/src/makefile.linux (FX_GLIDE_CTRISETUP): Define as 1
+	to use C source code instead of assembly code (should be done only
+	on platforms that don't have assembly versions of the triangle
+	setup code).
+
+	* h3/glide3/src/gthread.c (setThreadValue): Change argument type
+	from FxU32 to "long".
+	(getThreadValueSlow): Change return value from FxU32 to "long".
+
+	* h3/glide3/src/gtexdl.c (_grTexDownloadPalette): Put parens around
+	logical AND to avoid compiler warning.
+
+	* h3/glide3/src/gsst.c.save (initGC): Cast pointers to "long"
+	before doing arithmetic on them.  Cast pointer to "long" before
+	using it as a thread value.
+	(grSstWinOpen): Cast pointers to "long" instead of FxU32 before
+	doing arithmetic on them.  Explicitly compare return value of
+	assignment against != 0 to avoid compiler warning.
+	(grSstWinClose): Cast pointer to "long" before using it as a
+	thread value.
+
+	* h3/glide3/src/gpci.c (_triSetupProcs): Explicitly cast
+	_trisetup_null to GrTriSetupProc to avoid compiler warning.
+	(DllMain): Cast pointer to "long" before using it as a thread value.
+
+	* h3/glide3/src/glide.h (GrContext_t): Change type from FxU32 to
+	"unsigned long".
+
+	* h3/glide3/src/glfb.c.dri (grLfbWriteRegion): Cast pointer to
+	(long) instead of (int) before doing arithmetic on it.
+	(grLfbReadRegion): Ditto.
+
+	* h3/glide3/src/gglide.c.save b(grGlideShutdown): Fix typo: replace
+	"readPtr0 != readPtr1" with "depth0 != depth1".  Cast "gc" to
+	"long" instead of FxU32.
+
+	* h3/glide3/src/gglide.c.dri (grDRIBufferSwap): Write 0xCC as
+	0xCCu to avoid compiler warning regarding implicit conversion of
+	constant from signed to unsigned int.
+	(grGlideShutdown): Fix typo: replace "readPtr0 != readPtr1" with
+	"depth0 != depth1".  Cast "gc" to "long" instead of FxU32.
+
+	* h3/glide3/src/gerror.c (_grAssert): Cast pointers to (long"
+	instead of (FxU32) before doing arithmetic on them.  *
+	h3/glide3/src/gglide.c.dri: Ditto.
+
+	* h3/glide3/src/gdraw.c (GR_ENTRY): Don't assume that function
+	parameters are being passed on the stack.  Instead, explicitly use
+	and initialize the new "vertices[]"" array with the "a" and "b"
+	pointers.
+	(DA_END): Cast pointers to "long" instead of FxU32 before doing
+	arithmetic on them.
+	(_grDrawPoints): If mode is not zero, initialize "stride" to the
+	number of floats that corresponds to the size of a pointer (1 on a
+	32-bit platform, 2 on a 64-bit platform).  This code works
+	properly as long as sizeof(void*)=N*sizeof(float) for some
+	integer constant N.
+	(_grDrawLineStrip): Ditto.
+	(_grDrawTriangles_Default): Ditto.
+	(_grDrawLineStrip): Cast &ADY and &DX to "int *" instead of "long *".
+
+	* h3/glide3/src/gaa.c (aaVpDrawArrayEdgeSense): Cast pointers to
+	"long" instead of "int" before doing arithmetic on them.
+	(_grAADrawPoints): Ditto.
+	(_grAADrawLineStrip): Ditto.
+	(aaDrawArrayEdgeSense): Ditto.
+
+	* h3/glide3/src/g3df.c: Include <ctype.h> to avoid warning due to
+	implicit declaration of "toupper".
+
+	* h3/glide3/src/fxglide.h (GR_TEX_FLUSH_WRITE): Cast pointers to
+	"long" instead of FxU32 before doing arithmetic on them.
+	(GrGC_s): Change type of "fifoRead", "lfbBuffers[]", and
+	"lockPtrs[]" from FxU32 to "long".
+	(P6FENCE) [__ia64__]: Make P6FENCE expand into "mf.a"
+	instruction.
+	(threadValueLinux): Change type from FxU32 to "long".
+	(setThreadValue): Change thread value type from FxU32 to "long".
+	(getThreadValueSLOW): Ditto.
+	(GR_ASSERT) [!GLIDE_SANITY_ASSERT && __GNUC__]: Define GR_ASSERT()
+	as no-op.
+	(FARRAY): Cast pointer to "long" before doing arithmetic on it.
+
+	* h3/glide3/src/fxcmd.h (REG_GROUP_END): Cast poitners to "long"
+	instead of FxU32 before doing arithmetic on them.
+	(TRI_END): Ditto.
+	(FIFO_LINEAR_WRITE_BEGIN): Ditto.
+	(FIFO_LINEAR_WRITE_END): Ditto.
+	(AA_TRI_VP_SETFS): Ditto.
+	(REG_GROUP_SETF_CLAMP): Remove trailing whitespace.
+
+	* h3/glide3/src/fifo.c (_grHwFifoPtr): Change return type from
+	FxU32 to "long".
+	* h3/glide3/src/distrip.c (GR_DIENTRY): Cast pointers to "long"
+	instead of FxU32 before doing arithmetic on them.  *
+	h3/glide3/src/fifo.c (GEN_INDEX): Ditto.
+	(_grCommandTransportMakeRoom): Comment out unused variable
+	"wrapAddr".
+
+	* h3/glide3/src/disst.c (GR_DIENTRY): Cast thread value to (long)
+	not FxU32.
+
+	* h3/glide3/src/diget.c (GR_DIENTRY): For GR_SURFACE_TEXTURE,
+	verify plength has the size of a "long" and return tBuffer address
+	as a "long".
+
+	* h3/glide3/src/cpudtect.S: Add (minimal) IA-64 suppot.
+
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/cpudtect.S Glide_V3-DRI-3.10-lia/h3/glide3/src/cpudtect.S
--- Glide_V3-DRI-3.10/h3/glide3/src/cpudtect.S	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/cpudtect.S	Wed Aug  9 13:36:45 2000
@@ -49,6 +49,19 @@
 /*  Neutered mutiplatform multiheaded monster. */
 
 
+#ifdef __ia64__
+
+	.align 32
+	.global _cpu_detect_asm
+	.proc _cpu_detect_asm
+
+_cpu_detect_asm:
+	mov ret0=0
+	br.ret.sptk.few b0
+
+	.end _cpu_detect_asm
+
+#else /* !__ia64__ */
 
 .file "cpudtect.asm"
 
@@ -324,3 +337,5 @@
 .size double_precision_asm,.L_END_double_precision_asm-double_precision_asm
 
 .end
+
+#endif /* !__ia64__ */
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/diget.c Glide_V3-DRI-3.10-lia/h3/glide3/src/diget.c
--- Glide_V3-DRI-3.10/h3/glide3/src/diget.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/diget.c	Mon Aug 14 21:38:41 2000
@@ -615,10 +615,10 @@
     break;
 
   case GR_SURFACE_TEXTURE:
-    if (plength = 4) {
+    if (plength = sizeof(long)) {
       GR_DCL_GC;
 
-      *params = (FxU32) &gc->tBuffer;
+      *(long *)params = (long) &gc->tBuffer;
       retVal = plength;
     }
     break;
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/disst.c Glide_V3-DRI-3.10-lia/h3/glide3/src/disst.c
--- Glide_V3-DRI-3.10/h3/glide3/src/disst.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/disst.c	Wed Aug  9 14:58:01 2000
@@ -183,7 +183,7 @@
     GrErrorCallback( "grSstSelect:  non-existent SST", FXTRUE );
 
   _GlideRoot.current_sst = which;
-  setThreadValue( (FxU32)&_GlideRoot.GCs[_GlideRoot.current_sst] );
+  setThreadValue( (long)&_GlideRoot.GCs[_GlideRoot.current_sst] );
 
 #ifdef GLIDE_MULTIPLATFORM
   _GlideRoot.curGCFuncs = _GlideRoot.curGC->gcFuncs;
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/distrip.c Glide_V3-DRI-3.10-lia/h3/glide3/src/distrip.c
--- Glide_V3-DRI-3.10/h3/glide3/src/distrip.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/distrip.c	Wed Aug  9 23:57:00 2000
@@ -544,10 +544,10 @@
     else {
       void *b_ptr, *c_ptr;
       while ((int)Count >= 3) {
-        b_ptr = (void *)((FxU32)pointers + stride);
-        c_ptr = (void *)((FxU32)pointers + stride*2);
+        b_ptr = (void *)((long)pointers + stride);
+        c_ptr = (void *)((long)pointers + stride*2);
         TRISETUP(pointers, b_ptr, c_ptr);
-        pointers = (void *)((FxU32)c_ptr + stride);
+        pointers = (void *)((long)c_ptr + stride);
         Count -= 3;
       }
     }
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/fifo.c Glide_V3-DRI-3.10-lia/h3/glide3/src/fifo.c
--- Glide_V3-DRI-3.10/h3/glide3/src/fifo.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/fifo.c	Thu Aug 10 00:07:26 2000
@@ -475,7 +475,7 @@
 } ;
 
 
-#define GEN_INDEX(a) ((((FxU32) a) - ((FxU32) gc->reg_ptr)) >> 2)
+#define GEN_INDEX(a) ((((long) a) - ((long) gc->reg_ptr)) >> 2)
 
 void
 _grFifoWriteDebug(FxU32 addr, FxU32 val, FxU32 fifoPtr)
@@ -833,7 +833,9 @@
     gc->contextP = 1; 
 #endif
     if (gc->contextP) {
+#if 0
       FxU32 wrapAddr = 0x00UL;
+#endif
       FxU32 checks;
 
       GR_ASSERT(blockSize > 0);
@@ -973,7 +975,9 @@
           
         P6FENCE;
     
+#if 0
         wrapAddr = (FxU32)gc->cmdTransportInfo.fifoPtr;
+#endif
           
         /* Update roomXXX fields for the actual wrap */
         gc->cmdTransportInfo.roomToReadPtr -= gc->cmdTransportInfo.roomToEnd;
@@ -1047,10 +1051,10 @@
 }
 
 
-FxU32
+long
 _grHwFifoPtr(FxBool ignored)
 {
-  FxU32 rVal = 0;
+  long rVal = 0;
 
   FxU32 status, readPtrL1, readPtrL2;
   GR_DCL_GC;
@@ -1069,7 +1073,7 @@
 #endif      
       readPtrL2 = GET(gc->cRegs->cmdFifo0.readPtrL);
     } while (readPtrL1 != readPtrL2);
-    rVal = (((FxU32)gc->cmdTransportInfo.fifoStart) + 
+    rVal = (((long)gc->cmdTransportInfo.fifoStart) + 
             readPtrL2 - 
             (FxU32)gc->cmdTransportInfo.fifoOffset);
   }
@@ -1191,13 +1195,13 @@
   gcFifo=&gc->cmdTransportInfo;
   readPos=readPos-gcFifo->fifoOffset;
   gcFifo->fifoPtr = gcFifo->fifoStart + (readPos>>2);
-  gcFifo->fifoRead = (FxU32)gcFifo->fifoPtr;
+  gcFifo->fifoRead = (long)gcFifo->fifoPtr;
 #else
   gcFifo=&gc->cmdTransportInfo;
   gcFifo->fifoPtr = gc->rawLfb+(fifoPtr>>2);
   gcFifo->fifoRead = ((int)gc->rawLfb)+fifoRead;
 #endif
-  gcFifo->roomToReadPtr = gcFifo->fifoRead-((int)gcFifo->fifoPtr)-FIFO_END_ADJUST-sizeof(FxU32);
+  gcFifo->roomToReadPtr = gcFifo->fifoRead-((long)gcFifo->fifoPtr)-FIFO_END_ADJUST-sizeof(FxU32);
   if (gcFifo->roomToReadPtr<0) gcFifo->roomToReadPtr+=gcFifo->fifoSize;
   gcFifo->roomToEnd = gcFifo->fifoSize - 
     ((gcFifo->fifoPtr-gcFifo->fifoStart)<<2) -
@@ -1215,7 +1219,7 @@
   GR_DCL_GC;
   gcFifo=&gc->cmdTransportInfo;
   *fifoPtr=(gcFifo->fifoPtr-gc->rawLfb)<<2;
-  *fifoRead=(gcFifo->fifoRead-(int)gc->rawLfb);
+  *fifoRead=(gcFifo->fifoRead-(long)gc->rawLfb);
 }
 
 #endif
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/fxcmd.h Glide_V3-DRI-3.10-lia/h3/glide3/src/fxcmd.h
--- Glide_V3-DRI-3.10/h3/glide3/src/fxcmd.h	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/fxcmd.h	Wed Aug  9 23:39:35 2000
@@ -182,7 +182,7 @@
 /* NB: This should be used sparingly because it does a 'real' hw read
  * which is *SLOW*.
  */
-FxU32 _grHwFifoPtr(FxBool);
+long _grHwFifoPtr(FxBool);
 #define HW_FIFO_PTR(a) _grHwFifoPtr(a)
 
 #if FIFO_ASSERT_FULL
@@ -716,8 +716,8 @@
 
 #define REG_GROUP_END() \
   ASSERT(_checkP); \
-  ASSERT((((FxU32)_regGroupFifoPtr - (FxU32)gc->cmdTransportInfo.fifoPtr) >> 2) = _groupNum + 1); \
-  gc->cmdTransportInfo.fifoRoom -= ((FxU32)_regGroupFifoPtr - (FxU32)gc->cmdTransportInfo.fifoPtr); \
+  ASSERT((((long)_regGroupFifoPtr - (long)gc->cmdTransportInfo.fifoPtr) >> 2) = _groupNum + 1); \
+  gc->cmdTransportInfo.fifoRoom -= ((long)_regGroupFifoPtr - (long)gc->cmdTransportInfo.fifoPtr); \
   gc->cmdTransportInfo.fifoPtr = (FxU32*)_regGroupFifoPtr; \
   GDBG_INFO(gc->myLevel + 200, "\tGroupEnd: (0x%X : 0x%X)\n", \
             gc->cmdTransportInfo.fifoPtr, gc->cmdTransportInfo.fifoRoom); \
@@ -1028,7 +1028,7 @@
 
 #define TRI_END \
   TRI_ASSERT(); \
-  gc->cmdTransportInfo.fifoRoom -= ((FxU32)tPackPtr - (FxU32)gc->cmdTransportInfo.fifoPtr); \
+  gc->cmdTransportInfo.fifoRoom -= ((long)tPackPtr - (long)gc->cmdTransportInfo.fifoPtr); \
   gc->cmdTransportInfo.fifoPtr = tPackPtr; \
   GDBG_INFO(gc->myLevel + 200, "\tTriEnd: (0x%X : 0x%X)\n", tPackPtr, gc->cmdTransportInfo.fifoRoom); \
   FIFO_ASSERT(); \
@@ -1047,12 +1047,12 @@
   GR_CHECK_COMPATABILITY(FN_NAME, \
                          !gc->open, \
                          "Called before grSstWinOpen()"); \
-  GR_ASSERT(((FxU32)(packetPtr) & FIFO_ALIGN_MASK) = 0);        /* alignment */ \
+  GR_ASSERT(((long)(packetPtr) & FIFO_ALIGN_MASK) = 0);        /* alignment */ \
   GR_ASSERT((__numWords) > 0);                                   /* packet size */ \
   GR_ASSERT((__numWords) < ((0x01 << 19) - 2)); \
   GR_ASSERT((((FxU32)(__numWords) + 2) << 2) <= (FxU32)gc->cmdTransportInfo.fifoRoom); \
-  GR_ASSERT(((FxU32)packetPtr + (((__numWords) + 2) << 2)) < \
-            (FxU32)gc->cmdTransportInfo.fifoEnd); \
+  GR_ASSERT(((unsigned long)packetPtr + (((__numWords) + 2) << 2)) < \
+            (unsigned long)gc->cmdTransportInfo.fifoEnd); \
   GR_ASSERT((hdr2 & 0xE0000000UL) = 0x00UL); \
   GR_ASSERT(((__addr) & 0x03UL) = 0x00UL); \
   FIFO_ASSERT(); \
@@ -1097,8 +1097,8 @@
 
 #define FIFO_LINEAR_WRITE_END \
   DEBUGFIFODUMP_LINEAR(gc->cmdTransportInfo.fifoPtr); \
-  GR_ASSERT((((FxU32)packetPtr - (FxU32)gc->cmdTransportInfo.fifoPtr) >> 2) = __writeSize + 2); \
-  gc->cmdTransportInfo.fifoRoom -= ((FxU32)packetPtr - (FxU32)gc->cmdTransportInfo.fifoPtr); \
+  GR_ASSERT((((long)packetPtr - (long)gc->cmdTransportInfo.fifoPtr) >> 2) = __writeSize + 2); \
+  gc->cmdTransportInfo.fifoRoom -= ((long)packetPtr - (long)gc->cmdTransportInfo.fifoPtr); \
   gc->cmdTransportInfo.fifoPtr = packetPtr; \
   GDBG_INFO(gc->myLevel + 200, "\tLinearEnd: (0x%X : 0x%X)\n", \
             packetPtr, gc->cmdTransportInfo.fifoRoom); \
@@ -1312,7 +1312,7 @@
 #define REG_GROUP_SETF_CLAMP(__regBase, __regAddr, __val) \
 do { \
   const FxU32 fpClampVal = FP_FLOAT_CLAMP(__val); \
-  REG_GROUP_ASSERT(__regAddr, fpClampVal, FXTRUE); \  
+  REG_GROUP_ASSERT(__regAddr, fpClampVal, FXTRUE); \
   SET(((FxU32*)(__regBase))[offsetof(SstRegs, __regAddr) >> 2], fpClampVal); \
   GR_INC_SIZE(sizeof(FxU32)); \
 } while(0)
@@ -1512,7 +1512,7 @@
     } \
     else { \
       FxU32 argb; \
-      argb = *((FxU32 *)((int)_s + i)) & 0x00ffffff; \
+      argb = *((FxU32 *)((long)_s + i)) & 0x00ffffff; \
       TRI_SETF(*((float *)&argb)); \
       dataElem++; \
       i = gc->tsuDataList[dataElem]; \
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/fxglide.h Glide_V3-DRI-3.10-lia/h3/glide3/src/fxglide.h
--- Glide_V3-DRI-3.10/h3/glide3/src/fxglide.h	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/fxglide.h	Wed Aug  9 23:35:20 2000
@@ -1039,7 +1039,7 @@
           SET(*curFifoPtr++, *curPktData++); \
         } \
         GR_INC_SIZE((__writeCount) * sizeof(FxU32)); \
-        gc->cmdTransportInfo.fifoRoom -= ((FxU32)curFifoPtr - (FxU32)gc->cmdTransportInfo.fifoPtr); \
+        gc->cmdTransportInfo.fifoRoom -= ((long)curFifoPtr - (long)gc->cmdTransportInfo.fifoPtr); \
         gc->cmdTransportInfo.fifoPtr = curFifoPtr; \
       } \
       GR_CHECK_SIZE(); \
@@ -1158,7 +1158,7 @@
                           */
     
     FxU32* fifoPtr;      /* Current write pointer into fifo */
-    FxU32  fifoRead;     /* Last known hw read ptr. 
+    long   fifoRead;     /* Last known hw read ptr. 
                           * If on an sli enabled system this will be
                           * the 'closest' hw read ptr of the sli
                           * master and slave.
@@ -1244,11 +1244,12 @@
     curBuffer,
     frontBuffer,
     backBuffer,
-    buffers[4],
+    buffers[4];
+  long
     lfbBuffers[4];              /* Tile relative addresses of the color/aux
                                  * buffers for lfbReads.
                                  */  
-  FxU32 lockPtrs[2];        /* pointers to locked buffers */
+  long lockPtrs[2];        /* pointers to locked buffers */
   FxU32 fbStride;
 
   struct {
@@ -1475,6 +1476,8 @@
 #  define P6FENCE __eieio()
 #elif defined(__GNUC__) && defined(__i386__)
 #define P6FENCE asm("xchg %%eax, %0" : : "m" (_GlideRoot.p6Fencer) : "eax");
+#elif defined(__GNUC__) && defined(__ia64__)
+# define P6FENCE asm volatile ("mf.a" ::: "memory");
 #else  /* !defined ( P6FENCE ) */
 #  error "P6 Fencing code needs to be added for this compiler"
 #endif /* !defined ( P6FENCE ) */
@@ -1798,7 +1801,7 @@
 #endif
 
 #ifdef __linux__
-extern FxU32 threadValueLinux;
+extern long threadValueLinux;
 #define getThreadValueFast() threadValueLinux
 #endif
 
@@ -1813,9 +1816,9 @@
 initThreadStorage( void );
 
 void 
-setThreadValue( FxU32 value );
+setThreadValue( long value );
 
-FxU32
+long
 getThreadValueSLOW( void );
 
 void 
@@ -2093,7 +2096,11 @@
 #if defined(GLIDE_SANITY_ASSERT)
 #define GR_ASSERT(exp) ((void)((!(exp)) ? (_grAssert(#exp,  __FILE__, __LINE__),0) : 0xFFFFFFFF))
 #else
-#define GR_ASSERT(exp) ((void)(0 && ((FxU32)(exp))))
+# ifdef __GNUC__
+#  define GR_ASSERT(exp)	((void) 0)
+# else
+#  define GR_ASSERT(exp) ((void)(0 && ((FxU32)(exp))))
+# endif
 #endif
 
 #define INTERNAL_CHECK(__name, __cond, __msg, __fatalP) \
@@ -2163,7 +2170,7 @@
 #define HW_TEX_PTR(__b)        ((FxU32*)(((FxU32)(__b)) + HW_TEXTURE_OFFSET))   
 
 /* access a floating point array with a byte index */
-#define FARRAY(p,i)    (*(float *)((i)+(int)(p)))
+#define FARRAY(p,i)    (*(float *)((i)+(long)(p)))
 #define ArraySize(__a) (sizeof(__a) / sizeof((__a)[0]))
 
 #if GDBG_INFO_ON
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/g3df.c Glide_V3-DRI-3.10-lia/h3/glide3/src/g3df.c
--- Glide_V3-DRI-3.10/h3/glide3/src/g3df.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/g3df.c	Wed Aug  9 23:23:12 2000
@@ -70,6 +70,7 @@
  * Added GR_DIENTRY for di glide functions
 **
 */
+#include <ctype.h>
 #include <stdio.h>
 #include <string.h>
 #include <3dfx.h>
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gaa.c Glide_V3-DRI-3.10-lia/h3/glide3/src/gaa.c
--- Glide_V3-DRI-3.10/h3/glide3/src/gaa.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gaa.c	Wed Aug  9 23:36:10 2000
@@ -378,8 +378,8 @@
   }
   else {
     ia = gc->state.vData.pargbInfo.offset;
-    *((FxU32 *)&v1a)=*((FxU32 *)((int)a + ia))&0x00ffffff;
-    *((FxU32 *)&v2a)=*((FxU32 *)((int)b + ia))&0x00ffffff;
+    *((FxU32 *)&v1a)=*((FxU32 *)((long)a + ia))&0x00ffffff;
+    *((FxU32 *)&v2a)=*((FxU32 *)((long)b + ia))&0x00ffffff;
   }
 
   {
@@ -678,7 +678,7 @@
               FxU32 argb;
               
               if (i = ia) {
-                argb = *((FxU32 *)((int)e + i)) & 0x00ffffff;
+                argb = *((FxU32 *)((long)e + i)) & 0x00ffffff;
                 TRI_SETF(*((float *)&argb));
               }
               else {
@@ -855,8 +855,8 @@
         ady = -ady;
       
       if (gc->state.vData.colorType != GR_FLOAT) {
-        *((FxU32 *)&v1a)=*((FxU32 *)((int)v1 + ia))&0x00ffffff;
-        *((FxU32 *)&v2a)=*((FxU32 *)((int)v2 + ia))&0x00ffffff;
+        *((FxU32 *)&v1a)=*((FxU32 *)((long)v1 + ia))&0x00ffffff;
+        *((FxU32 *)&v2a)=*((FxU32 *)((long)v2 + ia))&0x00ffffff;
       }
       
       if (adx >= ady) {           /* X major line */
@@ -1255,8 +1255,8 @@
   }
   else {
     ia = gc->state.vData.pargbInfo.offset;
-    *((FxU32 *)&v1a)=*((FxU32 *)((int)a + ia))&0x00ffffff;
-    *((FxU32 *)&v2a)=*((FxU32 *)((int)b + ia))&0x00ffffff;
+    *((FxU32 *)&v1a)=*((FxU32 *)((long)a + ia))&0x00ffffff;
+    *((FxU32 *)&v2a)=*((FxU32 *)((long)b + ia))&0x00ffffff;
   }
 
   {
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gdraw.c Glide_V3-DRI-3.10-lia/h3/glide3/src/gdraw.c
--- Glide_V3-DRI-3.10/h3/glide3/src/gdraw.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gdraw.c	Thu Aug 10 23:52:27 2000
@@ -233,13 +233,15 @@
 GR_ENTRY(grDrawLine, void, (const void *a, const void *b))
 {
 #define FN_NAME "grDrawLine"
+  const void *vertices[2] = {a, b};
+
   GR_BEGIN_NOFIFOCHECK(FN_NAME, 91);
   GDBG_INFO_MORE(gc->myLevel, "(a = 0x%x, b = 0x%x)\n", a, b);
 
   if (gc->state.grEnableArgs.primitive_smooth_mode & GR_AA_ORDERED_LINES_MASK)
-    _grAADrawLineStrip(GR_VTX_PTR_ARRAY, GR_LINES, 2, (void *)&a);
+    _grAADrawLineStrip(GR_VTX_PTR_ARRAY, GR_LINES, 2, vertices);
   else
-    _grDrawLineStrip(GR_VTX_PTR_ARRAY, GR_LINES, 2, (void *)&a);
+    _grDrawLineStrip(GR_VTX_PTR_ARRAY, GR_LINES, 2, vertices);
 #undef FN_NAME
 } /* grDrawLine */
 
@@ -323,7 +325,7 @@
   GR_INC_SIZE(sizeof(FxU32))
 
 #define DA_END \
-  gc->cmdTransportInfo.fifoRoom -= ((FxU32)packetPtr - (FxU32)gc->cmdTransportInfo.fifoPtr); \
+  gc->cmdTransportInfo.fifoRoom -= ((long)packetPtr - (long)gc->cmdTransportInfo.fifoPtr); \
   gc->cmdTransportInfo.fifoPtr = packetPtr; \
   FIFO_ASSERT(); \
 }
@@ -348,7 +350,7 @@
    * except the data set up is from the pointer array and 
    * its data layout
    */
-  FxI32 stride = mode;
+  FxI32 stride;
 
   /* we snap to an integer by adding a large enough number that it
    * shoves all fraction bits off the right side of the mantissa.
@@ -382,8 +384,10 @@
    */
 #define POINTS_BUFFER  100
 
-  if (stride = 0)
+  if (mode = 0)
     stride = gc->state.vData.vStride;
+  else
+    stride = sizeof(float *) / sizeof (float);
 
   if (gc->state.grCoordinateSpaceArgs.coordinate_space_mode = GR_WINDOW_COORDS) {
     while (count > 0) {
@@ -573,7 +577,7 @@
   int j;
   FxI32 sCount;
   FxU32 vertexParamOffset;
-  FxI32 stride = mode;
+  FxI32 stride;
 
 #define  DX gc->pool.ftemp1
 #define ADY gc->pool.ftemp2
@@ -589,8 +593,11 @@
 
 #define LINES_BUFFER  100
 
-  if (stride = 0)
+  if (mode = 0)
     stride = gc->state.vData.vStride;
+  else
+    stride = sizeof(float *) / sizeof (float);
+
   if (ltype = GR_LINES)
     sCount = count >> 1; /* line list */
   else
@@ -618,16 +625,16 @@
         ** compute absolute deltas and draw from low Y to high Y
         */
         ADY = FARRAY(b, gc->state.vData.vertexInfo.offset+4) - FARRAY(a, gc->state.vData.vertexInfo.offset+4);
-        i = *(long *)&ADY;
+        i = *(int *)&ADY;
         if (i < 0) {
           float *tv;
           tv = a; a = b; b = tv;
           i ^= 0x80000000;            /* ady = -ady; */
-          (*(long *)&ADY) = i;
+          (*(int *)&ADY) = i;
         }
         
         DX = FARRAY(b, gc->state.vData.vertexInfo.offset) - FARRAY(a, gc->state.vData.vertexInfo.offset);
-        j = *(long *)&DX;
+        j = *(int *)&DX;
         if (j < 0) {
           j ^= 0x80000000;            /* adx = -adx; */
         }
@@ -797,7 +804,7 @@
         ** compute absolute deltas and draw from low Y to high Y
         */
         ADY = tmp2 - tmp1;
-        i = *(long *)&ADY;
+        i = *(int *)&ADY;
         if (i < 0) {
           float *tv;          
           owa = oowb; owb = oowa;
@@ -805,7 +812,7 @@
           fby = tmp1;
           tv = a; a = b; b = tv;
           i ^= 0x80000000;            /* ady = -ady; */
-          (*(long *)&ADY) = i;
+          (*(int *)&ADY) = i;
         }
         fax = FARRAY(a, gc->state.vData.vertexInfo.offset)
           *owa*gc->state.Viewport.hwidth+gc->state.Viewport.ox;
@@ -813,7 +820,7 @@
           *owb*gc->state.Viewport.hwidth+gc->state.Viewport.ox;
         
         DX = fbx - fax;
-        j = *(long *)&DX;
+        j = *(int *)&DX;
         if (j < 0) {
           j ^= 0x80000000;            /* adx = -adx; */
         }
@@ -901,7 +908,7 @@
     vSize,
 #endif
     k;
-  FxI32 stride = mode;
+  FxI32 stride;
   float *vPtr;
 
   GR_BEGIN_NOFIFOCHECK(FN_NAME, 90);
@@ -917,9 +924,10 @@
   GDBG_INFO(110, "%s:  paramMask = 0x%x\n", FN_NAME, gc->cmdTransportInfo.paramMask);
 #endif
 
-  if (stride = 0)
+  if (mode = 0)
     stride = gc->state.vData.vStride;
-
+  else
+    stride = sizeof(float *) / sizeof (float);
 
   gc->stats.trisProcessed+=(count/3);
 
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gerror.c Glide_V3-DRI-3.10-lia/h3/glide3/src/gerror.c
--- Glide_V3-DRI-3.10/h3/glide3/src/gerror.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gerror.c	Wed Aug  9 23:26:01 2000
@@ -280,7 +280,7 @@
     
     gdbg_printf("Command Fifo:\n");
     gdbg_printf("\tSoftware:\n");
-    gdbg_printf("\t\tfifoPtr:           0x%X\n", (FxU32)gc->cmdTransportInfo.fifoPtr - (FxU32) gc->rawLfb);
+    gdbg_printf("\t\tfifoPtr:           0x%X\n", (long)gc->cmdTransportInfo.fifoPtr - (long) gc->rawLfb);
     gdbg_printf("\t\tfifoOffset:        0x%X\n", gc->cmdTransportInfo.fifoOffset); 
     gdbg_printf("\t\tfifoEnd:           0x%X\n", gc->cmdTransportInfo.fifoEnd - gc->rawLfb);
     gdbg_printf("\t\tfifoSize:          0x%X\n", gc->cmdTransportInfo.fifoSize); 
@@ -290,7 +290,7 @@
 
     if ( !gc->windowed ) {
       gdbg_printf("\tHardware:\n");
-      gdbg_printf("\t\treadPtrL:          0x%X\n", HW_FIFO_PTR(FXTRUE) - (FxU32)gc->rawLfb);
+      gdbg_printf("\t\treadPtrL:          0x%X\n", HW_FIFO_PTR(FXTRUE) - (long)gc->rawLfb);
       gdbg_printf("\t\tdepth:             0x%X\n", GR_CAGP_GET(depth));
       gdbg_printf("\t\tholeCount:         0x%X\n", GR_CAGP_GET(holeCount));
       gdbg_printf("\t\tbaseAddrL:         0x%X\n", GR_CAGP_GET(baseAddrL));
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gglide.c Glide_V3-DRI-3.10-lia/h3/glide3/src/gglide.c
--- Glide_V3-DRI-3.10/h3/glide3/src/gglide.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gglide.c	Wed Aug  9 23:41:48 2000
@@ -1179,8 +1179,8 @@
     for ( i = 0; i < MAX_BUFF_PENDING && j = -1; i++) {
       if (gc->bufferSwaps[i] = 0xffffffff) {
         gc->bufferSwaps[i] -          (FxU32) gc->cmdTransportInfo.fifoPtr -
-          (FxU32) gc->cmdTransportInfo.fifoStart; 
+          (long) gc->cmdTransportInfo.fifoPtr -
+          (long) gc->cmdTransportInfo.fifoStart; 
         j = i;
       }
     }
@@ -1222,7 +1222,7 @@
       REG_GROUP_SET_WAX(hw, srcXY, x | ((driInfo.y+(y-driInfo.y))<<16));
       REG_GROUP_SET_WAX(hw, dstSize, (w&0x1FFF)|((h&0x1FFF)<<16));
       REG_GROUP_SET_WAX(hw, dstXY, (x&0x1FFF) | ((y&0x1FFF)<<16));
-      REG_GROUP_SET_WAX(hw, command, (0xCC<<24) | 0x1 | BIT(8));
+      REG_GROUP_SET_WAX(hw, command, (0xCCu<<24) | 0x1 | BIT(8));
       REG_GROUP_END();
     } while (cnt);
 
@@ -1315,7 +1315,7 @@
     do {
       depth0 = GET(gc->cRegs->cmdFifo0.depth);
       depth1 = GET(gc->cRegs->cmdFifo0.depth);
-    } while (readPtr0 != readPtr1);
+    } while (depth0 != depth1);
 
     if (depth0 = 0) {
       for (i = 0; i < MAX_BUFF_PENDING; i++)
@@ -2114,7 +2114,7 @@
            * continuing so that any internal glide calls have a valid
            * gc from tls via GR_DCL_GC. F*ck this up at your own peril.
            */
-          setThreadValue((FxU32)gc);
+          setThreadValue((long)gc);
 #if (GLIDE_PLATFORM & GLIDE_OS_WIN32)
           /* Flush any remaining commands and cleanup any per gc state */
           grSurfaceReleaseContext((GrContext_t)gc);
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gglide.c.dri Glide_V3-DRI-3.10-lia/h3/glide3/src/gglide.c.dri
--- Glide_V3-DRI-3.10/h3/glide3/src/gglide.c.dri	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gglide.c.dri	Wed Aug  9 23:41:48 2000
@@ -1179,8 +1179,8 @@
     for ( i = 0; i < MAX_BUFF_PENDING && j = -1; i++) {
       if (gc->bufferSwaps[i] = 0xffffffff) {
         gc->bufferSwaps[i] -          (FxU32) gc->cmdTransportInfo.fifoPtr -
-          (FxU32) gc->cmdTransportInfo.fifoStart; 
+          (long) gc->cmdTransportInfo.fifoPtr -
+          (long) gc->cmdTransportInfo.fifoStart; 
         j = i;
       }
     }
@@ -1222,7 +1222,7 @@
       REG_GROUP_SET_WAX(hw, srcXY, x | ((driInfo.y+(y-driInfo.y))<<16));
       REG_GROUP_SET_WAX(hw, dstSize, (w&0x1FFF)|((h&0x1FFF)<<16));
       REG_GROUP_SET_WAX(hw, dstXY, (x&0x1FFF) | ((y&0x1FFF)<<16));
-      REG_GROUP_SET_WAX(hw, command, (0xCC<<24) | 0x1 | BIT(8));
+      REG_GROUP_SET_WAX(hw, command, (0xCCu<<24) | 0x1 | BIT(8));
       REG_GROUP_END();
     } while (cnt);
 
@@ -1315,7 +1315,7 @@
     do {
       depth0 = GET(gc->cRegs->cmdFifo0.depth);
       depth1 = GET(gc->cRegs->cmdFifo0.depth);
-    } while (readPtr0 != readPtr1);
+    } while (depth0 != depth1);
 
     if (depth0 = 0) {
       for (i = 0; i < MAX_BUFF_PENDING; i++)
@@ -2114,7 +2114,7 @@
            * continuing so that any internal glide calls have a valid
            * gc from tls via GR_DCL_GC. F*ck this up at your own peril.
            */
-          setThreadValue((FxU32)gc);
+          setThreadValue((long)gc);
 #if (GLIDE_PLATFORM & GLIDE_OS_WIN32)
           /* Flush any remaining commands and cleanup any per gc state */
           grSurfaceReleaseContext((GrContext_t)gc);
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gglide.c.save Glide_V3-DRI-3.10-lia/h3/glide3/src/gglide.c.save
--- Glide_V3-DRI-3.10/h3/glide3/src/gglide.c.save	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gglide.c.save	Wed Aug  9 19:19:07 2000
@@ -1163,7 +1163,7 @@
     do {
       depth0 = GET(gc->cRegs->cmdFifo0.depth);
       depth1 = GET(gc->cRegs->cmdFifo0.depth);
-    } while (readPtr0 != readPtr1);
+    } while (depth0 != depth1);
 
     if (depth0 = 0) {
       for (i = 0; i < MAX_BUFF_PENDING; i++)
@@ -1962,7 +1962,7 @@
            * continuing so that any internal glide calls have a valid
            * gc from tls via GR_DCL_GC. F*ck this up at your own peril.
            */
-          setThreadValue((FxU32)gc);
+          setThreadValue(gc);
 #if (GLIDE_PLATFORM & GLIDE_OS_WIN32)
           /* Flush any remaining commands and cleanup any per gc state */
           grSurfaceReleaseContext((GrContext_t)gc);
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/glfb.c Glide_V3-DRI-3.10-lia/h3/glide3/src/glfb.c
--- Glide_V3-DRI-3.10/h3/glide3/src/glfb.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/glfb.c	Wed Aug  9 23:59:31 2000
@@ -712,7 +712,7 @@
     case GR_LFB_SRC_FMT_ZA16:
       dstData = (FxU32*)(((FxU16*)dstData) + dst_x);
       length  = src_width * 2;
-      aligned = !((int)dstData&0x2);
+      aligned = !((long)dstData&0x2);
       srcJump = src_stride - length;
       dstJump = info.strideInBytes - length;
       if (aligned) {
@@ -917,7 +917,7 @@
     length   = src_width * 2;
     dstJump  = dst_stride - length;
     srcJump  = info.strideInBytes - length;
-    aligned  = !((int)srcData&0x2);
+    aligned  = !((long)srcData&0x2);
     odd      = (src_y+src_height) & 0x1;
     
     if (aligned) {
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/glfb.c.dri Glide_V3-DRI-3.10-lia/h3/glide3/src/glfb.c.dri
--- Glide_V3-DRI-3.10/h3/glide3/src/glfb.c.dri	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/glfb.c.dri	Wed Aug  9 23:59:31 2000
@@ -712,7 +712,7 @@
     case GR_LFB_SRC_FMT_ZA16:
       dstData = (FxU32*)(((FxU16*)dstData) + dst_x);
       length  = src_width * 2;
-      aligned = !((int)dstData&0x2);
+      aligned = !((long)dstData&0x2);
       srcJump = src_stride - length;
       dstJump = info.strideInBytes - length;
       if (aligned) {
@@ -917,7 +917,7 @@
     length   = src_width * 2;
     dstJump  = dst_stride - length;
     srcJump  = info.strideInBytes - length;
-    aligned  = !((int)srcData&0x2);
+    aligned  = !((long)srcData&0x2);
     odd      = (src_y+src_height) & 0x1;
     
     if (aligned) {
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/glide.h Glide_V3-DRI-3.10-lia/h3/glide3/src/glide.h
--- Glide_V3-DRI-3.10/h3/glide3/src/glide.h	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/glide.h	Wed Aug  9 18:33:13 2000
@@ -53,7 +53,7 @@
 typedef FxU8  GrAlpha_t;
 typedef FxU32 GrMipMapId_t;
 typedef FxU8  GrFog_t;
-typedef FxU32 GrContext_t;
+typedef unsigned long GrContext_t;
 typedef int (FX_CALL *GrProc)();
 
 /*
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gpci.c Glide_V3-DRI-3.10-lia/h3/glide3/src/gpci.c
--- Glide_V3-DRI-3.10/h3/glide3/src/gpci.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gpci.c	Wed Aug  9 23:24:03 2000
@@ -418,14 +418,14 @@
   {
     /* Window coords */
     {
-      { _trisetup_null, _trisetup_null },
-      { _trisetup_null, _trisetup_null },
+      { (GrTriSetupProc) _trisetup_null, (GrTriSetupProc) _trisetup_null },
+      { (GrTriSetupProc) _trisetup_null, (GrTriSetupProc) _trisetup_null },
     },
 
     /* Clip coordinates */
     {
-      { _trisetup_null, _trisetup_null },
-      { _trisetup_null, _trisetup_null },
+      { (GrTriSetupProc) _trisetup_null, (GrTriSetupProc) _trisetup_null },
+      { (GrTriSetupProc) _trisetup_null, (GrTriSetupProc) _trisetup_null },
     },
   },
 };
@@ -1024,7 +1024,7 @@
       GR_DCL_GC;
 
       /* If there is no current gc in tls then set the current context. */
-      if (gc = NULL) setThreadValue((FxU32)&_GlideRoot.GCs[_GlideRoot.current_sst]);
+      if (gc = NULL) setThreadValue((long)&_GlideRoot.GCs[_GlideRoot.current_sst]);
     }
     break;
   case DLL_THREAD_DETACH:
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gsst.c Glide_V3-DRI-3.10-lia/h3/glide3/src/gsst.c
--- Glide_V3-DRI-3.10/h3/glide3/src/gsst.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gsst.c	Thu Aug 10 00:13:53 2000
@@ -542,30 +542,30 @@
 
 ResEntry
 _resTable[] = {
-  GR_RESOLUTION_320x200, 320, 200, /* 0x0 */
-  GR_RESOLUTION_320x240, 320,  240, /*   0x1 */
-  GR_RESOLUTION_400x256, 400,  256, /*   0x2 */
-  GR_RESOLUTION_512x384, 512,  384, /*   0x3 */
-  GR_RESOLUTION_640x200, 640,  200, /*   0x4 */
-  GR_RESOLUTION_640x350, 640,  350, /*   0x5 */
-  GR_RESOLUTION_640x400, 640,  400, /*   0x6 */
-  GR_RESOLUTION_640x480, 640,  480, /*   0x7 */
-  GR_RESOLUTION_800x600, 800,  600, /*   0x8 */
-  GR_RESOLUTION_960x720, 960,  720, /*   0x9 */
-  GR_RESOLUTION_856x480, 856,  480, /*   0xa */
-  GR_RESOLUTION_512x256, 512,  256, /*   0xb */
-  GR_RESOLUTION_1024x768, 1024,  768, /*  0xC */
-  GR_RESOLUTION_1280x1024, 1280,  1024, /* 0xD */
-  GR_RESOLUTION_1600x1200, 1600,  1200, /* 0xE */
-  GR_RESOLUTION_400x300, 400,  300, /*   0xF */
-  GR_RESOLUTION_1152x864, 1152,  864, /*  0x10 */
-  GR_RESOLUTION_1280x960, 1280,  960, /*  0x11 */
-  GR_RESOLUTION_1600x1024, 1600,  1024, /* 0x12 */
-  GR_RESOLUTION_1792x1344, 1792,  1344, /* 0x13 */
-  GR_RESOLUTION_1856x1392, 1856,  1392, /* 0x14 */
-  GR_RESOLUTION_1920x1440, 1920,  1440, /* 0x15 */
-  GR_RESOLUTION_2048x1536, 2048,  1536, /* 0x16 */
-  GR_RESOLUTION_2048x2048, 2048,  2048 /* 0x17 */
+  { GR_RESOLUTION_320x200, 320, 200 }, /* 0x0 */
+  { GR_RESOLUTION_320x240, 320,  240 }, /*   0x1 */
+  { GR_RESOLUTION_400x256, 400,  256 }, /*   0x2 */
+  { GR_RESOLUTION_512x384, 512,  384 }, /*   0x3 */
+  { GR_RESOLUTION_640x200, 640,  200 }, /*   0x4 */
+  { GR_RESOLUTION_640x350, 640,  350 }, /*   0x5 */
+  { GR_RESOLUTION_640x400, 640,  400 }, /*   0x6 */
+  { GR_RESOLUTION_640x480, 640,  480 }, /*   0x7 */
+  { GR_RESOLUTION_800x600, 800,  600 }, /*   0x8 */
+  { GR_RESOLUTION_960x720, 960,  720 }, /*   0x9 */
+  { GR_RESOLUTION_856x480, 856,  480 }, /*   0xa */
+  { GR_RESOLUTION_512x256, 512,  256 }, /*   0xb */
+  { GR_RESOLUTION_1024x768, 1024,  768 }, /*  0xC */
+  { GR_RESOLUTION_1280x1024, 1280,  1024 }, /* 0xD */
+  { GR_RESOLUTION_1600x1200, 1600,  1200 }, /* 0xE */
+  { GR_RESOLUTION_400x300, 400,  300 }, /*   0xF */
+  { GR_RESOLUTION_1152x864, 1152,  864 }, /*  0x10 */
+  { GR_RESOLUTION_1280x960, 1280,  960 }, /*  0x11 */
+  { GR_RESOLUTION_1600x1024, 1600,  1024 }, /* 0x12 */
+  { GR_RESOLUTION_1792x1344, 1792,  1344 }, /* 0x13 */
+  { GR_RESOLUTION_1856x1392, 1856,  1392 }, /* 0x14 */
+  { GR_RESOLUTION_1920x1440, 1920,  1440 }, /* 0x15 */
+  { GR_RESOLUTION_2048x1536, 2048,  1536 }, /* 0x16 */
+  { GR_RESOLUTION_2048x2048, 2048,  2048 } /* 0x17 */
 };
 
 /* ---------------------------------------------
@@ -756,8 +756,8 @@
     gc->bufferSwaps[t] = 0xffffffff;
   }
   
-  gc->bufferSwaps[0] = ((FxU32) gc->cmdTransportInfo.fifoPtr -
-                        (FxU32) gc->cmdTransportInfo.fifoStart);
+  gc->bufferSwaps[0] = ((long) gc->cmdTransportInfo.fifoPtr -
+                        (long) gc->cmdTransportInfo.fifoStart);
   
   gc->swapsPending = 1;
   
@@ -946,7 +946,7 @@
    * current gc. This gc is valid for all threads in the fullscreen
    * context.
    */
-  setThreadValue( (FxU32)&_GlideRoot.GCs[_GlideRoot.current_sst] );
+  setThreadValue( (long)&_GlideRoot.GCs[_GlideRoot.current_sst] );
   
   {
     /* Partial Argument Validation */
@@ -1076,12 +1076,12 @@
     for (buffer = 0; buffer < nColBuffers; buffer++) {
       gc->buffers[buffer] = bufInfo->colBuffStart[buffer];
       GDBG_INFO(80, "Buffer %d:  Start: 0x%x\n", buffer, gc->buffers[buffer]);
-      gc->lfbBuffers[buffer] = (FxU32)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
+      gc->lfbBuffers[buffer] = (long)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
     }
     if (nAuxBuffers != 0) {
       gc->buffers[buffer] = bufInfo->auxBuffStart;
       GDBG_INFO(80, "Aux Buffer:  Start: 0x%x\n", gc->buffers[buffer]);
-      gc->lfbBuffers[buffer] = (FxU32)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
+      gc->lfbBuffers[buffer] = (long)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
     }
   
     vInfo->hWnd     = gc->grHwnd;
@@ -1190,7 +1190,7 @@
     gc->tBuffer.bufBPP = 0xffffffff; /* Don't matter to me */
 
     GDBG_INFO(1, "autoBump: 0x%x\n", _GlideRoot.environment.autoBump);
-    if (gc->cmdTransportInfo.autoBump = _GlideRoot.environment.autoBump) {
+    if ((gc->cmdTransportInfo.autoBump = _GlideRoot.environment.autoBump) != 0) {
       if (!hwcInitFifo( bInfo, gc->cmdTransportInfo.autoBump)) {
         hwcRestoreVideo(bInfo);
         GrErrorCallback(hwcGetErrorString(), FXFALSE);
@@ -1226,7 +1226,7 @@
     gc->tmu_state[0].total_mem = gc->tramSize;
 #else
     /* gc->fbOffset               = (FxU32)fxHalFbiGetMemory((SstRegs*)gc->reg_ptr); */
-    gc->fbOffset                  = (FxU32)gc->rawLfb;
+    gc->fbOffset                  = (long)gc->rawLfb;
     gc->tmuMemInfo[0].tramOffset  = 0x200000;
     gc->tmuMemInfo[0].tramSize    = 0x200000;
     gc->tmuMemInfo[1].tramOffset  = gc->tmuMemInfo[0].tramSize + gc->tmuMemInfo[0].tramOffset;
@@ -1440,7 +1440,10 @@
               gcFifo->fifoPtr ); 
 
 #ifdef __linux__
-    _grImportFifo(*driInfo.fifoPtr, *driInfo.fifoRead);
+    {
+      extern void _grImportFifo (int, int);
+      _grImportFifo(*driInfo.fifoPtr, *driInfo.fifoRead);
+    }		
 #endif
     
     /* The hw is now in a usable state from the fifo macros.
@@ -1591,7 +1594,7 @@
    * the tls gc explicitly otherwise other whacky-ness (read 'random
    * crashes' will ensue). 
    */
-  setThreadValue((FxU32)gc);
+  setThreadValue((long) gc);
   if ((gc != NULL) && gc->open) grFlush();
 
   /* Make sure that the user specified gc is not whacked */
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gsst.c.dri Glide_V3-DRI-3.10-lia/h3/glide3/src/gsst.c.dri
--- Glide_V3-DRI-3.10/h3/glide3/src/gsst.c.dri	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gsst.c.dri	Thu Aug 10 00:13:53 2000
@@ -542,30 +542,30 @@
 
 ResEntry
 _resTable[] = {
-  GR_RESOLUTION_320x200, 320, 200, /* 0x0 */
-  GR_RESOLUTION_320x240, 320,  240, /*   0x1 */
-  GR_RESOLUTION_400x256, 400,  256, /*   0x2 */
-  GR_RESOLUTION_512x384, 512,  384, /*   0x3 */
-  GR_RESOLUTION_640x200, 640,  200, /*   0x4 */
-  GR_RESOLUTION_640x350, 640,  350, /*   0x5 */
-  GR_RESOLUTION_640x400, 640,  400, /*   0x6 */
-  GR_RESOLUTION_640x480, 640,  480, /*   0x7 */
-  GR_RESOLUTION_800x600, 800,  600, /*   0x8 */
-  GR_RESOLUTION_960x720, 960,  720, /*   0x9 */
-  GR_RESOLUTION_856x480, 856,  480, /*   0xa */
-  GR_RESOLUTION_512x256, 512,  256, /*   0xb */
-  GR_RESOLUTION_1024x768, 1024,  768, /*  0xC */
-  GR_RESOLUTION_1280x1024, 1280,  1024, /* 0xD */
-  GR_RESOLUTION_1600x1200, 1600,  1200, /* 0xE */
-  GR_RESOLUTION_400x300, 400,  300, /*   0xF */
-  GR_RESOLUTION_1152x864, 1152,  864, /*  0x10 */
-  GR_RESOLUTION_1280x960, 1280,  960, /*  0x11 */
-  GR_RESOLUTION_1600x1024, 1600,  1024, /* 0x12 */
-  GR_RESOLUTION_1792x1344, 1792,  1344, /* 0x13 */
-  GR_RESOLUTION_1856x1392, 1856,  1392, /* 0x14 */
-  GR_RESOLUTION_1920x1440, 1920,  1440, /* 0x15 */
-  GR_RESOLUTION_2048x1536, 2048,  1536, /* 0x16 */
-  GR_RESOLUTION_2048x2048, 2048,  2048 /* 0x17 */
+  { GR_RESOLUTION_320x200, 320, 200 }, /* 0x0 */
+  { GR_RESOLUTION_320x240, 320,  240 }, /*   0x1 */
+  { GR_RESOLUTION_400x256, 400,  256 }, /*   0x2 */
+  { GR_RESOLUTION_512x384, 512,  384 }, /*   0x3 */
+  { GR_RESOLUTION_640x200, 640,  200 }, /*   0x4 */
+  { GR_RESOLUTION_640x350, 640,  350 }, /*   0x5 */
+  { GR_RESOLUTION_640x400, 640,  400 }, /*   0x6 */
+  { GR_RESOLUTION_640x480, 640,  480 }, /*   0x7 */
+  { GR_RESOLUTION_800x600, 800,  600 }, /*   0x8 */
+  { GR_RESOLUTION_960x720, 960,  720 }, /*   0x9 */
+  { GR_RESOLUTION_856x480, 856,  480 }, /*   0xa */
+  { GR_RESOLUTION_512x256, 512,  256 }, /*   0xb */
+  { GR_RESOLUTION_1024x768, 1024,  768 }, /*  0xC */
+  { GR_RESOLUTION_1280x1024, 1280,  1024 }, /* 0xD */
+  { GR_RESOLUTION_1600x1200, 1600,  1200 }, /* 0xE */
+  { GR_RESOLUTION_400x300, 400,  300 }, /*   0xF */
+  { GR_RESOLUTION_1152x864, 1152,  864 }, /*  0x10 */
+  { GR_RESOLUTION_1280x960, 1280,  960 }, /*  0x11 */
+  { GR_RESOLUTION_1600x1024, 1600,  1024 }, /* 0x12 */
+  { GR_RESOLUTION_1792x1344, 1792,  1344 }, /* 0x13 */
+  { GR_RESOLUTION_1856x1392, 1856,  1392 }, /* 0x14 */
+  { GR_RESOLUTION_1920x1440, 1920,  1440 }, /* 0x15 */
+  { GR_RESOLUTION_2048x1536, 2048,  1536 }, /* 0x16 */
+  { GR_RESOLUTION_2048x2048, 2048,  2048 } /* 0x17 */
 };
 
 /* ---------------------------------------------
@@ -756,8 +756,8 @@
     gc->bufferSwaps[t] = 0xffffffff;
   }
   
-  gc->bufferSwaps[0] = ((FxU32) gc->cmdTransportInfo.fifoPtr -
-                        (FxU32) gc->cmdTransportInfo.fifoStart);
+  gc->bufferSwaps[0] = ((long) gc->cmdTransportInfo.fifoPtr -
+                        (long) gc->cmdTransportInfo.fifoStart);
   
   gc->swapsPending = 1;
   
@@ -946,7 +946,7 @@
    * current gc. This gc is valid for all threads in the fullscreen
    * context.
    */
-  setThreadValue( (FxU32)&_GlideRoot.GCs[_GlideRoot.current_sst] );
+  setThreadValue( (long)&_GlideRoot.GCs[_GlideRoot.current_sst] );
   
   {
     /* Partial Argument Validation */
@@ -1076,12 +1076,12 @@
     for (buffer = 0; buffer < nColBuffers; buffer++) {
       gc->buffers[buffer] = bufInfo->colBuffStart[buffer];
       GDBG_INFO(80, "Buffer %d:  Start: 0x%x\n", buffer, gc->buffers[buffer]);
-      gc->lfbBuffers[buffer] = (FxU32)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
+      gc->lfbBuffers[buffer] = (long)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
     }
     if (nAuxBuffers != 0) {
       gc->buffers[buffer] = bufInfo->auxBuffStart;
       GDBG_INFO(80, "Aux Buffer:  Start: 0x%x\n", gc->buffers[buffer]);
-      gc->lfbBuffers[buffer] = (FxU32)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
+      gc->lfbBuffers[buffer] = (long)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
     }
   
     vInfo->hWnd     = gc->grHwnd;
@@ -1190,7 +1190,7 @@
     gc->tBuffer.bufBPP = 0xffffffff; /* Don't matter to me */
 
     GDBG_INFO(1, "autoBump: 0x%x\n", _GlideRoot.environment.autoBump);
-    if (gc->cmdTransportInfo.autoBump = _GlideRoot.environment.autoBump) {
+    if ((gc->cmdTransportInfo.autoBump = _GlideRoot.environment.autoBump) != 0) {
       if (!hwcInitFifo( bInfo, gc->cmdTransportInfo.autoBump)) {
         hwcRestoreVideo(bInfo);
         GrErrorCallback(hwcGetErrorString(), FXFALSE);
@@ -1226,7 +1226,7 @@
     gc->tmu_state[0].total_mem = gc->tramSize;
 #else
     /* gc->fbOffset               = (FxU32)fxHalFbiGetMemory((SstRegs*)gc->reg_ptr); */
-    gc->fbOffset                  = (FxU32)gc->rawLfb;
+    gc->fbOffset                  = (long)gc->rawLfb;
     gc->tmuMemInfo[0].tramOffset  = 0x200000;
     gc->tmuMemInfo[0].tramSize    = 0x200000;
     gc->tmuMemInfo[1].tramOffset  = gc->tmuMemInfo[0].tramSize + gc->tmuMemInfo[0].tramOffset;
@@ -1440,7 +1440,10 @@
               gcFifo->fifoPtr ); 
 
 #ifdef __linux__
-    _grImportFifo(*driInfo.fifoPtr, *driInfo.fifoRead);
+    {
+      extern void _grImportFifo (int, int);
+      _grImportFifo(*driInfo.fifoPtr, *driInfo.fifoRead);
+    }		
 #endif
     
     /* The hw is now in a usable state from the fifo macros.
@@ -1591,7 +1594,7 @@
    * the tls gc explicitly otherwise other whacky-ness (read 'random
    * crashes' will ensue). 
    */
-  setThreadValue((FxU32)gc);
+  setThreadValue((long) gc);
   if ((gc != NULL) && gc->open) grFlush();
 
   /* Make sure that the user specified gc is not whacked */
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gsst.c.save Glide_V3-DRI-3.10-lia/h3/glide3/src/gsst.c.save
--- Glide_V3-DRI-3.10/h3/glide3/src/gsst.c.save	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gsst.c.save	Wed Aug  9 19:50:51 2000
@@ -937,7 +937,7 @@
    * current gc. This gc is valid for all threads in the fullscreen
    * context.
    */
-  setThreadValue( (FxU32)&_GlideRoot.GCs[_GlideRoot.current_sst] );
+  setThreadValue( (long)&_GlideRoot.GCs[_GlideRoot.current_sst] );
   
   {
     /* Partial Argument Validation */
@@ -1056,12 +1056,12 @@
     for (buffer = 0; buffer < nColBuffers; buffer++) {
       gc->buffers[buffer] = bufInfo->colBuffStart[buffer];
       GDBG_INFO(80, "Buffer %d:  Start: 0x%x\n", buffer, gc->buffers[buffer]);
-      gc->lfbBuffers[buffer] = (FxU32)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
+      gc->lfbBuffers[buffer] = (long)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
     }
     if (nAuxBuffers != 0) {
       gc->buffers[buffer] = bufInfo->auxBuffStart;
       GDBG_INFO(80, "Aux Buffer:  Start: 0x%x\n", gc->buffers[buffer]);
-      gc->lfbBuffers[buffer] = (FxU32)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
+      gc->lfbBuffers[buffer] = (long)gc->rawLfb + bufInfo->lfbBuffAddr[buffer];
     }
   
     vInfo->hWnd     = gc->grHwnd;
@@ -1552,7 +1552,7 @@
    * the tls gc explicitly otherwise other whacky-ness (read 'random
    * crashes' will ensue). 
    */
-  setThreadValue((FxU32)gc);
+  setThreadValue((long)gc);
   if ((gc != NULL) && gc->open) grFlush();
 
   /* Make sure that the user specified gc is not whacked */
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gtexdl.c Glide_V3-DRI-3.10-lia/h3/glide3/src/gtexdl.c
--- Glide_V3-DRI-3.10/h3/glide3/src/gtexdl.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gtexdl.c	Thu Aug 10 00:05:56 2000
@@ -417,7 +417,7 @@
         while(i < start + slopCount) {
           FxU32 entry;
           
-          entry = (0x80000000 | ((i & 0xFE) << 23) | pal->data[i] & 0xFFFFFF);
+          entry = (0x80000000 | ((i & 0xFE) << 23) | (pal->data[i] & 0xFFFFFF));
           
           gc->state.shadow.paletteRow[i>>3].data[i&7] = entry;
           REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)], entry );
@@ -435,7 +435,7 @@
         while(i < endIndex) {
           FxU32 entry;
           
-          entry = (0x80000000 | ((i & 0xFE) << 23) | pal->data[i] & 0xFFFFFF);
+          entry = (0x80000000 | ((i & 0xFE) << 23) | (pal->data[i] & 0xFFFFFF));
           
           gc->state.shadow.paletteRow[i>>3].data[i&7] = entry;
           REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)], entry );
@@ -454,7 +454,7 @@
         while(i <= end) {
           FxU32 entry;
           
-          entry = (0x80000000 | ((i & 0xFE) << 23) | pal->data[i] & 0xFFFFFF);
+          entry = (0x80000000 | ((i & 0xFE) << 23) | (pal->data[i] & 0xFFFFFF));
           
           gc->state.shadow.paletteRow[i>>3].data[i&7] = entry;
           REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)], entry );
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/gthread.c Glide_V3-DRI-3.10-lia/h3/glide3/src/gthread.c
--- Glide_V3-DRI-3.10/h3/glide3/src/gthread.c	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/gthread.c	Wed Aug  9 15:02:18 2000
@@ -63,13 +63,13 @@
 
 } /* initThreadStorage */
 
-void setThreadValue( FxU32 value ) {
+void setThreadValue( long value ) {
     GR_CHECK_F( "setThreadValue", !threadInit, "Thread storage not initialized\n" );
     TlsSetValue( _GlideRoot.tlsIndex, (void*)value );
 }
 
 #pragma warning (4:4035)        /* No return value */
-FxU32 getThreadValueSLOW( void ) {
+long getThreadValueSLOW( void ) {
     GR_CHECK_F( "getThreadValue", !threadInit, "Thread storage not initialized\n" );
 
 #if 0
@@ -122,7 +122,7 @@
 {
 }
 
-void setThreadValue( FxU32 value )
+void setThreadValue( long value )
 {
 	_threadValueMacOS = value;
 }
@@ -157,18 +157,18 @@
 #include "fxglide.h"
 #include "fxcmd.h"
 
-FxU32 threadValueLinux;
+long threadValueLinux;
 
 void initThreadStorage(void)
 {
 }
 
-void setThreadValue( FxU32 value )
+void setThreadValue( long value )
 {
 	threadValueLinux = value;
 }
 
-FxU32 getThreadValueSLOW( void )
+long getThreadValueSLOW( void )
 {
 	return threadValueLinux;
 }
diff -urN Glide_V3-DRI-3.10/h3/glide3/src/makefile.linux Glide_V3-DRI-3.10-lia/h3/glide3/src/makefile.linux
--- Glide_V3-DRI-3.10/h3/glide3/src/makefile.linux	Thu Mar  2 14:53:42 2000
+++ Glide_V3-DRI-3.10-lia/h3/glide3/src/makefile.linux	Wed Aug  9 13:34:45 2000
@@ -43,7 +43,7 @@
 
 FX_GLIDE_REAL_HW=       1
 FX_GLIDE_NO_FIFO=       1
-FX_GLIDE_CTRISETUP =    0
+FX_GLIDE_CTRISETUP =    1
 
 HWSPEC          =       fifo.c
 LCDEFS          +=      -DH3 $(CMDXPORTDEFS)
diff -urN Glide_V3-DRI-3.10/h3/glide3/tests/.gdbinit Glide_V3-DRI-3.10-lia/h3/glide3/tests/.gdbinit
--- Glide_V3-DRI-3.10/h3/glide3/tests/.gdbinit	Wed Dec 31 16:00:00 1969
+++ Glide_V3-DRI-3.10-lia/h3/glide3/tests/.gdbinit	Wed Aug  9 15:46:12 2000
@@ -0,0 +1,3 @@
+dir /r/erikson/usr/src/redhat/BUILD/Glide_V3-DRI-3.10/h3/glide3/src:/r/erikson/usr/src/redhat/BUILD/Glide_V3-DRI-3.10/h3/minihwc:/r/erikson/usr/src/redhat/BUILD/XFree86-4.0/xc/lib/Xxf86vm
+set gdbg_debuglevel[80]%5
+set gdbg_debuglevel[280]%5
diff -urN Glide_V3-DRI-3.10/h3/incsrc/gdebug.h Glide_V3-DRI-3.10-lia/h3/incsrc/gdebug.h
--- Glide_V3-DRI-3.10/h3/incsrc/gdebug.h	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/incsrc/gdebug.h	Wed Aug  9 23:08:21 2000
@@ -67,12 +67,21 @@
 #pragma disable_message (111, 201, 302)
 #endif /* defined(__WATCOMC__) || defined(__WATCOM_CPLUSPLUS__) */
 
-#define GDBG_INFO      0 && (unsigned long)
-#define GDBG_INFO_MORE 0 && (unsigned long)
-#define GDBG_PRINTF    0 && (unsigned long)
+#ifdef __GNUC__
+# define GDBG_INFO(x...)
+# define GDBG_INFO_MORE(x...)
+# define GDBG_PRINTF(x...)
 
-#define GDBG_ERROR_SET_CALLBACK   0 && (unsigned long)
-#define GDBG_ERROR_CLEAR_CALLBACK 0 && (unsigned long)
+# define GDBG_ERROR_SET_CALLBACK(x...)
+# define GDBG_ERROR_CLEAR_CALLBACK(x...)
+#else
+# define GDBG_INFO      0 && (unsigned long)
+# define GDBG_INFO_MORE 0 && (unsigned long)
+# define GDBG_PRINTF    0 && (unsigned long)
+
+# define GDBG_ERROR_SET_CALLBACK   0 && (unsigned long)
+# define GDBG_ERROR_CLEAR_CALLBACK 0 && (unsigned long)
+#endif
 
 #define GDBG_GET_DEBUGLEVEL(x) 0
 #define GDBG_SET_DEBUGLEVEL(a,b)
diff -urN Glide_V3-DRI-3.10/h3/incsrc/h3defs.h Glide_V3-DRI-3.10-lia/h3/incsrc/h3defs.h
--- Glide_V3-DRI-3.10/h3/incsrc/h3defs.h	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/incsrc/h3defs.h	Thu Aug 10 00:02:29 2000
@@ -56,11 +56,21 @@
 
 // this crazy macro tests the sign bit of a float by loading it into
 // an integer register and then testing the sign bit of the integer
-#define FLOAT_ISNEG(f) ((*(int *)(&(f))) < 0)
+#ifdef __ia64__
+  /* On IA-64, it's faster to do this the obvious way... --davidm 00/08/09 */
+# define FLOAT_ISNEG(f)	((f) < 0.0)
+#else
+# define FLOAT_ISNEG(f) ((*(int *)(&(f))) < 0)
+#endif
 
 // these crazy macros returns the sign of a number (1 if >= 0; -1 if < 0)
-#define ISIGN(x) (((x) | 0x40000000L) >> 30)
-#define FSIGN(f) ISIGN(*(long *)&f)
+#ifdef __ia64__
+# define ISIGN(x) ((x) >= 0 ? 1 : -1)
+# define FSIGN(f) ((f) >= 0.0 ? 1 : -1)
+#else
+# define ISIGN(x) (((x) | 0x40000000L) >> 30)
+# define FSIGN(f) ISIGN(*(long *)&f)
+#endif
 
 #define BIT(n)  (1UL<<(n))
 #define SST_MASK(n) (0xFFFFFFFFL >> (32-(n)))
@@ -1257,9 +1267,9 @@
 
 //----------------- useful addressing macros -----------------------
 // return pointer to SST at specified WRAP, CHIP, or TREX
-#define SST_WRAP(sst,n) ((SstRegs *)((n)*0x4000+(FxI32)(sst)))
-#define SST_CHIP(sst,n) ((SstRegs *)((n)*0x400+(FxI32)(sst)))
-#define SST_TMU(sst,n)  ((SstRegs *)((0x800<<(n))+(FxI32)(sst)))
+#define SST_WRAP(sst,n) ((SstRegs *)((n)*0x4000+(long)(sst)))
+#define SST_CHIP(sst,n) ((SstRegs *)((n)*0x400+(long)(sst)))
+#define SST_TMU(sst,n)  ((SstRegs *)((0x800<<(n))+(long)(sst)))
 #define SST_TREX(sst,n) SST_TMU(sst,n)
 
 // offsets from the base of memBaseAddr0
@@ -1304,7 +1314,7 @@
 
 #define SST_IS_REGISTER_ADDR(a)  ( (a) >= SST_IO_OFFSET       && (a) < SST_TEX_OFFSET )
 
-#define SST_BASE_ADDRESS(sst)   ((FxI32)(sst)-SST_3D_OFFSET)
+#define SST_BASE_ADDRESS(sst)   ((long)(sst)-SST_3D_OFFSET)
 #define SST_IO_ADDRESS(sst)     (SST_IO_OFFSET+SST_BASE_ADDRESS(sst))
 #define SST_CMDAGP_ADDRESS(sst) (SST_CMDAGP_OFFSET+SST_BASE_ADDRESS(sst))
 #define SST_GUI_ADDRESS(sst)    (SST_2D_OFFSET+SST_BASE_ADDRESS(sst))
diff -urN Glide_V3-DRI-3.10/h3/incsrc/h3info.h Glide_V3-DRI-3.10-lia/h3/incsrc/h3info.h
--- Glide_V3-DRI-3.10/h3/incsrc/h3info.h	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/incsrc/h3info.h	Wed Aug  9 14:15:09 2000
@@ -28,7 +28,11 @@
 // basic data types
 #define FxU8  unsigned char
 #define FxU16 unsigned short
-#define FxU32 unsigned long
+# ifdef __LP64__
+#  define FxU32 unsigned int
+# else
+#  define FxU32 unsigned long
+# endif
 #define FxBool int
 // defn of registers not reqd, treat (SstRegs *) as (void *)
 typedef void SstRegs;
diff -urN Glide_V3-DRI-3.10/h3/incsrc/h3regs.h Glide_V3-DRI-3.10-lia/h3/incsrc/h3regs.h
--- Glide_V3-DRI-3.10/h3/incsrc/h3regs.h	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/incsrc/h3regs.h	Wed Aug  9 18:21:11 2000
@@ -45,7 +45,11 @@
 // STB Begin Changes
 // STB-SR 1/13/98 Adding code for bj
 #ifdef _H2INC
+# ifdef __LP64__
+typedef unsigned int   FxU32;
+# else
 typedef unsigned long   FxU32;
+# endif
 #endif
 // STB End Changes
 
@@ -211,8 +215,8 @@
 //----------------- SST chip 3D layout -------------------------
 // registers are in groups of 8 for easy decode
 typedef struct vertex_Rec {
-    unsigned long x;            // 12.4 format
-    unsigned long y;            // 12.4
+    FxU32 x;            // 12.4 format
+    FxU32 y;            // 12.4
 } vtxRec;
 
 typedef volatile struct sstregs {       // THE 3D CHIP
@@ -223,118 +227,118 @@
     vtxRec vB;
     vtxRec vC;
 
-    long r;             // 12.12        Parameters
-    long g;             // 12.12
-    long b;             // 12.12
-    long z;             // 20.12
-    long a;             // 12.12
-    long s;             // 14.18
-    long t;             // 14.18
-    long w;             //  2.30
-
-    long drdx;                  // X Gradients
-    long dgdx;
-    long dbdx;
-    long dzdx;
-    long dadx;
-    long dsdx;
-    long dtdx;
-    long dwdx;
-
-    long drdy;                  // Y Gradients
-    long dgdy;
-    long dbdy;
-    long dzdy;
-    long dady;
-    long dsdy;
-    long dtdy;
-    long dwdy;
+    FxI32 r;             // 12.12        Parameters
+    FxI32 g;             // 12.12
+    FxI32 b;             // 12.12
+    FxI32 z;             // 20.12
+    FxI32 a;             // 12.12
+    FxI32 s;             // 14.18
+    FxI32 t;             // 14.18
+    FxI32 w;             //  2.30
+
+    FxI32 drdx;                  // X Gradients
+    FxI32 dgdx;
+    FxI32 dbdx;
+    FxI32 dzdx;
+    FxI32 dadx;
+    FxI32 dsdx;
+    FxI32 dtdx;
+    FxI32 dwdx;
+
+    FxI32 drdy;                  // Y Gradients
+    FxI32 dgdy;
+    FxI32 dbdy;
+    FxI32 dzdy;
+    FxI32 dady;
+    FxI32 dsdy;
+    FxI32 dtdy;
+    FxI32 dwdy;
 
-    unsigned long triangleCMD;  // execute a triangle command (float)
-    unsigned long reservedA;
+    FxU32 triangleCMD;  // execute a triangle command (float)
+    FxU32 reservedA;
     vtxRec FvA;                 // floating point version
     vtxRec FvB;
     vtxRec FvC;
 
-    long Fr;                    // floating point version
-    long Fg;
-    long Fb;
-    long Fz;
-    long Fa;
-    long Fs;
-    long Ft;
-    long Fw;
-
-    long Fdrdx;
-    long Fdgdx;
-    long Fdbdx;
-    long Fdzdx;
-    long Fdadx;
-    long Fdsdx;
-    long Fdtdx;
-    long Fdwdx;
-
-    long Fdrdy;
-    long Fdgdy;
-    long Fdbdy;
-    long Fdzdy;
-    long Fdady;
-    long Fdsdy;
-    long Fdtdy;
-    long Fdwdy;
-
-    unsigned long FtriangleCMD;         // execute a triangle command
-    unsigned long fbzColorPath;         // color select and combine
-    unsigned long fogMode;              // fog Mode
-    unsigned long alphaMode;            // alpha Mode
-    unsigned long fbzMode;              // framebuffer and Z mode
-    unsigned long lfbMode;              // linear framebuffer Mode
-    unsigned long clipLeftRight;        // (6)10(6)10
-    unsigned long clipBottomTop;        // (6)10(6)10
-
-    unsigned long nopCMD;       // execute a nop command
-    unsigned long fastfillCMD;  // execute a fast fill command
-    unsigned long swapbufferCMD;// execute a swapbuffer command
-    unsigned long fogColor;             // (8)888
-    unsigned long zaColor;              // 8(8)16
-    unsigned long chromaKey;            // (8)888
-    unsigned long chromaRange;
-    unsigned long userIntrCmd;
-
-    unsigned long stipple;              // 32 bits, MSB masks pixels
-    unsigned long c0;                   // 8.8.8.8 (ARGB)
-    unsigned long c1;                   // 8.8.8.8 (ARGB)
+    FxI32 Fr;                    // floating point version
+    FxI32 Fg;
+    FxI32 Fb;
+    FxI32 Fz;
+    FxI32 Fa;
+    FxI32 Fs;
+    FxI32 Ft;
+    FxI32 Fw;
+
+    FxI32 Fdrdx;
+    FxI32 Fdgdx;
+    FxI32 Fdbdx;
+    FxI32 Fdzdx;
+    FxI32 Fdadx;
+    FxI32 Fdsdx;
+    FxI32 Fdtdx;
+    FxI32 Fdwdx;
+
+    FxI32 Fdrdy;
+    FxI32 Fdgdy;
+    FxI32 Fdbdy;
+    FxI32 Fdzdy;
+    FxI32 Fdady;
+    FxI32 Fdsdy;
+    FxI32 Fdtdy;
+    FxI32 Fdwdy;
+
+    FxU32 FtriangleCMD;         // execute a triangle command
+    FxU32 fbzColorPath;         // color select and combine
+    FxU32 fogMode;              // fog Mode
+    FxU32 alphaMode;            // alpha Mode
+    FxU32 fbzMode;              // framebuffer and Z mode
+    FxU32 lfbMode;              // linear framebuffer Mode
+    FxU32 clipLeftRight;        // (6)10(6)10
+    FxU32 clipBottomTop;        // (6)10(6)10
+
+    FxU32 nopCMD;       // execute a nop command
+    FxU32 fastfillCMD;  // execute a fast fill command
+    FxU32 swapbufferCMD;// execute a swapbuffer command
+    FxU32 fogColor;             // (8)888
+    FxU32 zaColor;              // 8(8)16
+    FxU32 chromaKey;            // (8)888
+    FxU32 chromaRange;
+    FxU32 userIntrCmd;
+
+    FxU32 stipple;              // 32 bits, MSB masks pixels
+    FxU32 c0;                   // 8.8.8.8 (ARGB)
+    FxU32 c1;                   // 8.8.8.8 (ARGB)
     struct {                            // statistic gathering variables
-        unsigned long fbiPixelsIn;
-        unsigned long fbiChromaFail;
-        unsigned long fbiZfuncFail;
-        unsigned long fbiAfuncFail;
-        unsigned long fbiPixelsOut;
+        FxU32 fbiPixelsIn;
+        FxU32 fbiChromaFail;
+        FxU32 fbiZfuncFail;
+        FxU32 fbiAfuncFail;
+        FxU32 fbiPixelsOut;
     } stats;
 
-    unsigned long fogTable[32];         // 64 entries, 2 per word, 2 bytes each
+    FxU32 fogTable[32];         // 64 entries, 2 per word, 2 bytes each
 
-    unsigned long reservedB[3];
+    FxU32 reservedB[3];
 
-    unsigned long colBufferAddr;
-    unsigned long colBufferStride;
-    unsigned long auxBufferAddr;
-    unsigned long auxBufferStride;
-    unsigned long reservedC;
-
-    unsigned long clipLeftRight1;
-    unsigned long clipBottomTop1;
-    unsigned long reservedD[6];         // NOTE: used to store TMUprivate ptr
+    FxU32 colBufferAddr;
+    FxU32 colBufferStride;
+    FxU32 auxBufferAddr;
+    FxU32 auxBufferStride;
+    FxU32 reservedC;
+
+    FxU32 clipLeftRight1;
+    FxU32 clipBottomTop1;
+    FxU32 reservedD[6];         // NOTE: used to store TMUprivate ptr
                                         
 
-    unsigned long reservedE[8];
+    FxU32 reservedE[8];
 
-    unsigned long reservedF[3];  
-    unsigned long swapBufferPend;
-    unsigned long leftOverlayBuf;
-    unsigned long rightOverlayBuf;
-    unsigned long fbiSwapHistory;
-    unsigned long fbiTrianglesOut;      // triangles out counter
+    FxU32 reservedF[3];  
+    FxU32 swapBufferPend;
+    FxU32 leftOverlayBuf;
+    FxU32 rightOverlayBuf;
+    FxU32 fbiSwapHistory;
+    FxU32 fbiTrianglesOut;      // triangles out counter
 
     FxU32 sSetupMode;
     FxU32 sVx;
@@ -356,27 +360,27 @@
 
     FxU32 sDrawTriCMD;
     FxU32 sBeginTriCMD;
-    unsigned long reservedG[6];
+    FxU32 reservedG[6];
 
-    unsigned long reservedH[8];
+    FxU32 reservedH[8];
 
-    unsigned long reservedI[8];
+    FxU32 reservedI[8];
 
-    unsigned long textureMode;          // texture Mode
-    unsigned long tLOD;                 // texture LOD settings
-    unsigned long tDetail;              // texture detail settings
-    unsigned long texBaseAddr;          // current texture base address
-    unsigned long texBaseAddr1;
-    unsigned long texBaseAddr2;
-    unsigned long texBaseAddr38;
-    unsigned long trexInit0;            // hardware init bits
-    unsigned long trexInit1;            // hardware init bits
+    FxU32 textureMode;          // texture Mode
+    FxU32 tLOD;                 // texture LOD settings
+    FxU32 tDetail;              // texture detail settings
+    FxU32 texBaseAddr;          // current texture base address
+    FxU32 texBaseAddr1;
+    FxU32 texBaseAddr2;
+    FxU32 texBaseAddr38;
+    FxU32 trexInit0;            // hardware init bits
+    FxU32 trexInit1;            // hardware init bits
    
-    unsigned long nccTable0[12];        // NCC decode tables, bits are packed
-    unsigned long nccTable1[12];        // 4 words Y, 4 words I, 4 words Q
+    FxU32 nccTable0[12];        // NCC decode tables, bits are packed
+    FxU32 nccTable1[12];        // 4 words Y, 4 words I, 4 words Q
 
-    unsigned long tChromaKeyMin;
-    unsigned long tChromaKeyMax;
+    FxU32 tChromaKeyMin;
+    FxU32 tChromaKeyMax;
 } SstRegs;
 
 // STB Begin changes
diff -urN Glide_V3-DRI-3.10/h3/minihwc/hwcext.h Glide_V3-DRI-3.10-lia/h3/minihwc/hwcext.h
--- Glide_V3-DRI-3.10/h3/minihwc/hwcext.h	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/minihwc/hwcext.h	Wed Aug  9 14:36:16 2000
@@ -192,9 +192,8 @@
 
 /* Returned from HWCEXT_GETLINEARADDR */
 typedef struct hwcExtLinearAddrRes_s {
-  FxU32
-    numBaseAddrs,               /* # base addresses */
-    baseAddresses[HWCEXT_MAX_BASEADDR]; /* linear Addresses  */
+  FxU32 numBaseAddrs;               /* # base addresses */
+  long baseAddresses[HWCEXT_MAX_BASEADDR]; /* linear Addresses  */
 } hwcExtLinearAddrRes_t;
 
 /*
diff -urN Glide_V3-DRI-3.10/h3/minihwc/linhwc.c Glide_V3-DRI-3.10-lia/h3/minihwc/linhwc.c
--- Glide_V3-DRI-3.10/h3/minihwc/linhwc.c	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/minihwc/linhwc.c	Thu Aug 10 00:11:46 2000
@@ -67,7 +67,11 @@
 #include "lindri.h"
 
 static FxU32 fenceVar;
-#define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax");
+#ifdef __ia64__
+# define P6FENCE asm volatile("mf.a" ::: "memory");
+#else
+# define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax");
+#endif
 
 #define MAXFIFOSIZE     0x40000
 #define FIFOPAD         0x0000
@@ -144,7 +148,7 @@
   char data[128];
   char *env, *val;
   envitem *item;
-  int first=1;
+  int is_first=1;
 
   if (envinit) return;
   envinit=1;
@@ -156,9 +160,9 @@
     if (*data='\n') continue;
     val=strchr(data, '=');
     if (!val) {
-      if (first) {
+      if (is_first) {
 	fprintf(stderr, "In config file /etc/conf.3dfx/voodoo3:\n");
-	first=0;
+	is_first=0;
       }
       fprintf(stderr, "Malformed line: %s\n", data);
       continue;
@@ -231,8 +235,8 @@
   }
 
   bInfo->linearInfo.initialized = FXTRUE;
-  bInfo->linearInfo.linearAddress[0]=(FxU32)driInfo.pRegs;
-  bInfo->linearInfo.linearAddress[1]=(FxU32)driInfo.pFB;
+  bInfo->linearInfo.linearAddress[0]=(long)driInfo.pRegs;
+  bInfo->linearInfo.linearAddress[1]=(long)driInfo.pFB;
   return FXTRUE;
 }
 
@@ -745,6 +749,10 @@
 #undef FN_NAME
 } /* hwcResolutionSupported */
 
+extern void _grImportFifo (int, int);
+extern void _grInvalidateAll (void);
+extern void _grExportFifo (int *, int *);
+
 void grDRIImportFifo(int fifoPtr, int fifoRead)
 {
   _grImportFifo(fifoPtr, fifoRead);
@@ -756,5 +764,5 @@
 
 void grDRIResetSAREA()
 {
-  _grExportFifo(driInfo.fifoPtr, driInfo.fifoRead);
+  _grExportFifo((int *) driInfo.fifoPtr, (int *) driInfo.fifoRead);
 }
diff -urN Glide_V3-DRI-3.10/h3/minihwc/linhwc.c.dri Glide_V3-DRI-3.10-lia/h3/minihwc/linhwc.c.dri
--- Glide_V3-DRI-3.10/h3/minihwc/linhwc.c.dri	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/minihwc/linhwc.c.dri	Thu Aug 10 00:11:46 2000
@@ -67,7 +67,11 @@
 #include "lindri.h"
 
 static FxU32 fenceVar;
-#define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax");
+#ifdef __ia64__
+# define P6FENCE asm volatile("mf.a" ::: "memory");
+#else
+# define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax");
+#endif
 
 #define MAXFIFOSIZE     0x40000
 #define FIFOPAD         0x0000
@@ -144,7 +148,7 @@
   char data[128];
   char *env, *val;
   envitem *item;
-  int first=1;
+  int is_first=1;
 
   if (envinit) return;
   envinit=1;
@@ -156,9 +160,9 @@
     if (*data='\n') continue;
     val=strchr(data, '=');
     if (!val) {
-      if (first) {
+      if (is_first) {
 	fprintf(stderr, "In config file /etc/conf.3dfx/voodoo3:\n");
-	first=0;
+	is_first=0;
       }
       fprintf(stderr, "Malformed line: %s\n", data);
       continue;
@@ -231,8 +235,8 @@
   }
 
   bInfo->linearInfo.initialized = FXTRUE;
-  bInfo->linearInfo.linearAddress[0]=(FxU32)driInfo.pRegs;
-  bInfo->linearInfo.linearAddress[1]=(FxU32)driInfo.pFB;
+  bInfo->linearInfo.linearAddress[0]=(long)driInfo.pRegs;
+  bInfo->linearInfo.linearAddress[1]=(long)driInfo.pFB;
   return FXTRUE;
 }
 
@@ -745,6 +749,10 @@
 #undef FN_NAME
 } /* hwcResolutionSupported */
 
+extern void _grImportFifo (int, int);
+extern void _grInvalidateAll (void);
+extern void _grExportFifo (int *, int *);
+
 void grDRIImportFifo(int fifoPtr, int fifoRead)
 {
   _grImportFifo(fifoPtr, fifoRead);
@@ -756,5 +764,5 @@
 
 void grDRIResetSAREA()
 {
-  _grExportFifo(driInfo.fifoPtr, driInfo.fifoRead);
+  _grExportFifo((int *) driInfo.fifoPtr, (int *) driInfo.fifoRead);
 }
diff -urN Glide_V3-DRI-3.10/h3/minihwc/linhwc.c.save Glide_V3-DRI-3.10-lia/h3/minihwc/linhwc.c.save
--- Glide_V3-DRI-3.10/h3/minihwc/linhwc.c.save	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/minihwc/linhwc.c.save	Wed Aug  9 15:19:27 2000
@@ -64,7 +64,11 @@
 #include <X11/extensions/xf86vmode.h>
 
 static FxU32 fenceVar;
-#define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax");
+#ifdef __ia64__
+# define P6FENCE asm volatile ("mf.a" ::: "memory");
+#else
+# define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax");
+#endif
 
 #define MAXFIFOSIZE     0x40000
 #define MAXFIFOSIZE_16MB   0xff000
@@ -114,7 +118,7 @@
   char data[128];
   char *env, *val;
   envitem *item;
-  int first=1;
+  int is_first=1;
 
   if (envinit) return;
   envinit=1;
@@ -126,9 +130,9 @@
     if (*data='\n') continue;
     val=strchr(data, '=');
     if (!val) {
-      if (first) {
+      if (is_first) {
 	fprintf(stderr, "In config file /etc/conf.3dfx/voodoo3:\n");
-	first=0;
+	is_first=0;
       }
       fprintf(stderr, "Malformed line: %s\n", data);
       continue;
@@ -269,7 +273,7 @@
 
   for (bAddr = 0; bAddr < HWC_NUM_BASE_ADDR; bAddr++) {
     if ((bAddrMask >> bAddr) & 0x1) {
-      bInfo->linearInfo.linearAddress[bAddr] = (FxU32) 
+      bInfo->linearInfo.linearAddress[bAddr] = (long)
 	pciMapCardMulti(bInfo->pciInfo.vendorID, bInfo->pciInfo.deviceID,
 			0x2000000, &bInfo->deviceNum, bInfo->boardNum, bAddr);
     }
diff -urN Glide_V3-DRI-3.10/h3/minihwc/minihwc.c Glide_V3-DRI-3.10-lia/h3/minihwc/minihwc.c
--- Glide_V3-DRI-3.10/h3/minihwc/minihwc.c	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/minihwc/minihwc.c	Wed Aug  9 14:28:40 2000
@@ -1078,7 +1078,7 @@
     for (bAddr = 0; bAddr < 2; bAddr++) {
       if ((bAddrMask & (0x01UL << bAddr)) != 0x00UL) {
         bInfo->linearInfo.linearAddress[bAddr] = 
-          (FxU32)pciMapCardMulti(bInfo->pciInfo.vendorID, bInfo->pciInfo.deviceID,
+          pciMapCardMulti(bInfo->pciInfo.vendorID, bInfo->pciInfo.deviceID,
                                  0x1000000, &bInfo->deviceNum, bInfo->boardNum, bAddr);
       }
     }
@@ -1087,13 +1087,13 @@
      * unconditionally
      */
     bInfo->linearInfo.linearAddress[2] = 
-      (FxU32)pciMapCardMulti(bInfo->pciInfo.vendorID, bInfo->pciInfo.deviceID,
+      pciMapCardMulti(bInfo->pciInfo.vendorID, bInfo->pciInfo.deviceID,
                              0x1000000, &bInfo->deviceNum, bInfo->boardNum, 2);
 
     /* Does the caller want the rom bios? */
     if ((bAddrMask & 0x08UL) != 0x00UL) {
       bInfo->linearInfo.linearAddress[3] = 
-        (FxU32)pciMapCardMulti(bInfo->pciInfo.vendorID, bInfo->pciInfo.deviceID,
+        pciMapCardMulti(bInfo->pciInfo.vendorID, bInfo->pciInfo.deviceID,
                                0x1000000, &bInfo->deviceNum, bInfo->boardNum, 3);
     }
   }
diff -urN Glide_V3-DRI-3.10/h3/minihwc/minihwc.h Glide_V3-DRI-3.10-lia/h3/minihwc/minihwc.h
--- Glide_V3-DRI-3.10/h3/minihwc/minihwc.h	Thu Mar  2 14:53:43 2000
+++ Glide_V3-DRI-3.10-lia/h3/minihwc/minihwc.h	Wed Aug  9 14:36:53 2000
@@ -238,22 +238,21 @@
 typedef struct hwcLinearInfo_s {
   FxBool
     initialized;
-  FxU32
-    linearAddress[HWC_NUM_BASE_ADDR];
+  long linearAddress[HWC_NUM_BASE_ADDR];
 } hwcLinearInfo;
 
 typedef struct hwcRegInfo_s {
   FxBool
     initialized;
-  volatile FxU32
-    ioMemBase,                  /* mem base for I/O aliases */
-    cmdAGPBase,                 /* CMD/AGP register base */
-    waxBase,                    /* 2D register base */
-    sstBase,                    /* 3D register base */
-    lfbBase,                    /* 3D lfb base */
-    rawLfbBase;                 /* Raw LFB base (base address 1) */
+  volatile long
+    ioMemBase,                 /* mem base for I/O aliases */
+    cmdAGPBase,                /* CMD/AGP register base */
+    waxBase,                   /* 2D register base */
+    sstBase,                   /* 3D register base */
+    lfbBase,                   /* 3D lfb base */
+    rawLfbBase;                /* Raw LFB base (base address 1) */
 #if __POWERPC__
-  ioPortBase;                   /* PPC does I/O via a 32-bit address */
+  FxU32 ioPortBase;             /* PPC does I/O via a 32-bit address */
 #else       
   volatile FxU16
     ioPortBase,                 /* I/O base address */
diff -urN Glide_V3-DRI-3.10/set-for-dri Glide_V3-DRI-3.10-lia/set-for-dri
--- Glide_V3-DRI-3.10/set-for-dri	Wed Dec 31 16:00:00 1969
+++ Glide_V3-DRI-3.10-lia/set-for-dri	Wed Aug  9 20:25:38 2000
@@ -0,0 +1,7 @@
+for n in ./h3/glide3/src/gglide.c ./h3/glide3/src/glfb.c ./h3/glide3/src/gsst.c ./h3/minihwc/linhwc.c
+do
+	rn=$(basename $n).dri
+	echo ln -sf $rn $n
+	ln -sf $rn $n
+done
+
diff -urN Glide_V3-DRI-3.10/set-for-standalone Glide_V3-DRI-3.10-lia/set-for-standalone
--- Glide_V3-DRI-3.10/set-for-standalone	Wed Dec 31 16:00:00 1969
+++ Glide_V3-DRI-3.10-lia/set-for-standalone	Wed Aug  9 20:25:33 2000
@@ -0,0 +1,7 @@
+for n in ./h3/glide3/src/gglide.c ./h3/glide3/src/glfb.c ./h3/glide3/src/gsst.c ./h3/minihwc/linhwc.c
+do
+	rn=$(basename $n).save
+	echo ln -sf $rn $n
+	ln -sf $rn $n
+done
+
diff -urN Glide_V3-DRI-3.10/swlibs/fxmisc/3dfx.h Glide_V3-DRI-3.10-lia/swlibs/fxmisc/3dfx.h
--- Glide_V3-DRI-3.10/swlibs/fxmisc/3dfx.h	Thu Mar  2 14:53:51 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/fxmisc/3dfx.h	Wed Aug  9 14:10:27 2000
@@ -30,8 +30,13 @@
 typedef signed   char   FxI8;
 typedef unsigned short  FxU16;
 typedef signed   short  FxI16;
+#ifdef __LP64__
+typedef signed   int    FxI32;
+typedef unsigned int    FxU32;
+#else
 typedef signed   long   FxI32;
 typedef unsigned long   FxU32;
+#endif
 typedef int             FxBool;
 typedef float           FxFloat;
 typedef double          FxDouble;
diff -urN Glide_V3-DRI-3.10/swlibs/fxmisc/fximg.c Glide_V3-DRI-3.10-lia/swlibs/fxmisc/fximg.c
--- Glide_V3-DRI-3.10/swlibs/fxmisc/fximg.c	Thu Mar  2 14:53:51 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/fxmisc/fximg.c	Wed Aug  9 22:54:08 2000
@@ -197,7 +197,7 @@
       	case 0xDA01:
 			*type = IMG_RGT;
 			break;
-      	case 'EL':
+      	case (('E'<<8) | 'L'):
 	  cookie = 0;
 	  if ( ( c = fgetc( stream ) ) = EOF )
 	    {
@@ -211,7 +211,7 @@
 	      return FXFALSE;
 	    }
 	  cookie = (cookie << 8) | c;
-	  if (cookie = 'RS')
+	  if (cookie = (('R'<<8)|'S'))
 	    *type = IMG_SRLE;
 	  break;
       	default: // Might Be TGA
@@ -1470,7 +1470,7 @@
 {
 	imgErrorString = "Image write error.";
 	if ( 0 > fprintf( stream, "P6\n" ) ) return FXFALSE;
-	if ( 0 > fprintf( stream, "# PPM Comment\n", info->width ) ) return FXFALSE;
+	if ( 0 > fprintf( stream, "# PPM Comment\n" ) ) return FXFALSE;
 	if ( 0 > fprintf( stream, "%d ", info->width ) ) return FXFALSE;
 	if ( 0 > fprintf( stream, "%d\n", info->height ) ) return FXFALSE;
 	if ( 0 > fprintf( stream, "255\n" ) ) return FXFALSE;
@@ -1878,7 +1878,7 @@
 	if (prefix) {					// if there's a path prefix
 	    char buf[1024], *p;
 	    strcpy(buf,prefix);			// copy and replace semicolon
-	    if (p = strchr(buf,';')) *p = '\0';
+	    if ((p = strchr(buf,';')) != NULL) *p = '\0';
 	    fprintf(stderr,buf);
 	    fprintf(stderr,"/");
 	}
diff -urN Glide_V3-DRI-3.10/swlibs/fxmisc/fxos.c Glide_V3-DRI-3.10-lia/swlibs/fxmisc/fxos.c
--- Glide_V3-DRI-3.10/swlibs/fxmisc/fxos.c	Thu Mar  2 14:53:51 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/fxmisc/fxos.c	Wed Aug  9 22:52:44 2000
@@ -97,7 +97,7 @@
 
     // first try and open up the file in the current directory
     if (pprefix) *pprefix = NULL;
-    if (file = fopen(filename,mode))
+    if ((file = fopen(filename,mode)) != NULL)
         return file;
     if (path = NULL)
         return NULL;
@@ -114,7 +114,7 @@
         strcat(nameWithPath,"/");               // add directory separator
         strcat(nameWithPath,filename);          // add filename
         if (pprefix) *pprefix = path;           // save the prefix
-        if (file = fopen(nameWithPath,mode))
+        if ((file = fopen(nameWithPath,mode)) != NULL)
             return file;
         path = psemi;                           // advance to next path element
         if (path)
diff -urN Glide_V3-DRI-3.10/swlibs/fxmisc/linutil.c Glide_V3-DRI-3.10-lia/swlibs/fxmisc/linutil.c
--- Glide_V3-DRI-3.10/swlibs/fxmisc/linutil.c	Thu Mar  2 14:53:51 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/fxmisc/linutil.c	Wed Aug  9 23:53:52 2000
@@ -28,7 +28,7 @@
 #include <string.h>
 #include "linutil.h"
 
-static init_done=0;
+static int init_done=0;
 static struct termios save_termdata;
 
 static void reset_term() {
diff -urN Glide_V3-DRI-3.10/swlibs/include/make/3dfx.mak Glide_V3-DRI-3.10-lia/swlibs/include/make/3dfx.mak
--- Glide_V3-DRI-3.10/swlibs/include/make/3dfx.mak	Thu Mar  2 14:53:51 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/include/make/3dfx.mak	Wed Aug  9 22:48:55 2000
@@ -84,8 +84,12 @@
 # assembly language in grDrawTriangle. Larger optimization removes
 # an extra push in the calling sequence.
 #
+#if 0
 CNODEBUG       = -O6 -m486 -fomit-frame-pointer -funroll-loops \
 	-fexpensive-optimizations -ffast-math -DBIG_OPT
+#else
+CNODEBUG       = -g -O3 -fomit-frame-pointer -fexpensive-optimizations -ffast-math -DBIG_OPT
+#endif
 
 CDEBUG	       = -g -O
 # Profiling
@@ -112,7 +116,7 @@
 
 # if we are not debugging then replace debug flags with nodebug flags
 
-# DEBUG = xx
+#DEBUG = xx
 
 ifdef DEBUG
 CDEBUG   += $(DEBUGDEFS)
diff -urN Glide_V3-DRI-3.10/swlibs/newpci/pcilib/fxlinux.c Glide_V3-DRI-3.10-lia/swlibs/newpci/pcilib/fxlinux.c
--- Glide_V3-DRI-3.10/swlibs/newpci/pcilib/fxlinux.c	Thu Mar  2 14:53:51 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/newpci/pcilib/fxlinux.c	Wed Aug  9 14:48:28 2000
@@ -47,10 +47,10 @@
 static FxBool pciOutputStringLinux(const char *msg);
 static FxBool pciInitializeLinux(void);
 static FxBool pciShutdownLinux(void);
-static FxBool pciMapLinearLinux(FxU32, FxU32 physical_addr, FxU32 *linear_addr,
+static FxBool pciMapLinearLinux(FxU32, FxU32 physical_addr, long *linear_addr,
 				FxU32 *length);
-static FxBool pciUnmapLinearLinux(FxU32 linear_addr, FxU32 length);
-static FxBool pciSetPermissionLinux(const FxU32, const FxU32, const FxBool);
+static FxBool pciUnmapLinearLinux(long linear_addr, FxU32 length);
+static FxBool pciSetPermissionLinux(const long, const FxU32, const FxBool);
 static FxU8 pciPortInByteLinux(unsigned short port);
 static FxU16 pciPortInWordLinux(unsigned short port);
 static FxU32 pciPortInLongLinux(unsigned short port);
@@ -216,7 +216,7 @@
 
 static FxBool 
 pciMapLinearLinux(FxU32 bus, FxU32 physical_addr,
-		  FxU32 *linear_addr, FxU32 *length) 
+		  long *linear_addr, FxU32 *length) 
 {
   int fd;
   if (linuxDevFd!=-1) {
@@ -227,7 +227,7 @@
       return FXFALSE;
     }
   }
-  if (((*linear_addr)=(FxU32)mmap(0, *length, PROT_READ|PROT_WRITE,
+  if (((*linear_addr)=(long)mmap(0, *length, PROT_READ|PROT_WRITE,
 				  MAP_SHARED, fd, physical_addr))<0) {
     if (fd!=linuxDevFd) close(fd);
     return FXFALSE;
@@ -237,14 +237,14 @@
 }
 
 static FxBool
-pciUnmapLinearLinux(FxU32 linear_addr, FxU32 length) 
+pciUnmapLinearLinux(long linear_addr, FxU32 length) 
 {
-  munmap((void*)linear_addr, length);
+  munmap((void *) linear_addr, length);
   return FXTRUE;
 }
 
 static FxBool
-pciSetPermissionLinux(const FxU32 addrBase, const FxU32 addrLen, 
+pciSetPermissionLinux(const long addrBase, const FxU32 addrLen, 
 		      const FxBool writePermP)
 {
   return FXTRUE;
diff -urN Glide_V3-DRI-3.10/swlibs/newpci/pcilib/fxpci.c Glide_V3-DRI-3.10-lia/swlibs/newpci/pcilib/fxpci.c
--- Glide_V3-DRI-3.10/swlibs/newpci/pcilib/fxpci.c	Thu Mar  2 14:53:51 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/newpci/pcilib/fxpci.c	Wed Aug  9 14:43:12 2000
@@ -692,9 +692,8 @@
                 FxU32 *devNum,
                 FxU32 cardNum, FxU32 addressNum)
 {
-  FxU32 
-    physAddress, 
-    virtAddress;
+  FxU32 physAddress;
+  long virtAddress;
   
   /* 1) open the PCI device and scan it for devices
    * 2) scan the existing devices for a match
@@ -704,7 +703,7 @@
 
   /* 3) find the current physcial address of the card */
   pciGetConfigData( baseAddresses[addressNum], *devNum, &physAddress );
-  if (length <= 0) return (FxU32*)length;
+  if (length <= 0) return (FxU32*)(long)length;
 
   /* Mask the memory type information bits off.
    *   [0]: Memory type indicator (0 memory/1 i/o)
@@ -753,7 +752,7 @@
 } /* pciMapCard */
 
 FX_EXPORT FxBool FX_CSTYLE
-pciMapPhysicalToLinear( FxU32 *linear_addr, FxU32 physical_addr,
+pciMapPhysicalToLinear( long *linear_addr, FxU32 physical_addr,
                         FxU32 *length ) 
 { 
   return pciMapPhysicalDeviceToLinear(linear_addr, 
@@ -762,7 +761,7 @@
 } /* pciMapPhysicalToLinear */
 
 FX_ENTRY FxBool FX_CALL 
-pciMapPhysicalDeviceToLinear(FxU32 *linear_addr, 
+pciMapPhysicalDeviceToLinear(long *linear_addr, 
                              FxU32 busNumber, FxU32 physical_addr,
                              FxU32 *length)
 {
@@ -772,7 +771,7 @@
 
 
 FX_EXPORT void FX_CSTYLE
-pciUnmapPhysical( FxU32 linear_addr, FxU32 length ) 
+pciUnmapPhysical( long linear_addr, FxU32 length ) 
 {
   int i,j;
   
@@ -811,7 +810,7 @@
 }
 
 FX_EXPORT FxBool FX_CSTYLE
-pciLinearRangeSetPermission(const FxU32 addrBase, const FxU32 addrLen, const FxBool writeableP)
+pciLinearRangeSetPermission(const long addrBase, const FxU32 addrLen, const FxBool writeableP)
 {
   return pciLinearRangeSetPermissionDD(addrBase, addrLen, writeableP);
 }
diff -urN Glide_V3-DRI-3.10/swlibs/newpci/pcilib/fxpci.h Glide_V3-DRI-3.10-lia/swlibs/newpci/pcilib/fxpci.h
--- Glide_V3-DRI-3.10/swlibs/newpci/pcilib/fxpci.h	Thu Mar  2 14:53:51 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/newpci/pcilib/fxpci.h	Wed Aug  9 14:43:41 2000
@@ -169,15 +169,15 @@
  * on bus0 which would not work across pci bridges or on agp devices.   
  */
 FX_ENTRY FxBool FX_CALL 
-pciMapPhysicalToLinear(FxU32 *linear_addr, FxU32 physical_addr,FxU32 *length);
+pciMapPhysicalToLinear(long *linear_addr, FxU32 physical_addr,FxU32 *length);
 
 FX_ENTRY FxBool FX_CALL 
-pciMapPhysicalDeviceToLinear(FxU32 *linear_addr, 
+pciMapPhysicalDeviceToLinear(long *linear_addr, 
                              FxU32 busNumber, FxU32 physical_addr,
                              FxU32 *length);
 
 FX_ENTRY void   FX_CALL 
-pciUnmapPhysical( FxU32 linear_addr, FxU32 length );
+pciUnmapPhysical( long linear_addr, FxU32 length );
 
 const char *
 pciGetVendorName( FxU16 vendor_id );
@@ -215,7 +215,7 @@
 pciOutputDebugString(const char* debugMsg);
 
 FX_ENTRY FxBool FX_CALL
-pciLinearRangeSetPermission(const FxU32 addrBase, const FxU32 addrLen, const FxBool writeableP);
+pciLinearRangeSetPermission(const long addrBase, const FxU32 addrLen, const FxBool writeableP);
 
 #define PCI_ERR_NOERR           0
 #define PCI_ERR_WINRTINIT       1
diff -urN Glide_V3-DRI-3.10/swlibs/newpci/pcilib/pcilib.h Glide_V3-DRI-3.10-lia/swlibs/newpci/pcilib/pcilib.h
--- Glide_V3-DRI-3.10/swlibs/newpci/pcilib/pcilib.h	Thu Mar  2 14:53:51 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/newpci/pcilib/pcilib.h	Wed Aug  9 14:46:46 2000
@@ -74,13 +74,13 @@
 
   /* Platform device address management */
   FxBool (*addrMap)(FxU32 busNumber, FxU32 physAddr,
-                    FxU32* linearAddr, FxU32* length);
-  FxBool (*addrUnmap)(FxU32 linearAddr, FxU32 length);
+                    long* linearAddr, FxU32* length);
+  FxBool (*addrUnmap)(long linearAddr, FxU32 length);
 
   /* Optional things that a platform may or maynot support and clients
    * should not rely on the call to suceed.  
    */
-  FxBool (*addrSetPermission)(const FxU32 addrBase, const FxU32 addrLen,
+  FxBool (*addrSetPermission)(const long addrBase, const FxU32 addrLen,
                               const FxBool writePermP);
 
   FxBool (*msrGet)(MSRInfo* in, MSRInfo* out);
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/dequant.c Glide_V3-DRI-3.10-lia/swlibs/texus/lib/dequant.c
--- Glide_V3-DRI-3.10/swlibs/texus/lib/dequant.c	Thu Mar  2 14:53:52 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/dequant.c	Wed Aug  9 22:56:24 2000
@@ -160,12 +160,12 @@
 }
 
 static void
-_txImgDequantizeYIQ422(FxU32 *out, FxU8 *in, int w, int h, const long *yabTable)
+_txImgDequantizeYIQ422(FxU32 *out, FxU8 *in, int w, int h, const FxU32 *yabTable)
 {
     int                         n = w * h;
     FxU32                       pal[256];
 
-    txYABtoPal256((long *)pal, (long *)yabTable);
+    txYABtoPal256(pal, yabTable);
     out += n;
     in  += n;
     while (n--) *--out = pal[*--in] | 0xff000000;
@@ -223,10 +223,10 @@
 }
 
 static void
-_txImgDequantizeAYIQ8422(FxU32 *out, FxU16 *in, int w, int h, const long *yab)
+_txImgDequantizeAYIQ8422(FxU32 *out, FxU16 *in, int w, int h, const FxU32 *yab)
 {
     int         n = w * h;
-    long        pal[256];
+    FxU32       pal[256];
 
     txYABtoPal256(pal, yab);
     out += n;
@@ -348,7 +348,7 @@
         case GR_TEXFMT_RGB_332:         _txImgDequantizeRGB332(dst, src, w, h);         
                                                                 break;
         case GR_TEXFMT_YIQ_422:         _txImgDequantizeYIQ422(dst, src, w, h, 
-                                                                        (long *)pxMip->pal); break;
+                                                                        pxMip->pal); break;
         case GR_TEXFMT_A_8:                     _txImgDequantizeA8(dst, src, w, h);             
                                                                 break;
         case GR_TEXFMT_I_8:                     _txImgDequantizeI8(dst, src, w, h);             
@@ -361,7 +361,7 @@
         case GR_TEXFMT_ARGB_8332:       _txImgDequantizeARGB8332(dst, src, w, h);       
                                                                 break;
         case GR_TEXFMT_AYIQ_8422:       _txImgDequantizeAYIQ8422(dst, src, w, h, 
-                                                                        (long *)pxMip->pal); break;
+                                                                        pxMip->pal); break;
         case GR_TEXFMT_RGB_565:         _txImgDequantizeRGB565(dst, src, w, h); 
                                                                 break;
         case GR_TEXFMT_ARGB_1555:       _txImgDequantizeARGB1555(dst, src, w, h);       
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/mipmap.c Glide_V3-DRI-3.10-lia/swlibs/texus/lib/mipmap.c
--- Glide_V3-DRI-3.10/swlibs/texus/lib/mipmap.c	Thu Mar  2 14:53:52 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/mipmap.c	Wed Aug  9 13:58:17 2000
@@ -35,7 +35,7 @@
 #define B3(x)   ((x>>0)&0xFF)
 
 static void
-_txImgHalve(long *outdata, int width, int height, long *indata)
+_txImgHalve(int *outdata, int width, int height, int *indata)
 {
     unsigned int i,j,k;
     unsigned int w,h, *p,sum,*q;
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/ncc.c Glide_V3-DRI-3.10-lia/swlibs/texus/lib/ncc.c
--- Glide_V3-DRI-3.10/swlibs/texus/lib/ncc.c	Thu Mar  2 14:53:52 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/ncc.c	Wed Aug  9 23:02:12 2000
@@ -29,10 +29,10 @@
 #include "texusint.h"
 
 static int 
-dithmat[4][4] = {       0,  8,  2, 10, 
-                           12,  4, 14,  6, 
-                            3, 11,  1,  9, 
-                           15,  7, 13,  5 };
+dithmat[4][4] = {      { 0,  8,  2, 10,    },
+                       {    12,  4, 14,  6 },
+                       {     3, 11,  1,  9 },
+                       {    15,  7, 13,  5 }  };
 
 static struct   {
     int yhist[256], ihist[256], qhist[256];
@@ -124,7 +124,7 @@
 }
 
 static void
-_txImgNcc(char *odata, unsigned long *idata, int w, int h, int format, 
+_txImgNcc(char *odata, unsigned int *idata, int w, int h, int format, 
     int dither)
 {
     int (*quantizer)(unsigned long argb, int x, int y, int w);
@@ -308,7 +308,7 @@
 
 
     if ((dither & TX_DITHER_MASK) = TX_DITHER_ERR) {
-        txYABtoPal256((long *)pxMip->pal, (long *) &ncc.y[0]);
+        txYABtoPal256(pxMip->pal, &ncc.y[0]);
         txDiffuseIndex(pxMip, txMip, pixsize, pxMip->pal, 256);
     }
     else {
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/nccnnet.c Glide_V3-DRI-3.10-lia/swlibs/texus/lib/nccnnet.c
--- Glide_V3-DRI-3.10/swlibs/texus/lib/nccnnet.c	Thu Mar  2 14:53:52 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/nccnnet.c	Wed Aug  9 14:00:08 2000
@@ -88,19 +88,19 @@
 #define MAX_NEURONS             256
 
 typedef struct  _weight {
-    long         r,  g,  b;                             // fixed point, SUBPIXEL precision bits
+    int          r,  g,  b;                             // fixed point, SUBPIXEL precision bits
     int         ir, ig, ib;                             // pure integers, maybe -256 to 255.
 } Weight;
 
 typedef struct  _vector {
     Weight      *py, *pa, *pb;
-    long         r,  g,  b;                             // pure integers, 0 to 255.
+    int         r,  g,  b;                             // pure integers, 0 to 255.
 } Neuron;
 
 static  Weight                  Y[16], A[4], B[4];
 static  Neuron                  N[MAX_NEURONS];
-static  long                    errR, errG, errB, errMax;
-static  long                    totR, totG, totB;
+static  int                     errR, errG, errB, errMax;
+static  int                     totR, totG, totB;
 
 
 #define SUBPIXEL                22
@@ -114,12 +114,12 @@
                                                 x = ((256 << SUBPIXEL) -1)
 
 static int
-_nn_modifyNeurons(long ir, long ig, long ib)
+_nn_modifyNeurons(int ir, int ig, int ib)
 {
     int         i; 
     int         d0, d1;                         // closest & next closest distance to input
     int         p0, p1;                         // index into the 256 color table.
-    long        d, dr, dg, db;
+    int         d, dr, dg, db;
     Weight      *py, *pa, *pb;
     Neuron      *n;
 
@@ -268,10 +268,10 @@
 txMapPal256toYAB(FxU32 *YAB, FxU8 *map, int nsamples, FxU32 *samples)
 {
     int         i;
-    long        bstR, bstG, bstB, bstMax;
+    int         bstR, bstG, bstB, bstMax;
     int         iterations;                     // track how many inputs have been fed to NN
     int         drySpells;                      // how many inputs since last best case.
-    long        yab2pal[256];
+    int         yab2pal[256];
 
     _nn_initTables();
     /* 
@@ -367,7 +367,7 @@
      * Replace MSB of samples with index to be used with YAB table.
      */
 
-    txYABtoPal256((long*)yab2pal, (long*)YAB);
+    txYABtoPal256(yab2pal, YAB);
 
     for (i=0; i<nsamples; i++) {
         int             ir, ig, ib;
@@ -388,7 +388,7 @@
     int         i, w, h;
     int         ncolors;
     int         pixsize = (pxMip->format = GR_TEXFMT_YIQ_422) ? 1 : 2;
-    long        yabTable[16+12+12];
+    int         yabTable[16+12+12];
     FxU8        map[256];
 
 
@@ -425,7 +425,7 @@
          * the 256 color palette generated from the YAB table. This will be 
          * useful for error diffusion dithering.
          */
-        txYABtoPal256((long *)pxMip->pal, (long *)yabTable);
+        txYABtoPal256(pxMip->pal, yabTable);
         txDiffuseIndex(pxMip, txMip, pixsize, pxMip->pal, 256);
     } 
     else {
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/pal256.c Glide_V3-DRI-3.10-lia/swlibs/texus/lib/pal256.c
--- Glide_V3-DRI-3.10/swlibs/texus/lib/pal256.c	Thu Mar  2 14:53:52 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/pal256.c	Wed Aug  9 14:01:18 2000
@@ -80,20 +80,20 @@
 
 typedef struct {
     float               weightedvar;            /* weighted variance */
-    ulong               mean[3];                        /* centroid */
-    ulong               weight;                         /* # of pixels in box */
-    ulong               freq[3][MAXCOLORS];     /* Projected frequencies */
+    uint                mean[3];                        /* centroid */
+    uint                weight;                         /* # of pixels in box */
+    uint                freq[3][MAXCOLORS];     /* Projected frequencies */
     int                 low[3], high[3];        /* Box extent */
 } Box;
 
 #define COLORMAXI ( 1 << NBITS )
 #if 0
-static ulong    *Histogram;             /* image histogram      */
+static uint    *Histogram;             /* image histogram      */
 #else
-static ulong    Histogram[COLORMAXI*COLORMAXI*COLORMAXI * sizeof(long)];
+static uint     Histogram[COLORMAXI*COLORMAXI*COLORMAXI * sizeof(long)];
 #endif
-static ulong    SumPixels;              /* total # of pixels    */
-static ulong    ColormaxI;              /* # of colors, 2^Bits */
+static uint     SumPixels;              /* total # of pixels    */
+static uint     ColormaxI;              /* # of colors, 2^Bits */
 static Box              _Boxes[MAXCOLORS];
 static Box              *Boxes;                 /* Array of color boxes. */
 
@@ -105,7 +105,7 @@
 static void     BoxStats(Box *box);
 static int      GreatestVariance(Box *boxes, int n);
 static int      CutBoxes(Box *boxes, int colors);
-static void     QuantHistogram(ulong *pixels, int npixels, Box *box);
+static void     QuantHistogram(uint *pixels, int npixels, Box *box);
 
 /*
  * Perform variance-based color quantization on a 24-bit image.
@@ -132,16 +132,16 @@
 
     Boxes = _Boxes;     
 #if 0
-    Histogram = (ulong *) txMalloc(ColormaxI*ColormaxI*ColormaxI * sizeof(long));
+    Histogram = (uint *) txMalloc(ColormaxI*ColormaxI*ColormaxI * sizeof(long));
     rgbmap = txMalloc((1<<NBITS)*(1<<NBITS)*(1<<NBITS));
 #endif
 
     /*
      * Zero-out the projected frequency arrays of the largest box.
      */
-    bzero(Boxes->freq[0], ColormaxI * sizeof(ulong));
-    bzero(Boxes->freq[1], ColormaxI * sizeof(ulong));
-    bzero(Boxes->freq[2], ColormaxI * sizeof(ulong));
+    bzero(Boxes->freq[0], ColormaxI * sizeof(uint));
+    bzero(Boxes->freq[1], ColormaxI * sizeof(uint));
+    bzero(Boxes->freq[2], ColormaxI * sizeof(uint));
     bzero(Histogram, ColormaxI * ColormaxI * ColormaxI * sizeof(long));
 
     /* Feed all bitmaps & generate histogram */
@@ -150,7 +150,7 @@
     h = txMip->height;
     for (i=0; i< txMip->depth; i++) {
         SumPixels += w * h;
-        QuantHistogram((ulong *)txMip->data[i], w * h, &Boxes[0]);
+        QuantHistogram((uint *)txMip->data[i], w * h, &Boxes[0]);
         if (w > 1) w >>= 1;
         if (h > 1) h >>= 1;
     }
@@ -163,10 +163,10 @@
      * from their 'prequantized' range to 0-FULLINTENSITY.
      */
     for (i = 0; i < OutColors; i++) {
-        ulong   r, g, b;
-        r = (ulong)(Boxes[i].mean[REDI] * Cfactor + 0.5);
-        g = (ulong)(Boxes[i].mean[GREENI] * Cfactor + 0.5);
-        b = (ulong)(Boxes[i].mean[BLUEI] * Cfactor + 0.5);
+        uint   r, g, b;
+        r = (uint)(Boxes[i].mean[REDI] * Cfactor + 0.5);
+        g = (uint)(Boxes[i].mean[GREENI] * Cfactor + 0.5);
+        b = (uint)(Boxes[i].mean[BLUEI] * Cfactor + 0.5);
 
         /*
         r &= 0xff;
@@ -195,11 +195,11 @@
         h = txMip->height;
 
         for (i=0; i< txMip->depth; i++) {
-                ulong   *src;
+                uint   *src;
                 uchar   *dst;
                 int             n;
 
-                src = (ulong *) txMip->data[i];
+                src = (uint *) txMip->data[i];
                 dst = (uchar *) pxMip->data[i];
                 n   = w * h;
                 while (n--) {
@@ -239,9 +239,9 @@
  * arrays for the first world-encompassing box.
  */
 static void
-QuantHistogram(ulong *pixels, int npixels, Box *box)
+QuantHistogram(uint *pixels, int npixels, Box *box)
 {
-    ulong *rf, *gf, *bf;
+    uint *rf, *gf, *bf;
     uchar rr, gg, bb;
     int         i;
 
@@ -319,7 +319,7 @@
 BoxStats(Box *box)
 {
     int i, color;
-    ulong *freq;
+    uint *freq;
     float mean, var;
 
     if(box->weight = 0) {
@@ -404,7 +404,7 @@
 {
     float u, v, max;
     int i, maxindex, minindex, cutpoint;
-    ulong optweight, curweight;
+    uint optweight, curweight;
 
     if (box->low[color] + 1 = box->high[color])
         return FALSE;   /* Cannot be cut. */
@@ -454,13 +454,13 @@
 static void
 UpdateFrequencies(Box *box1, Box *box2)
 {
-    ulong myfreq, *h;
+    uint myfreq, *h;
     int b, g, r;
     int roff;
 
-    bzero(box1->freq[0], ColormaxI * sizeof(ulong));
-    bzero(box1->freq[1], ColormaxI * sizeof(ulong));
-    bzero(box1->freq[2], ColormaxI * sizeof(ulong)); 
+    bzero(box1->freq[0], ColormaxI * sizeof(uint));
+    bzero(box1->freq[1], ColormaxI * sizeof(uint));
+    bzero(box1->freq[2], ColormaxI * sizeof(uint)); 
 
     for (r = box1->low[0]; r < box1->high[0]; r++) {
         roff = r << NBITS;
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/quantize.c Glide_V3-DRI-3.10-lia/swlibs/texus/lib/quantize.c
--- Glide_V3-DRI-3.10/swlibs/texus/lib/quantize.c	Thu Mar  2 14:53:52 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/quantize.c	Wed Aug  9 23:01:08 2000
@@ -30,16 +30,16 @@
 #include "texusint.h"
 
 static int 
-dithmat[4][4] = {       0,  8,  2, 10, 
-                           12,  4, 14,  6, 
-                            3, 11,  1,  9, 
-                           15,  7, 13,  5 };
+dithmat[4][4] = {      { 0,  8,  2, 10,    },
+                       {    12,  4, 14,  6 },
+                       {     3, 11,  1,  9 },
+                       {    15,  7, 13,  5 } };
 
 // for error diffusion.
 static int      errR[MAX_TEXWIDTH], errG[MAX_TEXWIDTH], errB[MAX_TEXWIDTH];     
 
 static int
-_txPixQuantize_RGB332( unsigned long argb, int x, int y, int w)
+_txPixQuantize_RGB332( unsigned int argb, int x, int y, int w)
 {
     return (
                         (((argb>>16) & 0xE0) |
@@ -48,7 +48,7 @@
 }
 
 static int
-_txPixQuantize_RGB332_D4x4( unsigned long argb, int x, int y, int w)
+_txPixQuantize_RGB332_D4x4( unsigned int argb, int x, int y, int w)
 {
     int d = dithmat[y&3][x&3];
     int n, t;
@@ -63,7 +63,7 @@
 }
 
 static int
-_txPixQuantize_RGB332_DErr( unsigned long argb, int x, int y, int w)
+_txPixQuantize_RGB332_DErr( unsigned int argb, int x, int y, int w)
 {
     static unsigned char a3[] = {0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff};
     static unsigned char a2[] = {0x00,0x55,0xaa,0xff};
@@ -120,13 +120,13 @@
 /* YIQ422 done elsewhere */
 
 static int
-_txPixQuantize_A8( unsigned long argb, int x, int y, int w)
+_txPixQuantize_A8( unsigned int argb, int x, int y, int w)
 {
     return (argb >> 24);
 }
 
 static int
-_txPixQuantize_I8( unsigned long argb, int x, int y, int w)
+_txPixQuantize_I8( unsigned int argb, int x, int y, int w)
 {
     return (
     ((int) (((argb >>16) & 0xFF) * .30F +
@@ -135,7 +135,7 @@
 }
 
 static int
-_txPixQuantize_AI44( unsigned long argb, int x, int y, int w)
+_txPixQuantize_AI44( unsigned int argb, int x, int y, int w)
 {
     return(
         (int)   ((      ((argb>>16) & 0xFF) * .30F +
@@ -145,7 +145,7 @@
 }
 
 static int
-_txPixQuantize_AI44_D4x4( unsigned long argb, int x, int y, int w)
+_txPixQuantize_AI44_D4x4( unsigned int argb, int x, int y, int w)
 {
     int d = dithmat[y&3][x&3];
     int n, t;
@@ -163,7 +163,7 @@
 }
 
 static int
-_txPixQuantize_AI44_DErr( unsigned long argb, int x, int y, int w)
+_txPixQuantize_AI44_DErr( unsigned int argb, int x, int y, int w)
 {
     int ii, t;
     static      int     qi;
@@ -198,7 +198,7 @@
 
 
 static int
-_txPixQuantize_ARGB8332 ( unsigned long argb, int x, int y, int w)
+_txPixQuantize_ARGB8332 ( unsigned int argb, int x, int y, int w)
 {
     return (
                          ((argb>>16) & 0xE0) |
@@ -209,7 +209,7 @@
 
 
 static int
-_txPixQuantize_ARGB8332_D4x4( unsigned long argb, int x, int y, int w)
+_txPixQuantize_ARGB8332_D4x4( unsigned int argb, int x, int y, int w)
 {
     int d = dithmat[y&3][x&3];
     int n, t;
@@ -225,7 +225,7 @@
 }
 
 static int
-_txPixQuantize_ARGB8332_DErr( unsigned long argb, int x, int y, int w)
+_txPixQuantize_ARGB8332_DErr( unsigned int argb, int x, int y, int w)
 {
     int t;
 
@@ -237,7 +237,7 @@
 /* AYIQ8422 done elsewhere */
 
 static int
-_txPixQuantize_RGB565( unsigned long argb, int x, int y, int w)
+_txPixQuantize_RGB565( unsigned int argb, int x, int y, int w)
 {
     return (
                     ((argb >> 8) & 0xF800) |
@@ -246,7 +246,7 @@
 }
 
 static int
-_txPixQuantize_RGB565_D4x4 ( unsigned long argb, int x, int y, int w)
+_txPixQuantize_RGB565_D4x4 ( unsigned int argb, int x, int y, int w)
 {
     int d = dithmat[y&3][x&3];
     int n, t;
@@ -262,7 +262,7 @@
 
 
 static int
-_txPixQuantize_RGB565_DErr ( unsigned long argb, int x, int y, int w)
+_txPixQuantize_RGB565_DErr ( unsigned int argb, int x, int y, int w)
 {
     static int          qr, qg, qb;             // quantized incoming values.
     int                         ir, ig, ib;             // incoming values.
@@ -318,7 +318,7 @@
 }
 
 static int
-_txPixQuantize_ARGB1555( unsigned long argb, int x, int y, int w)
+_txPixQuantize_ARGB1555( unsigned int argb, int x, int y, int w)
 {
     return (
                     ((argb >> 9) & 0x7C00) |
@@ -328,7 +328,7 @@
 }
 
 static int
-_txPixQuantize_ARGB1555_D4x4 ( unsigned long argb, int x, int y, int w)
+_txPixQuantize_ARGB1555_D4x4 ( unsigned int argb, int x, int y, int w)
 {
     int d = dithmat[y&3][x&3];
     int n, t;
@@ -344,7 +344,7 @@
 }
 
 static int
-_txPixQuantize_ARGB1555_DErr ( unsigned long argb, int x, int y, int w)
+_txPixQuantize_ARGB1555_DErr ( unsigned int argb, int x, int y, int w)
 {
     static int          qr, qg, qb;             // quantized incoming values.
     int                         ir, ig, ib;             // incoming values.
@@ -401,7 +401,7 @@
 }
 
 static int
-_txPixQuantize_ARGB4444 (unsigned long argb, int x, int y, int w)
+_txPixQuantize_ARGB4444 (unsigned int argb, int x, int y, int w)
 {
     return (
                     ((argb >> 12) & 0x0F00) |
@@ -411,7 +411,7 @@
 }
 
 static int
-_txPixQuantize_ARGB4444_D4x4 (unsigned long argb, int x, int y, int w)
+_txPixQuantize_ARGB4444_D4x4 (unsigned int argb, int x, int y, int w)
 {
     int d = dithmat[y&3][x&3];
     int n, t;
@@ -427,7 +427,7 @@
 }
 
 static int
-_txPixQuantize_ARGB4444_DErr (unsigned long argb, int x, int y, int w)
+_txPixQuantize_ARGB4444_DErr (unsigned int argb, int x, int y, int w)
 {
     static int          qr, qg, qb;             // quantized incoming values.
     int                         ir, ig, ib;             // incoming values.
@@ -484,7 +484,7 @@
 }
 
 static int
-_txPixQuantize_AI88( unsigned long argb, int x, int y, int w)
+_txPixQuantize_AI88( unsigned int argb, int x, int y, int w)
 {
     return (
     (((int) (((argb >>16) & 0xFF) * .30F +
@@ -498,7 +498,7 @@
 static void
 _txImgQuantize(char *dst, char *src, int w, int h, FxU32 format, FxU32 dither)
 {
-    int (*quantizer)(unsigned long argb, int x, int y, int w);
+    int (*quantizer)(unsigned int argb, int x, int y, int w);
     int         x, y;
 
     dither &= TX_DITHER_MASK;
@@ -589,7 +589,7 @@
         // 8 bit dst
         for (y=0; y<h; y++) {
                 for (x=0; x<w; x++) {
-                        *dst++ = (*quantizer)(*(unsigned long *)src, x, y, w);
+                        *dst++ = (*quantizer)(*(unsigned int *)src, x, y, w);
                         src += 4;
                 }
         }
@@ -599,7 +599,7 @@
 
         for (y=0; y<h; y++) {
                 for (x=0; x<w; x++) {
-                        *dst16++ = (*quantizer)(*(unsigned long *)src, x, y, w);
+                        *dst16++ = (*quantizer)(*(unsigned int *)src, x, y, w);
                         src += 4;
                 }
         }
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/rgt.c Glide_V3-DRI-3.10-lia/swlibs/texus/lib/rgt.c
--- Glide_V3-DRI-3.10/swlibs/texus/lib/rgt.c	Thu Mar  2 14:53:53 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/rgt.c	Wed Aug  9 14:02:59 2000
@@ -52,7 +52,7 @@
 
 
 
-static void swapShorts(unsigned short *array, long length)
+static void swapShorts(unsigned short *array, int length)
 {
     unsigned short s;
     while (length--) {
@@ -61,7 +61,7 @@
     }
 }
 
-static void swapLongs(unsigned int *array, long length)
+static void swapLongs(unsigned int *array, int length)
 {
     unsigned int s;
     while (length--) {
@@ -72,7 +72,7 @@
 }
 
 // just swap RGB into BGR (leave MSB undefined)
-static void swapRGB(unsigned int *array, long length)
+static void swapRGB(unsigned int *array, int length)
 {
     unsigned int s;
     while (length--) {
@@ -164,7 +164,7 @@
 
 #if 1
         if (swap) {
-            swapRGB((unsigned int *)data32, (long)info->width);
+            swapRGB((unsigned int *)data32, (int)info->width);
         }
 #endif
 
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/texus.h Glide_V3-DRI-3.10-lia/swlibs/texus/lib/texus.h
--- Glide_V3-DRI-3.10/swlibs/texus/lib/texus.h	Thu Mar  2 14:53:53 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/texus.h	Wed Aug  9 13:53:28 2000
@@ -38,8 +38,13 @@
 typedef unsigned char   FxU8;
 typedef unsigned short  FxU16;
 typedef short           FxI16;
+#ifdef __LP64__
+typedef unsigned int    FxU32;
+typedef int             FxI32;
+#else
 typedef unsigned long   FxU32;
 typedef long            FxI32;
+#endif
 typedef int             FxBool;
 
 /*
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/texusint.h Glide_V3-DRI-3.10-lia/swlibs/texus/lib/texusint.h
--- Glide_V3-DRI-3.10/swlibs/texus/lib/texusint.h	Thu Mar  2 14:53:53 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/texusint.h	Wed Aug  9 14:03:17 2000
@@ -67,7 +67,7 @@
 int             txAspectRatio(int w, int h);
 void    txPanic(char *);
 void    txError(char *);
-void    txYABtoPal256(long *palette, const long* yabTable);
+void    txYABtoPal256(int *palette, const int* yabTable);
 void    txRectCopy(FxU8 *dst, int dstStride, const FxU8 *src, int srcStride,
                         int width, int height);
 FxBool  txMipAlloc(TxMip *txMip);
@@ -90,7 +90,7 @@
 
 void    txDiffuseIndex(TxMip *pxMip, TxMip *txMip, int pixsize, 
                 const FxU32 *palette, int       ncolors);
-int             txNearestColor(long ir, long ig, long ib, const FxU32 *pal, int npal);
+int             txNearestColor(int ir, int ig, int ib, const FxU32 *pal, int npal);
 
 FxBool _txReadTGAHeader( FILE *stream, FxU32 cookie, TxMip *info);
 FxBool _txReadTGAData( FILE *stream, TxMip *info);
diff -urN Glide_V3-DRI-3.10/swlibs/texus/lib/util.c Glide_V3-DRI-3.10-lia/swlibs/texus/lib/util.c
--- Glide_V3-DRI-3.10/swlibs/texus/lib/util.c	Thu Mar  2 14:53:53 2000
+++ Glide_V3-DRI-3.10-lia/swlibs/texus/lib/util.c	Wed Aug  9 14:04:07 2000
@@ -133,14 +133,14 @@
 }
 
 void
-txYABtoPal256(long *palette, const long* yabTable)
+txYABtoPal256(int *palette, const int* yabTable)
 {
         // Convert YAB table to a 256 color palette 
         // Assume yabTable[] has first 16Y's, 12 A's, 12 B's
 
-        const   long    *Y = yabTable;
-        const   long    *A = yabTable + 16;
-        const   long    *B = yabTable + 16 + 12;
+        const   int    *Y = yabTable;
+        const   int    *A = yabTable + 16;
+        const   int    *B = yabTable + 16 + 12;
         int             i;
 
         for (i=0; i<256; i++) {
@@ -265,7 +265,7 @@
 int  *explode3 = &_explode3[255];
 
 int
-txNearestColor(long ir, long ig, long ib, const FxU32 *pal, int ncolors)
+txNearestColor(int ir, int ig, int ib, const FxU32 *pal, int ncolors)
 {
         int             i, d; 
         int             mindist, minpos;                // closest distance to input


                 reply	other threads:[~2000-08-15  7:22 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-105590678205327@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox