Alexandre Julliard : include/msvcrt: Define more CPU control word flags.

Alexandre Julliard julliard at winehq.org
Fri Nov 26 10:20:07 CST 2010


Module: wine
Branch: master
Commit: 1ae23af85b5e68c74652faddfd33dcfa0cfb9cc4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1ae23af85b5e68c74652faddfd33dcfa0cfb9cc4

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Nov 26 14:51:46 2010 +0100

include/msvcrt: Define more CPU control word flags.

---

 dlls/msvcrt/msvcrt.h        |   11 +++++++++++
 dlls/msvcrt/tests/headers.c |   12 ++++++++++--
 include/msvcrt/float.h      |   18 ++++++++++--------
 3 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h
index b14a326..4ca3e3e 100644
--- a/dlls/msvcrt/msvcrt.h
+++ b/dlls/msvcrt/msvcrt.h
@@ -653,6 +653,12 @@ struct MSVCRT__stat64 {
 #define MSVCRT__FPCLASS_PN   0x0100  /* Positive Normal */
 #define MSVCRT__FPCLASS_PINF 0x0200  /* Positive Infinity */
 
+#define MSVCRT__MCW_EM        0x0008001f
+#define MSVCRT__MCW_IC        0x00040000
+#define MSVCRT__MCW_RC        0x00000300
+#define MSVCRT__MCW_PC        0x00030000
+#define MSVCRT__MCW_DN        0x03000000
+
 #define MSVCRT__EM_INVALID    0x00000010
 #define MSVCRT__EM_DENORMAL   0x00080000
 #define MSVCRT__EM_ZERODIVIDE 0x00000008
@@ -668,6 +674,11 @@ struct MSVCRT__stat64 {
 #define MSVCRT__PC_24         0x00020000
 #define MSVCRT__PC_53         0x00010000
 #define MSVCRT__PC_64         0x00000000
+#define MSVCRT__DN_SAVE       0x00000000
+#define MSVCRT__DN_FLUSH      0x01000000
+#define MSVCRT__DN_FLUSH_OPERANDS_SAVE_RESULTS 0x02000000
+#define MSVCRT__DN_SAVE_OPERANDS_FLUSH_RESULTS 0x03000000
+#define MSVCRT__EM_AMBIGUOUS  0x80000000
 
 #define MSVCRT_CLOCKS_PER_SEC 1000
 
diff --git a/dlls/msvcrt/tests/headers.c b/dlls/msvcrt/tests/headers.c
index c39948d..ef6e37d 100644
--- a/dlls/msvcrt/tests/headers.c
+++ b/dlls/msvcrt/tests/headers.c
@@ -425,7 +425,11 @@ static void test_defines(void)
     CHECK_DEF(_FPE_STACKOVERFLOW);
     CHECK_DEF(_FPE_STACKUNDERFLOW);
     CHECK_DEF(_FPE_EXPLICITGEN);
-#ifdef __i386__
+    CHECK_DEF(_MCW_EM);
+    CHECK_DEF(_MCW_IC);
+    CHECK_DEF(_MCW_RC);
+    CHECK_DEF(_MCW_PC);
+    CHECK_DEF(_MCW_DN);
     CHECK_DEF(_EM_INVALID);
     CHECK_DEF(_EM_DENORMAL);
     CHECK_DEF(_EM_ZERODIVIDE);
@@ -441,7 +445,11 @@ static void test_defines(void)
     CHECK_DEF(_PC_24);
     CHECK_DEF(_PC_53);
     CHECK_DEF(_PC_64);
-#endif
+    CHECK_DEF(_DN_SAVE);
+    CHECK_DEF(_DN_FLUSH);
+    CHECK_DEF(_DN_FLUSH_OPERANDS_SAVE_RESULTS);
+    CHECK_DEF(_DN_SAVE_OPERANDS_FLUSH_RESULTS);
+    CHECK_DEF(_EM_AMBIGUOUS);
 }
 
 #endif /* __WINE_USE_MSVCRT */
diff --git a/include/msvcrt/float.h b/include/msvcrt/float.h
index 7d8f8ae..270e175 100644
--- a/include/msvcrt/float.h
+++ b/include/msvcrt/float.h
@@ -60,14 +60,12 @@ extern "C" {
 #define LDBL_RADIX  _LDBL_RADIX
 #define LDBL_ROUNDS _LDBL_ROUNDS
 
-/* _controlfp masks and bitflags - x86 only so far */
-#ifdef __i386__
-
 /* Control word masks for unMask */
-#define _MCW_EM 0x0008001F  /* Error masks */
-#define _MCW_IC 0x00040000  /* Infinity */
-#define _MCW_RC 0x00000300  /* Rounding */
-#define _MCW_PC 0x00030000  /* Precision */
+#define _MCW_EM 0x0008001f
+#define _MCW_IC 0x00040000
+#define _MCW_RC 0x00000300
+#define _MCW_PC 0x00030000
+#define _MCW_DN 0x03000000
 
 /* Control word values for unNew (use with related unMask above) */
 #define _EM_INVALID    0x00000010
@@ -85,7 +83,11 @@ extern "C" {
 #define _PC_24         0x00020000
 #define _PC_53         0x00010000
 #define _PC_64         0x00000000
-#endif
+#define _DN_SAVE       0x00000000
+#define _DN_FLUSH      0x01000000
+#define _DN_FLUSH_OPERANDS_SAVE_RESULTS 0x02000000
+#define _DN_SAVE_OPERANDS_FLUSH_RESULTS 0x03000000
+#define _EM_AMBIGUOUS  0x80000000
 
 /* _statusfp bit flags */
 #define _SW_INEXACT    0x00000001 /* inexact (precision) */




More information about the wine-cvs mailing list