Commit cebd60b3 authored by Ulrich Weigand's avatar Ulrich Weigand Committed by Alexandre Julliard

Removed global variable pCurrentTeb.

parent 73bd8d2b
......@@ -739,15 +739,29 @@ WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter );
#define DBG_EXCEPTION_NOT_HANDLED 0x80010001
struct _TEB;
#if defined(__i386__) && defined(__WINE__)
#ifdef __WINE__
#if defined(__i386__)
static inline struct _TEB * WINE_UNUSED __get_teb(void)
{
struct _TEB *teb;
__asm__(".byte 0x64\n\tmovl (0x18),%0" : "=r" (teb));
return teb;
}
#define NtCurrentTeb() __get_teb()
#elif defined(HAVE__LWP_CREATE)
extern void *_lwp_getprivate(void);
static inline struct _TEB * WINE_UNUSED __get_teb(void)
{
return (struct _TEB *)_lwp_getprivate();
}
#else
#error NtCurrentTeb() not defined for this architecture!
#endif
#define NtCurrentTeb() __get_teb()
#else /* __WINE__ */
extern struct _TEB * WINAPI NtCurrentTeb(void);
#endif
......
......@@ -56,11 +56,6 @@ extern int clone( int (*fn)(void *arg), void *stack, int flags, void *arg );
static int init_done;
#ifndef __i386__
static TEB *pCurrentTeb;
#endif
#ifndef NO_REENTRANT_LIBC
/***********************************************************************
......@@ -112,13 +107,14 @@ int *__h_errno_location()
*/
void SYSDEPS_SetCurThread( TEB *teb )
{
#ifdef __i386__
#if defined(__i386__)
/* On the i386, the current thread is in the %fs register */
SET_FS( teb->teb_sel );
#else
/* FIXME: only works if there is no preemptive task-switching going on... */
pCurrentTeb = teb;
#endif /* __i386__ */
#elif defined(HAVE__LWP_CREATE)
/* On non-i386 Solaris, we use the LWP private pointer */
_lwp_setprivate( teb );
#endif
init_done = 1; /* now we can use threading routines */
}
......@@ -216,20 +212,13 @@ void SYSDEPS_ExitThread(void)
* This will crash and burn if called before threading is initialized
*/
#ifdef NtCurrentTeb
/* if it was defined as a macro, we need to do some magic */
#ifdef NtCurrentTeb
#undef NtCurrentTeb
struct _TEB * WINAPI NtCurrentTeb(void)
{
return __get_teb();
}
#else /* NtCurrentTeb */
#endif
struct _TEB * WINAPI NtCurrentTeb(void)
{
return pCurrentTeb;
return __get_teb();
}
#endif /* NtCurrentTeb */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment