aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorJonathan Yong <10walls@gmail.com>2022-01-15 13:24:33 +0000
committerJonathan Yong <10walls@gmail.com>2022-01-15 13:32:05 +0000
commitdcf8fe1eeab668a4d24bcc4baa3ad185dbf1b5e0 (patch)
tree739100c159b97fd54143bbf994ef53718df02cba /libgcc
parent617db51d7ebef18912c158a890728e164f2d8927 (diff)
downloadgcc-dcf8fe1eeab668a4d24bcc4baa3ad185dbf1b5e0.zip
gcc-dcf8fe1eeab668a4d24bcc4baa3ad185dbf1b5e0.tar.gz
gcc-dcf8fe1eeab668a4d24bcc4baa3ad185dbf1b5e0.tar.bz2
libgcc: Fix __gthr_i486_lock_cmp_xchg clobber for Windows
2022-01-14 David <gccbugzilla@limegreensocks.com> libgcc/ * config/i386/gthr-win32.c (__gthr_i486_lock_cmp_xchg): Remove inlined version, Windows 95 is no longer relevant. * config/i386/gthr-win32.h (__GTHREAD_I486_INLINE_LOCK_PRIMITIVES): unset.
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/config/i386/gthr-win32.c2
-rw-r--r--libgcc/config/i386/gthr-win32.h23
2 files changed, 2 insertions, 23 deletions
diff --git a/libgcc/config/i386/gthr-win32.c b/libgcc/config/i386/gthr-win32.c
index 0ad29be..fad8f8a 100644
--- a/libgcc/config/i386/gthr-win32.c
+++ b/libgcc/config/i386/gthr-win32.c
@@ -31,8 +31,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#ifndef __GTHREAD_HIDE_WIN32API
# define __GTHREAD_HIDE_WIN32API 1
#endif
-#undef __GTHREAD_I486_INLINE_LOCK_PRIMITIVES
-#define __GTHREAD_I486_INLINE_LOCK_PRIMITIVES
#include "gthr-win32.h"
/* Windows32 threads specific definitions. The windows32 threading model
diff --git a/libgcc/config/i386/gthr-win32.h b/libgcc/config/i386/gthr-win32.h
index cbc7a2d..6f70e9b 100644
--- a/libgcc/config/i386/gthr-win32.h
+++ b/libgcc/config/i386/gthr-win32.h
@@ -374,28 +374,9 @@ extern int _CRT_MT;
extern int __mingwthr_key_dtor (unsigned long, void (*) (void *));
#endif /* _WIN32 && !__CYGWIN__ */
-/* The Windows95 kernel does not export InterlockedCompareExchange.
- This provides a substitute. When building apps that reference
- gthread_mutex_try_lock, the __GTHREAD_I486_INLINE_LOCK_PRIMITIVES
- macro must be defined if Windows95 is a target. Currently
- gthread_mutex_try_lock is not referenced by libgcc or libstdc++. */
-#ifdef __GTHREAD_I486_INLINE_LOCK_PRIMITIVES
-static inline long
-__gthr_i486_lock_cmp_xchg(long *__dest, long __xchg, long __comperand)
-{
- long result;
- __asm__ __volatile__ ("\n\
- lock\n\
- cmpxchg{l} {%4, %1|%1, %4}\n"
- : "=a" (result), "=m" (*__dest)
- : "0" (__comperand), "m" (*__dest), "r" (__xchg)
- : "cc");
- return result;
-}
-#define __GTHR_W32_InterlockedCompareExchange __gthr_i486_lock_cmp_xchg
-#else /* __GTHREAD_I486_INLINE_LOCK_PRIMITIVES */
+/* __GTHR_W32_InterlockedCompareExchange is left over from win95,
+ which did not support InterlockedCompareExchange. */
#define __GTHR_W32_InterlockedCompareExchange InterlockedCompareExchange
-#endif /* __GTHREAD_I486_INLINE_LOCK_PRIMITIVES */
static inline int
__gthread_active_p (void)