From 11e5099eb7abb2e016527795ffd32c5094e5324f Mon Sep 17 00:00:00 2001 From: tma Date: Fri, 4 Nov 2005 22:32:00 +0000 Subject: * Replaced a bunch of inline and __inline with ID_INLINE * Replaced a bunch of __i386__ with id386 * General tidy up of asm preprocessor decisions * Removed C_ONLY from the dedicated server build git-svn-id: svn://svn.icculus.org/quake3/trunk@269 edf5b092-35ff-0310-97b2-ce42778d08ea --- code/qcommon/q_platform.h | 209 +++++++++++++++++++++++++++------------------- 1 file changed, 122 insertions(+), 87 deletions(-) (limited to 'code/qcommon/q_platform.h') diff --git a/code/qcommon/q_platform.h b/code/qcommon/q_platform.h index 802cbcb..cf8a031 100644 --- a/code/qcommon/q_platform.h +++ b/code/qcommon/q_platform.h @@ -23,68 +23,82 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #ifndef __Q_PLATFORM_H #define __Q_PLATFORM_H -// this is the define for determining if we have an asm version of a C function -#if (defined _M_IX86 || defined __i386__) && !defined __sun && !defined Q3_VM -#define id386 1 +// this is for determining if we have an asm version of a C function +#ifdef Q3_VM + +#define id386 0 +#define idppc 0 +#define idppc_altivec 0 + #else -#define id386 0 + +#if (defined _M_IX86 || defined __i386__) && \ + !defined __sun && !defined(C_ONLY) +#define id386 1 +#else +#define id386 0 #endif -#if (defined(powerc) || defined(powerpc) || defined(ppc) || defined(__ppc) || defined(__ppc__)) && !defined(C_ONLY) -#define idppc 1 +#if (defined(powerc) || defined(powerpc) || defined(ppc) || \ + defined(__ppc) || defined(__ppc__)) && !defined(C_ONLY) +#define idppc 1 #if defined(__VEC__) #define idppc_altivec 1 #else #define idppc_altivec 0 #endif #else -#define idppc 0 +#define idppc 0 #define idppc_altivec 0 #endif +#endif + +#ifndef __ASM_I386__ // don't include the C bits if included from qasm.h + // for windows fastcall option -#define QDECL +#define QDECL short ShortSwap (short l); int LongSwap (int l); float FloatSwap (const float *f); -//======================= WIN32 DEFINES ================================= +//================================================================= WIN32 === #ifdef _WIN32 #undef QDECL -#define QDECL __cdecl +#define QDECL __cdecl // buildstring will be incorporated into the version string #ifdef _MSC_VER #ifdef NDEBUG #ifdef _M_IX86 -#define CPUSTRING "win-x86" +#define CPUSTRING "win-x86" #elif defined _M_ALPHA -#define CPUSTRING "win-AXP" +#define CPUSTRING "win-AXP" #endif #else #ifdef _M_IX86 -#define CPUSTRING "win-x86-debug" +#define CPUSTRING "win-x86-debug" #elif defined _M_ALPHA -#define CPUSTRING "win-AXP-debug" +#define CPUSTRING "win-AXP-debug" #endif #endif #elif defined __MINGW32__ #ifdef NDEBUG #ifdef __i386__ -#define CPUSTRING "mingw-x86" +#define CPUSTRING "mingw-x86" #endif #else #ifdef __i386__ -#define CPUSTRING "mingw-x86-debug" +#define CPUSTRING "mingw-x86-debug" #endif #endif #endif -#define ID_INLINE __inline +#define ID_INLINE __inline static ID_INLINE short BigShort( short l) { return ShortSwap(l); } #define LittleShort @@ -93,88 +107,89 @@ static ID_INLINE int BigLong(int l) { return LongSwap(l); } static ID_INLINE float BigFloat(const float l) { return FloatSwap(&l); } #define LittleFloat -#define PATH_SEP '\\' +#define PATH_SEP '\\' #endif -//======================= MAC OS X DEFINES ===================== +//============================================================== MAC OS X === #if defined(MACOS_X) #define __cdecl #define __declspec(x) #define stricmp strcasecmp -#define ID_INLINE inline +#define ID_INLINE inline #ifdef __ppc__ -#define CPUSTRING "MacOSX-ppc" +#define CPUSTRING "MacOSX-ppc" #elif defined __i386__ -#define CPUSTRING "MacOSX-i386" +#define CPUSTRING "MacOSX-i386" #else -#define CPUSTRING "MacOSX-other" +#define CPUSTRING "MacOSX-other" #endif -#define PATH_SEP '/' +#define PATH_SEP '/' #define __rlwimi(out, in, shift, maskBegin, maskEnd) \ asm("rlwimi %0,%1,%2,%3,%4" : "=r" (out) : "r" (in), \ "i" (shift), "i" (maskBegin), "i" (maskEnd)) #define __dcbt(addr, offset) asm("dcbt %0,%1" : : "b" (addr), "r" (offset)) -static inline unsigned int __lwbrx(register void *addr, register int offset) { - register unsigned int word; - - asm("lwbrx %0,%2,%1" : "=r" (word) : "r" (addr), "b" (offset)); - return word; +static ID_INLINE unsigned int __lwbrx(register void *addr, + register int offset) { + register unsigned int word; + + asm("lwbrx %0,%2,%1" : "=r" (word) : "r" (addr), "b" (offset)); + return word; } -static inline unsigned short __lhbrx(register void *addr, register int offset) { - register unsigned short halfword; - - asm("lhbrx %0,%2,%1" : "=r" (halfword) : "r" (addr), "b" (offset)); - return halfword; +static ID_INLINE unsigned short __lhbrx(register void *addr, + register int offset) { + register unsigned short halfword; + + asm("lhbrx %0,%2,%1" : "=r" (halfword) : "r" (addr), "b" (offset)); + return halfword; } -static inline float __fctiw(register float f) { - register float fi; - - asm("fctiw %0,%1" : "=f" (fi) : "f" (f)); +static ID_INLINE float __fctiw(register float f) { + register float fi; - return fi; + asm("fctiw %0,%1" : "=f" (fi) : "f" (f)); + return fi; } #define BigShort -static inline short LittleShort(short l) { return ShortSwap(l); } +static ID_INLINE short LittleShort(short l) { return ShortSwap(l); } #define BigLong -static inline int LittleLong (int l) { return LongSwap(l); } +static ID_INLINE int LittleLong(int l) { return LongSwap(l); } #define BigFloat -static inline float LittleFloat (const float l) { return FloatSwap(&l); } +static ID_INLINE float LittleFloat(const float l) { return FloatSwap(&l); } #endif -//======================= MAC DEFINES ================================= +//=================================================================== MAC === #ifdef __MACOS__ #include -#define ID_INLINE inline +#define ID_INLINE inline -#define CPUSTRING "MacOS-PPC" +#define CPUSTRING "MacOS-PPC" -#define PATH_SEP ':' +#define PATH_SEP ':' void Sys_PumpEvents( void ); #define BigShort -static inline short LittleShort(short l) { return ShortSwap(l); } +static ID_INLINE short LittleShort(short l) { return ShortSwap(l); } #define BigLong -static inline int LittleLong (int l) { return LongSwap(l); } +static ID_INLINE int LittleLong(int l) { return LongSwap(l); } #define BigFloat -static inline float LittleFloat (const float l) { return FloatSwap(&l); } +static ID_INLINE float LittleFloat(const float l) { return FloatSwap(&l); } #endif -//======================= LINUX DEFINES ================================= +//================================================================= LINUX === // the mac compiler can't handle >32k of locals, so we // just waste space and make big arrays static... @@ -183,64 +198,65 @@ static inline float LittleFloat (const float l) { return FloatSwap(&l); } // bk001205 - from Makefile #define stricmp strcasecmp -#define ID_INLINE inline +#define ID_INLINE inline #ifdef __i386__ -#define CPUSTRING "linux-i386" +#define CPUSTRING "linux-i386" #elif defined __axp__ -#define CPUSTRING "linux-alpha" +#define CPUSTRING "linux-alpha" #elif defined __x86_64__ -#define CPUSTRING "linux-x86_64" +#define CPUSTRING "linux-x86_64" #elif defined __powerpc64__ -#define CPUSTRING "linux-ppc64" +#define CPUSTRING "linux-ppc64" #elif defined __powerpc__ -#define CPUSTRING "linux-ppc" +#define CPUSTRING "linux-ppc" #elif defined __s390__ -#define CPUSTRING "linux-s390" +#define CPUSTRING "linux-s390" #elif defined __s390x__ -#define CPUSTRING "linux-s390x" +#define CPUSTRING "linux-s390x" #elif defined __ia64__ -#define CPUSTRING "linux-ia64" +#define CPUSTRING "linux-ia64" #else -#define CPUSTRING "linux-other" +#define CPUSTRING "linux-other" #endif -#define PATH_SEP '/' +#define PATH_SEP '/' #if __FLOAT_WORD_ORDER == __LITTLE_ENDIAN -inline static short BigShort( short l) { return ShortSwap(l); } +ID_INLINE static short BigShort( short l) { return ShortSwap(l); } #define LittleShort -inline static int BigLong(int l) { return LongSwap(l); } +ID_INLINE static int BigLong(int l) { return LongSwap(l); } #define LittleLong -inline static float BigFloat(const float l) { return FloatSwap(&l); } +ID_INLINE static float BigFloat(const float l) { return FloatSwap(&l); } #define LittleFloat #else #define BigShort -inline static short LittleShort(short l) { return ShortSwap(l); } +ID_INLINE static short LittleShort(short l) { return ShortSwap(l); } #define BigLong -inline static int LittleLong (int l) { return LongSwap(l); } +ID_INLINE static int LittleLong(int l) { return LongSwap(l); } #define BigFloat -inline static float LittleFloat (const float l) { return FloatSwap(&l); } +ID_INLINE static float LittleFloat(const float l) { return FloatSwap(&l); } #endif #endif -//======================= FreeBSD DEFINES ===================== +//=============================================================== FreeBSD === + #ifdef __FreeBSD__ // rb010123 #define stricmp strcasecmp -#define ID_INLINE inline +#define ID_INLINE inline #ifdef __i386__ -#define CPUSTRING "freebsd-i386" +#define CPUSTRING "freebsd-i386" #elif defined __axp__ -#define CPUSTRING "freebsd-alpha" +#define CPUSTRING "freebsd-alpha" #else -#define CPUSTRING "freebsd-other" +#define CPUSTRING "freebsd-other" #endif -#define PATH_SEP '/' +#define PATH_SEP '/' #if !idppc static short BigShort( short l) { return ShortSwap(l); } @@ -253,14 +269,14 @@ static float BigFloat(const float l) { return FloatSwap(&l); } #define BigShort static short LittleShort(short l) { return ShortSwap(l); } #define BigLong -static int LittleLong (int l) { return LongSwap(l); } +static int LittleLong(int l) { return LongSwap(l); } #define BigFloat -static float LittleFloat (const float l) { return FloatSwap(&l); } +static float LittleFloat(const float l) { return FloatSwap(&l); } #endif #endif -//======================= SUNOS DEFINES ================================= +//================================================================= SUNOS === #ifdef __sun @@ -270,30 +286,30 @@ static float LittleFloat (const float l) { return FloatSwap(&l); } // bk001205 - from Makefile #define stricmp strcasecmp -#define ID_INLINE inline +#define ID_INLINE inline #ifdef __i386__ -#define CPUSTRING "Solaris-i386" +#define CPUSTRING "Solaris-i386" #elif defined __sparc -#define CPUSTRING "Solaris-sparc" +#define CPUSTRING "Solaris-sparc" #endif -#define PATH_SEP '/' +#define PATH_SEP '/' #if defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) #define BigShort -inline static short LittleShort(short l) { return ShortSwap(l); } +ID_INLINE static short LittleShort(short l) { return ShortSwap(l); } #define BigLong -inline static int LittleLong (int l) { return LongSwap(l); } +ID_INLINE static int LittleLong(int l) { return LongSwap(l); } #define BigFloat -inline static float LittleFloat (const float l) { return FloatSwap(&l); } +ID_INLINE static float LittleFloat(const float l) { return FloatSwap(&l); } #elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) -inline static short BigShort( short l) { return ShortSwap(l); } +ID_INLINE static short BigShort( short l) { return ShortSwap(l); } #define LittleShort -inline static int BigLong(int l) { return LongSwap(l); } +ID_INLINE static int BigLong(int l) { return LongSwap(l); } #define LittleLong -inline static float BigFloat(const float l) { return FloatSwap(&l); } +ID_INLINE static float BigFloat(const float l) { return FloatSwap(&l); } #define LittleFloat #else @@ -302,7 +318,26 @@ inline static float BigFloat(const float l) { return FloatSwap(&l); } #endif -#ifndef Q3_VM +//================================================================== Q3VM === + +#ifdef Q3_VM + +#define ID_INLINE + +#define CPUSTRING "q3vm" + +#define PATH_SEP '/' + +#define LittleShort +#define LittleLong +#define LittleFloat +#define BigShort +#define BigLong +#define BigFloat + +#endif + +//=========================================================================== //catch missing defines in above blocks #ifndef CPUSTRING -- cgit v1.2.3