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