---

 mingw-w64-headers/include/winnt.h | 91 +++++++++++++++----------------
 1 file changed, 45 insertions(+), 46 deletions(-)

diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h
index f232ad4a7..23f1f298b 100644
--- a/mingw-w64-headers/include/winnt.h
+++ b/mingw-w64-headers/include/winnt.h
@@ -2481,25 +2481,8 @@ __buildmemorybarrier()
 #define PF_TEMPORAL_LEVEL_1
 #define PF_NON_TEMPORAL_LEVEL_ALL
 
-#define PcTeb 0x18
-  struct _TEB *NtCurrentTeb(void);
-  PVOID GetCurrentFiber(void);
-  PVOID GetFiberData(void);
-
 #define DbgRaiseAssertionFailure __int2c
 
-  FORCEINLINE struct _TEB *NtCurrentTeb(void)
-  {
-    return (struct _TEB *)__readfsdword(PcTeb);
-  }
-  FORCEINLINE PVOID GetCurrentFiber(void)
-  {
-    return(PVOID)__readfsdword(0x10);
-  }
-  FORCEINLINE PVOID GetFiberData(void)
-  {
-      return *(PVOID *)GetCurrentFiber();
-  }
 #endif /* defined(__i386__) && !defined(__x86_64) */
 
 #define EXCEPTION_READ_FAULT 0
@@ -2663,8 +2646,6 @@ __buildmemorybarrier()
 #define UnsignedMultiplyHigh __UMULH
 
     ULONGLONG UnsignedMultiplyHigh(ULONGLONG Multiplier,ULONGLONG Multiplicand);
-#else  /* __ia64__ */
-    struct _TEB *NtCurrentTeb(void);
 #endif /* __ia64__ */
 #endif /* !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA64_) */
 
@@ -10224,38 +10205,56 @@ typedef DWORD (WINAPI *PRTL_RUN_ONCE_INIT_FN)(PRTL_RUN_ONCE, PVOID, PVOID *);
     FORCEINLINE VOID TpDestroyCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) { UNREFERENCED_PARAMETER (cbe); }
 #endif
 
-#if defined(__x86_64) && !defined (__WIDL__)
+#if !defined(__ia64__) && !defined (__WIDL__)
     struct _TEB *NtCurrentTeb(VOID);
     PVOID GetCurrentFiber(VOID);
     PVOID GetFiberData(VOID);
-    FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB,Self)); }
-    FORCEINLINE PVOID GetCurrentFiber(VOID) { return(PVOID)__readgsqword(FIELD_OFFSET(NT_TIB,FiberData)); }
-    FORCEINLINE PVOID GetFiberData(VOID) {
-      return *(PVOID *)GetCurrentFiber();
+
+#if defined (__aarch64__)
+    FORCEINLINE struct _TEB *NtCurrentTeb(VOID)
+    {
+        struct _TEB *teb;
+        __asm ("mov %0, x18" : "=r" (teb));
+        return teb;
     }
-#endif /* __x86_64 */
+    FORCEINLINE PVOID GetCurrentFiber(VOID)
+    {
+        return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData);
+    }
+#elif defined(__x86_64__)
+    FORCEINLINE struct _TEB *NtCurrentTeb(VOID)
+    {
+        return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB,Self));
+    }
+    FORCEINLINE PVOID GetCurrentFiber(VOID)
+    {
+        return(PVOID)__readgsqword(FIELD_OFFSET(NT_TIB,FiberData));
+    }
+#elif defined(__i386__)
+#   define PcTeb 0x18
+    FORCEINLINE struct _TEB *NtCurrentTeb(void)
+    {
+        return (struct _TEB *)__readfsdword(PcTeb);
+    }
+    FORCEINLINE PVOID GetCurrentFiber(void)
+    {
+        return(PVOID)__readfsdword(0x10);
+    }
+#elif defined (__arm__)
+    FORCEINLINE struct _TEB *NtCurrentTeb(VOID)
+    {
+        struct _TEB *teb;
+        __asm ("mrc p15, 0, %0, c13, c0, 2" : "=r" (teb));
+        return teb;
+    }
+    FORCEINLINE PVOID GetCurrentFiber(VOID)
+    {
+        return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData);
+    }
+#endif
 
-#if defined (__arm__) && !defined (__WIDL__)
-    struct _TEB *NtCurrentTeb (VOID);
-    PVOID GetCurrentFiber (VOID);
-    PVOID GetFiberData (VOID);
-    FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { struct _TEB *teb;
-    __asm ("mrc p15, 0, %0, c13, c0, 2" : "=r" (teb));
-    return teb; }
-    FORCEINLINE PVOID GetCurrentFiber(VOID) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); }
-    FORCEINLINE PVOID GetFiberData (VOID) { return *(PVOID *)GetCurrentFiber (); }
-#endif /* arm */
-
-#if defined (__aarch64__) && !defined (__WIDL__)
-    struct _TEB *NtCurrentTeb (VOID);
-    PVOID GetCurrentFiber (VOID);
-    PVOID GetFiberData (VOID);
-    FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { struct _TEB *teb;
-    __asm ("mov %0, x18" : "=r" (teb));
-    return teb; }
-    FORCEINLINE PVOID GetCurrentFiber(VOID) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); }
-    FORCEINLINE PVOID GetFiberData (VOID) { return *(PVOID *)GetCurrentFiber (); }
-#endif /* aarch64 */
+    FORCEINLINE PVOID GetFiberData (VOID) { return *(void **)GetCurrentFiber (); }
+#endif /* !defined(__ia64__) && !defined (__WIDL__) */
 
 #ifndef _NTTMAPI_
 #define _NTTMAPI_

_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to