diff --git a/glide3x/cvg/glide3/src/fxglide.h b/glide3x/cvg/glide3/src/fxglide.h index bfc68bc..0300445 100644 --- a/glide3x/cvg/glide3/src/fxglide.h +++ b/glide3x/cvg/glide3/src/fxglide.h @@ -19,6 +19,9 @@ ** ** $Header$ ** $Log$ +** Revision 1.1.1.1.8.9 2005/05/25 08:51:49 jwrdegoede +** Add #ifdef GL_X86 around x86 specific code +** ** Revision 1.1.1.1.8.8 2004/12/23 20:24:08 koolsmoky ** remove old cpuid ** @@ -437,6 +440,13 @@ p6Fence(void); #define P6FENCE p6Fence() #elif defined(__MSC__) #define P6FENCE {_asm xchg eax, p6FenceVar} +#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) +# define P6FENCE asm("xchg %%eax,%0" : /*outputs*/ : "m" (p6FenceVar) : \ + "eax"); +#elif defined(__GNUC__) && defined(__ia64__) +# define P6FENCE asm volatile ("mf.a" ::: "memory"); +#elif defined(__GNUC__) && defined(__alpha__) +# define P6FENCE asm volatile("mb" ::: "memory"); #else #error "P6 Fencing in-line assembler code needs to be added for this compiler" #endif /* Compiler specific fence commands */ diff --git a/glide3x/cvg/init/sst1init.h b/glide3x/cvg/init/sst1init.h index 1473cec..b5f7dba 100644 --- a/glide3x/cvg/init/sst1init.h +++ b/glide3x/cvg/init/sst1init.h @@ -147,9 +147,13 @@ p6Fence(void); # define P6FENCE {_asm xchg eax, p6FenceVar} #elif defined(macintosh) && __POWERPC__ && defined(__MWERKS__) # define P6FENCE __eieio() -#elif defined (__GNUC__) && defined(__i386__) +#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) # define P6FENCE asm("xchg %%eax,%0" : /*outputs*/ : "m" (p6FenceVar) : \ "eax"); +#elif defined(__GNUC__) && defined(__ia64__) +# define P6FENCE asm volatile ("mf.a" ::: "memory"); +#elif defined(__GNUC__) && defined(__alpha__) +# define P6FENCE asm volatile("mb" ::: "memory"); #else # error "P6 Fencing in-line assembler code needs to be added for this compiler" #endif diff --git a/glide3x/h3/glide3/src/fxglide.h b/glide3x/h3/glide3/src/fxglide.h index d89ab92..2eaf2b7 100644 --- a/glide3x/h3/glide3/src/fxglide.h +++ b/glide3x/h3/glide3/src/fxglide.h @@ -19,6 +19,9 @@ ** ** $Header$ ** $Log$ +** Revision 1.2.4.10 2005/05/25 08:51:49 jwrdegoede +** Add #ifdef GL_X86 around x86 specific code +** ** Revision 1.2.4.9 2004/10/07 07:48:50 dborca ** comment the GR_CDECL hack to prevent accidents ** @@ -1520,8 +1523,12 @@ extern GrGCFuncs _curGCFuncs; # pragma warning(default : 4035) #elif defined(macintosh) && defined(__POWERPC__) && defined(__MWERKS__) # define P6FENCE __eieio() -#elif defined(__GNUC__) && defined(__i386__) +#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #define P6FENCE asm("xchg %%eax, %0" : : "m" (_GlideRoot.p6Fencer) : "eax"); +#elif defined(__GNUC__) && defined(__ia64__) +# define P6FENCE asm volatile ("mf.a" ::: "memory"); +#elif defined(__GNUC__) && defined(__alpha__) +# define P6FENCE asm volatile("mb" ::: "memory"); #elif defined(__WATCOMC__) void p6Fence(void); diff --git a/glide3x/h3/minihwc/linhwc.c b/glide3x/h3/minihwc/linhwc.c index eb39449..889921f 100644 --- a/glide3x/h3/minihwc/linhwc.c +++ b/glide3x/h3/minihwc/linhwc.c @@ -70,7 +70,15 @@ static FxU32 hwcBufferLfbAddr(const hwcBoardInfo *bInfo, FxU32 physAddress); static FxU32 fenceVar; -#define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax"); +#ifdef __ia64__ +# define P6FENCE asm volatile ("mf.a" ::: "memory"); +#elif defined(__alpha__) +# define P6FENCE asm volatile("mb" ::: "memory"); +#elif defined(__i386__) +# define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax"); +#else +# error "No P6FENCE asm for this architecture" +#endif #define MAXFIFOSIZE 0x40000 #define FIFOPAD 0x0000 diff --git a/glide3x/h3/minihwc/minihwc.c b/glide3x/h3/minihwc/minihwc.c index 63f5847..5583b25 100644 --- a/glide3x/h3/minihwc/minihwc.c +++ b/glide3x/h3/minihwc/minihwc.c @@ -19,6 +19,9 @@ ** ** $Header$ ** $Log$ +** Revision 1.1.1.1.6.8 2004/10/07 07:17:55 dborca +** use the right Escape sequence on win32 +** ** Revision 1.1.1.1.6.7 2004/10/05 14:47:16 dborca ** conditional compilation a bit more sane ** @@ -606,8 +609,12 @@ modify [eax]; #define P6FENCE __eieio() #elif defined(__DJGPP__) #define P6FENCE __asm __volatile ("xchg %%eax, _fenceVar":::"%eax"); -#elif defined(__linux__) +#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #define P6FENCE __asm __volatile ("xchg %%eax, fenceVar":::"%eax") +#elif defined(__GNUC__) && defined(__ia64__) +# define P6FENCE asm volatile ("mf.a" ::: "memory"); +#elif defined(__GNUC__) && defined(__alpha__) +# define P6FENCE asm volatile("mb" ::: "memory"); #else #error "P6 Fencing in-line assembler code needs to be added for this compiler" #endif /* Compiler specific fence commands */ diff --git a/glide3x/h5/glide3/src/fxglide.h b/glide3x/h5/glide3/src/fxglide.h index ba23b36..367ae1f 100644 --- a/glide3x/h5/glide3/src/fxglide.h +++ b/glide3x/h5/glide3/src/fxglide.h @@ -2196,11 +2196,15 @@ extern GrGCFuncs _curGCFuncs; # pragma warning(default : 4035) #elif defined(macintosh) && defined(__POWERPC__) && defined(__MWERKS__) # define P6FENCE __sync() -#elif defined(__GNUC__) && defined(__i386__) +#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) /* * This is the __linux__ code. */ #define P6FENCE asm("xchg %%eax, %0" : : "m" (_GlideRoot.p6Fencer) : "eax"); +#elif defined(__GNUC__) && defined(__ia64__) +# define P6FENCE asm volatile ("mf.a" ::: "memory"); +#elif defined(__GNUC__) && defined(__alpha__) +# define P6FENCE asm volatile("mb" ::: "memory"); #elif defined(__WATCOMC__) void p6Fence(void); diff --git a/glide3x/h5/minihwc/linhwc.c b/glide3x/h5/minihwc/linhwc.c index d2a6bf7..c8b4d3c 100644 --- a/glide3x/h5/minihwc/linhwc.c +++ b/glide3x/h5/minihwc/linhwc.c @@ -67,7 +67,13 @@ hwcCheckMemSize(hwcBoardInfo *bInfo, FxU32 xres, FxU32 yres, FxU32 nColBuffers, #include "lindri.h" static FxU32 fenceVar; -#define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax"); +#ifdef __ia64__ +# define P6FENCE asm volatile("mf.a" ::: "memory"); +#elif defined (__alpha__) +# define P6FENCE asm volatile("mb" ::: "memory"); +#else +# define P6FENCE asm("xchg %%eax, %0" : : "m" (fenceVar) : "eax"); +#endif #define MAXFIFOSIZE 0x40000 #define FIFOPAD 0x0000 diff --git a/glide3x/h5/minihwc/minihwc.c b/glide3x/h5/minihwc/minihwc.c index ee7a479..27f5ee9 100644 --- a/glide3x/h5/minihwc/minihwc.c +++ b/glide3x/h5/minihwc/minihwc.c @@ -1038,8 +1038,12 @@ modify [eax]; #define P6FENCE __sync() #elif defined(__DJGPP__) || defined (__MINGW32__) #define P6FENCE __asm __volatile ("xchg %%eax, _fenceVar":::"%eax") -#elif (GLIDE_PLATFORM & GLIDE_OS_UNIX) +#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #define P6FENCE __asm __volatile ("xchg %%eax, fenceVar":::"%eax") +#elif defined(__GNUC__) && defined(__ia64__) +# define P6FENCE asm volatile ("mf.a" ::: "memory"); +#elif defined(__GNUC__) && defined(__alpha__) +# define P6FENCE asm volatile("mb" ::: "memory"); #else #error "P6 Fencing in-line assembler code needs to be added for this compiler" #endif /* Compiler specific fence commands */ diff --git a/glide3x/sst1/init/initvg/sst1init.h b/glide3x/sst1/init/initvg/sst1init.h index 7694272..448fdc4 100644 --- a/glide3x/sst1/init/initvg/sst1init.h +++ b/glide3x/sst1/init/initvg/sst1init.h @@ -138,14 +138,16 @@ p6Fence(void); #define P6FENCE {_asm xchg eax, p6FenceVar} -#elif defined(__GNUC__) -#if defined(__i386__) +#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #define P6FENCE asm("xchg %%eax,%0" \ : /* no outputs */ \ : "m" (p6FenceVar) \ : "eax" \ ); -#endif +#elif defined(__GNUC__) && defined(__ia64__) +# define P6FENCE asm volatile ("mf.a" ::: "memory"); +#elif defined(__GNUC__) && defined(__alpha__) +# define P6FENCE asm volatile("mb" ::: "memory"); #else #error "P6 Fencing in-line assembler code needs to be added for this compiler" #endif