h3, fxglide.h, gthread.c: copy over gcc compatibility changes from h5.
This commit is contained in:
@@ -1891,13 +1891,21 @@ _grSstVRetraceOn(void);
|
|||||||
#define WNT_TEB_TLS_OFFSET 0xE10
|
#define WNT_TEB_TLS_OFFSET 0xE10
|
||||||
#define WNT_TLS_INDEX_TO_OFFSET(i) ((i)*sizeof(DWORD)+WNT_TEB_TLS_OFFSET)
|
#define WNT_TLS_INDEX_TO_OFFSET(i) ((i)*sizeof(DWORD)+WNT_TEB_TLS_OFFSET)
|
||||||
|
|
||||||
#define __GR_GET_TLSC_VALUE() \
|
#ifdef __GNUC__
|
||||||
__asm { \
|
|
||||||
__asm mov eax, DWORD PTR fs:[WNT_TEB_PTR] \
|
extern __inline FxU32 getThreadValueFast (void)
|
||||||
__asm add eax, DWORD PTR _GlideRoot.tlsOffset \
|
{
|
||||||
__asm mov eax, DWORD PTR [eax] \
|
FxU32 t;
|
||||||
|
__asm __volatile (" \
|
||||||
|
mov %%fs:(%0), %%eax; \
|
||||||
|
add %1, %%eax; \
|
||||||
|
mov (%%eax), %%eax; \
|
||||||
|
":"=a"(t):"i"(WNT_TEB_PTR), "g"(_GlideRoot.tlsOffset));
|
||||||
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else /* __GNUC__ */
|
||||||
|
|
||||||
#pragma warning (4:4035) /* No return value */
|
#pragma warning (4:4035) /* No return value */
|
||||||
__inline FxU32
|
__inline FxU32
|
||||||
getThreadValueFast() {
|
getThreadValueFast() {
|
||||||
@@ -1907,7 +1915,7 @@ getThreadValueFast() {
|
|||||||
__asm mov eax, DWORD PTR [eax]
|
__asm mov eax, DWORD PTR [eax]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#pragma warning (3:4035)
|
#endif /* __GNUC__ */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (GLIDE_PLATFORM & GLIDE_OS_MACOS)
|
#if (GLIDE_PLATFORM & GLIDE_OS_MACOS)
|
||||||
|
|||||||
@@ -63,19 +63,11 @@ void setThreadValue( unsigned long value ) {
|
|||||||
TlsSetValue( _GlideRoot.tlsIndex, (void*)value );
|
TlsSetValue( _GlideRoot.tlsIndex, (void*)value );
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning (4:4035) /* No return value */
|
unsigned long getThreadValueSLOW( void )
|
||||||
unsigned long getThreadValueSLOW( void ) {
|
{
|
||||||
GR_CHECK_F( "getThreadValue", !threadInit, "Thread storage not initialized\n" );
|
GR_CHECK_F( "getThreadValue", !threadInit, "Thread storage not initialized\n" );
|
||||||
|
|
||||||
#if 0
|
return getThreadValueFast();
|
||||||
return (FxU32)TlsGetValue( _GlideRoot.tlsIndex );
|
|
||||||
#elif 1
|
|
||||||
__GR_GET_TLSC_VALUE();
|
|
||||||
#else
|
|
||||||
__asm {
|
|
||||||
__asm mov esi, DWORD PTR fs:[WNT_TEB_PTR]
|
|
||||||
__asm add esi, DWORD PTR _GlideRoot.tlsOffset \
|
|
||||||
__asm mov eax, DWORD PTR [esi] \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user