From 1cf0d8510a4102506ce84dab72ca3381757bb106 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Fri, 30 Nov 2001 06:19:58 +0000 Subject: * debug.cc (makethread): Eliminate unneeded function call. * miscfuncs.cc (tls_ix): Predefine. * perthread.h (set_reent): Eliminate. (get_reent): Ditto. * winbase.h (my_tlsalloc): Use global stack base pointer. Set newly allocated location to NULL. (my_tlssetvalue): Use global stack base pointer. (my_tlsgetvalue): Ditto. --- winsup/cygwin/winbase.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'winsup/cygwin/winbase.h') diff --git a/winsup/cygwin/winbase.h b/winsup/cygwin/winbase.h index 801badc44..d72bb0893 100644 --- a/winsup/cygwin/winbase.h +++ b/winsup/cygwin/winbase.h @@ -42,28 +42,27 @@ extern __inline__ long ilockexch (long *t, long v) #define InterlockedExchange ilockexch extern long tls_ix; +extern char * volatile *__stackbase __asm__ ("%fs:4"); extern __inline__ DWORD my_tlsalloc () { - return (DWORD) ilockincr (&tls_ix); + DWORD n = ilockdecr (&tls_ix); + __stackbase[tls_ix] = NULL; + return n; } extern __inline__ BOOL my_tlssetvalue (DWORD ix, void *val) { - char **stackbase; - __asm__ volatile ("movl %%fs:4,%0": "=g" (stackbase)); - stackbase[-ix] = (char *) val; + __stackbase[ix] = (char *) val; return 1; } extern __inline__ void * my_tlsgetvalue (DWORD ix) { - char **stackbase; - __asm__ volatile ("movl %%fs:4,%0": "=g" (stackbase)); - return stackbase[-ix]; + return __stackbase[ix]; } extern __inline__ BOOL -- cgit v1.2.3