[CRT][NTDLL]

- 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
This commit is contained in:
Thomas Faber
2012-07-24 16:45:50 +00:00
parent aa8dbbffd8
commit f3417b4646
11 changed files with 86 additions and 62 deletions
+5 -5
View File
@@ -1292,11 +1292,11 @@
@ 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)
+7 -2
View 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
@@ -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
+5
View 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)
-55
View 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
*/
+10
View File
@@ -0,0 +1,10 @@
#include <precomp.h>
/*
* @implemented
*/
double CDECL _CIcos(void)
{
FPU_DOUBLE(x);
return cos(x);
}
+10
View File
@@ -0,0 +1,10 @@
#include <precomp.h>
/*
* @implemented
*/
double CDECL _CIlog(void)
{
FPU_DOUBLE(x);
return log(x);
}
+10
View File
@@ -0,0 +1,10 @@
#include <precomp.h>
/*
* @implemented
*/
double CDECL _CIpow(void)
{
FPU_DOUBLES(x, y);
return pow(x, y);
}
+10
View File
@@ -0,0 +1,10 @@
#include <precomp.h>
/*
* @implemented
*/
double CDECL _CIsin(void)
{
FPU_DOUBLE(x);
return sin(x);
}
+10
View File
@@ -0,0 +1,10 @@
#include <precomp.h>
/*
* @implemented
*/
double CDECL _CIsqrt(void)
{
FPU_DOUBLE(x);
return sqrt(x);
}
+5
View 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)