Add P6FENCE (ish) macro for non-x86 archs

This commit is contained in:
jwrdegoede
2005-05-25 08:53:23 +00:00
parent a96ecc4d15
commit 5eff1f0e44
9 changed files with 62 additions and 10 deletions

View File

@@ -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 */

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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 */

View File

@@ -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);

View File

@@ -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

View File

@@ -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 */

View File

@@ -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