Add P6FENCE (ish) macro for non-x86 archs
This commit is contained in:
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user