Move _fpreset call so it is called for each thread rather than only at startup

Reverts d82c6defa723b6e7986091ce0fb74da544b9e0f6.

(cherry picked from commit b2fbefa65860a34f5851a439316d9e4b4d8ce3f2)
diff --git a/mingw-w64-crt/crt/tlssup.c b/mingw-w64-crt/crt/tlssup.c
index b1db2ed..16a602f 100644
--- a/mingw-w64-crt/crt/tlssup.c
+++ b/mingw-w64-crt/crt/tlssup.c
@@ -29,7 +29,6 @@
 #endif
 
 extern WINBOOL __mingw_TLScallback (HANDLE hDllHandle, DWORD reason, LPVOID reserved);
-extern void __cdecl __MINGW_NOTHROW _fpreset (void);
 
 #define FUNCS_PER_NODE 30
 
@@ -96,7 +95,6 @@
       return TRUE;
     }
 
-  _fpreset();
   ps = (uintptr_t) &__xd_a;
   ps += sizeof (uintptr_t);
   for ( ; ps != (uintptr_t) &__xd_z; ps += sizeof (uintptr_t))
diff --git a/mingw-w64-crt/crt/tlsthrd.c b/mingw-w64-crt/crt/tlsthrd.c
index c367ca1..bebe27b 100644
--- a/mingw-w64-crt/crt/tlsthrd.c
+++ b/mingw-w64-crt/crt/tlsthrd.c
@@ -17,6 +17,7 @@
 #include <windows.h>
 #include <stdlib.h>
 
+extern void __cdecl __MINGW_NOTHROW _fpreset (void);
 WINBOOL __mingw_TLScallback (HANDLE hDllHandle, DWORD reason, LPVOID reserved);
 int ___w64_mingwthr_remove_key_dtor (DWORD key);
 int ___w64_mingwthr_add_key_dtor (DWORD key, void (*dtor)(void *));
@@ -146,6 +147,7 @@
         }
       break;
     case DLL_THREAD_ATTACH:
+      _fpreset();
       break;
     case DLL_THREAD_DETACH:
       __mingwthr_run_key_dtors();