[CRT][NTDLL]
authorThomas Faber <thomas.faber@reactos.org>
Tue, 24 Jul 2012 16:45:50 +0000 (16:45 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Tue, 24 Jul 2012 16:45:50 +0000 (16:45 +0000)
- Separate some _CI* functions into their own files and export them from ntdll. Patch by Vincenzo Cotugno.
See issue #7085 for more details.

svn path=/trunk/; revision=56961

reactos/dll/ntdll/def/ntdll.spec
reactos/lib/sdk/crt/crt.cmake
reactos/lib/sdk/crt/include/internal/math.h
reactos/lib/sdk/crt/libcntpr.cmake
reactos/lib/sdk/crt/math/i386/ci.c
reactos/lib/sdk/crt/math/i386/cicos.c [new file with mode: 0644]
reactos/lib/sdk/crt/math/i386/cilog.c [new file with mode: 0644]
reactos/lib/sdk/crt/math/i386/cipow.c [new file with mode: 0644]
reactos/lib/sdk/crt/math/i386/cisin.c [new file with mode: 0644]
reactos/lib/sdk/crt/math/i386/cisqrt.c [new file with mode: 0644]
reactos/lib/sdk/crt/msvcrtex.cmake

index 17012b6..30210bb 100644 (file)
 @ stdcall ZwWriteRequestData(ptr ptr long ptr long ptr)
 @ stdcall ZwWriteVirtualMemory(long ptr ptr long ptr)
 @ stdcall ZwYieldExecution()
-;@ cdecl _CIcos
-;@ cdecl _CIlog
-;@ cdecl -private -arch=i386 _CIpow()
-;@ cdecl _CIsin
-;@ cdecl _CIsqrt
+@ cdecl -arch=i386 _CIcos()
+@ cdecl -arch=i386 _CIlog()
+@ cdecl -arch=i386 _CIpow()
+@ cdecl -arch=i386 _CIsin()
+@ cdecl -arch=i386 _CIsqrt()
 @ cdecl -arch=x86_64 __C_specific_handler(ptr long ptr ptr)
 @ cdecl __isascii(long)
 @ cdecl __iscsym(long)
index 5024bc8..6abd6fe 100644 (file)
@@ -131,11 +131,11 @@ list(APPEND CRT_SOURCE
     misc/stubs.c
     misc/tls.c
     printf/_cprintf.c
-       printf/_cwprintf.c
+    printf/_cwprintf.c
     printf/_snprintf.c
     printf/_snwprintf.c
     printf/_vcprintf.c
-       printf/_vcwprintf.c
+    printf/_vcwprintf.c
     printf/_vscprintf.c
     printf/_vscwprintf.c
     printf/_vsnprintf.c
@@ -377,6 +377,11 @@ if(ARCH MATCHES i386)
         math/i386/tan_asm.s
         math/i386/atan2_asm.s
         math/i386/ci.c
+        math/i386/cicos.c
+        math/i386/cilog.c
+        math/i386/cipow.c
+        math/i386/cisin.c
+        math/i386/cisqrt.c
         math/i386/exp_asm.s
         math/i386/fmod_asm.s
         math/i386/fmodf_asm.s
index 7f74307..a1bbfeb 100644 (file)
@@ -9,4 +9,18 @@ int     _isinf          (double); /* not exported */
 int     _isnanl         (long double); /* not exported */
 int     _isinfl         (long double); /* not exported */
 
+#if defined(__GNUC__)
+#define FPU_DOUBLE(var) double var; \
+    __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var) : )
+#define FPU_DOUBLES(var1,var2) double var1,var2; \
+    __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var2) : ); \
+    __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var1) : )
+#elif defined(_MSC_VER)
+#define FPU_DOUBLE(var) double var; \
+    __asm { fstp [var] }; __asm { fwait };
+#define FPU_DOUBLES(var1,var2) double var1,var2; \
+    __asm { fstp [var1] }; __asm { fwait }; \
+    __asm { fstp [var2] }; __asm { fwait };
+#endif
+
 #endif
index 5c51414..7ff8812 100644 (file)
@@ -94,6 +94,11 @@ if(ARCH MATCHES i386)
         math/i386/sqrt_asm.s
         math/i386/tan_asm.s
         math/i386/ci.c
+        math/i386/cicos.c
+        math/i386/cilog.c
+        math/i386/cipow.c
+        math/i386/cisin.c
+        math/i386/cisqrt.c
         misc/i386/readcr4.S)
     if(NOT MSVC)
         list(APPEND LIBCNTPR_SOURCE except/i386/chkstk_ms.s)
index 0aeb0d1..8b195d1 100644 (file)
@@ -1,36 +1,5 @@
 #include <precomp.h>
