glide2x, h3,minihwc: add p6fence stuff for linux, gcc & co.
This commit is contained in:
@@ -447,8 +447,6 @@ static char errorString[1024];
|
||||
static int num_monitor = 0;
|
||||
static FxU32 __attribute_used fenceVar;
|
||||
|
||||
|
||||
#if defined(__WATCOMC__)
|
||||
/*
|
||||
* P6 Fence
|
||||
*
|
||||
@@ -459,18 +457,24 @@ static FxU32 __attribute_used fenceVar;
|
||||
* This was yoinked from sst1/include/sst1init.h, and should be
|
||||
* merged back into something if we decide that we need it later.
|
||||
*/
|
||||
void
|
||||
p6Fence(void);
|
||||
#if defined(__WATCOMC__)
|
||||
void p6Fence(void);
|
||||
#pragma aux p6Fence = \
|
||||
"xchg eax, fenceVar" \
|
||||
modify [eax];
|
||||
|
||||
|
||||
#define P6FENCE p6Fence()
|
||||
#elif defined(__MSC__)
|
||||
#define P6FENCE {_asm xchg eax, fenceVar}
|
||||
#elif defined(__POWERPC__) && defined(__MWERKS__)
|
||||
#define P6FENCE __eieio()
|
||||
#elif defined(__DJGPP__) || defined (__MINGW32__)
|
||||
#define P6FENCE __asm __volatile ("xchg %%eax, _fenceVar":::"%eax")
|
||||
#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 */
|
||||
|
||||
Reference in New Issue
Block a user