-#include <math.h>
 
-#if defined(__GNUC__)
-#define FPU_DOUBLE(var) double var; \
-       __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var) : )
-#define FPU_DOUBLES(var1,var2) double var1,var2; \
-       __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var2) : ); \
-       __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var1) : )
-#elif defined(_MSC_VER)
-#define FPU_DOUBLE(var) double var; \
-       __asm { fstp [var] }; __asm { fwait };
-#define FPU_DOUBLES(var1,var2) double var1,var2; \
-       __asm { fstp [var1] }; __asm { fwait }; \
-       __asm { fstp [var2] }; __asm { fwait };
-#endif
-
-/*
- * @implemented
- */
-double CDECL   _CIsin(void)
-{
-       FPU_DOUBLE(x);
-       return sin(x);
-}
-/*
- * @implemented
- */
-double CDECL   _CIcos(void)
-{
-       FPU_DOUBLE(x);
-       return cos(x);
-}
 /*
  * @implemented
  */
@@ -103,14 +72,6 @@ double      CDECL   _CIexp(void)
        FPU_DOUBLE(x);
        return exp(x);
 }
-/*
- * @implemented
- */
-double CDECL   _CIlog(void)
-{
-       FPU_DOUBLE(x);
-       return log(x);
-}
 /*
  * @implemented
  */
@@ -119,22 +80,6 @@ double      CDECL   _CIlog10(void)
        FPU_DOUBLE(x);
        return log10(x);
 }
-/*
- * @implemented
- */
-double CDECL   _CIpow(void)
-{
-       FPU_DOUBLES(x, y);
-       return pow(x, y);
-}
-/*
- * @implemented
- */
-double CDECL   _CIsqrt(void)
-{
-       FPU_DOUBLE(x);
-       return sqrt(x);
-}
 /*
  * @implemented
  */
diff --git a/reactos/lib/sdk/crt/math/i386/cicos.c b/reactos/lib/sdk/crt/math/i386/cicos.c
new file mode 100644 (file)
index 0000000..fe5d000
--- /dev/null
@@ -0,0 +1,10 @@
+#include <precomp.h>
+
+/*
+ * @implemented
+ */
+double CDECL   _CIcos(void)
+{
+       FPU_DOUBLE(x);
+       return cos(x);
+}
diff --git a/reactos/lib/sdk/crt/math/i386/cilog.c b/reactos/lib/sdk/crt/math/i386/cilog.c
new file mode 100644 (file)
index 0000000..26a552a
--- /dev/null
@@ -0,0 +1,10 @@
+#include <precomp.h>
+
+/*
+ * @implemented
+ */
+double CDECL   _CIlog(void)
+{
+       FPU_DOUBLE(x);
+       return log(x);
+}
diff --git a/reactos/lib/sdk/crt/math/i386/cipow.c b/reactos/lib/sdk/crt/math/i386/cipow.c
new file mode 100644 (file)
index 0000000..2626f00
--- /dev/null
@@ -0,0 +1,10 @@
+#include <precomp.h>
+
+/*
+ * @implemented
+ */
+double CDECL   _CIpow(void)
+{
+       FPU_DOUBLES(x, y);
+       return pow(x, y);
+}
diff --git a/reactos/lib/sdk/crt/math/i386/cisin.c b/reactos/lib/sdk/crt/math/i386/cisin.c
new file mode 100644 (file)
index 0000000..7b8f145
--- /dev/null
@@ -0,0 +1,10 @@
+#include <precomp.h>
+
+/*
+ * @implemented
+ */
+double CDECL   _CIsin(void)
+{
+       FPU_DOUBLE(x);
+       return sin(x);
+}
diff --git a/reactos/lib/sdk/crt/math/i386/cisqrt.c b/reactos/lib/sdk/crt/math/i386/cisqrt.c
new file mode 100644 (file)
index 0000000..f5515fb
--- /dev/null
@@ -0,0 +1,10 @@
+#include <precomp.h>
+
+/*
+ * @implemented
+ */
+double CDECL   _CIsqrt(void)
+{
+       FPU_DOUBLE(x);
+       return sqrt(x);
+}
index 60f9206..68036f5 100644 (file)
@@ -50,6 +50,11 @@ if(ARCH MATCHES i386)
         except/i386/chkstk_asm.s
         except/i386/chkstk_ms.s
         math/i386/ci.c
+        math/i386/cicos.c
+        math/i386/cilog.c
+        math/i386/cipow.c
+        math/i386/cisin.c
+        math/i386/cisqrt.c
         math/i386/ftol2_asm.s
         math/i386/alldiv_asm.s)
 elseif(ARCH MATCHES amd64)