aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorseyko <seyko2@gmail.com>2015-03-03 22:41:55 +0300
committerseyko <seyko2@gmail.com>2015-03-03 22:41:55 +0300
commit351e2ec33425ce9ff71f89d7d8cec42aec8841c5 (patch)
tree8204a21b032d58ad37c1aa7b805c56bf480b673d
parent4b61f7f04b674a4a89431cf856bf3b8b1cf19edc (diff)
downloadtinycc-351e2ec33425ce9ff71f89d7d8cec42aec8841c5.tar.gz
tinycc-351e2ec33425ce9ff71f89d7d8cec42aec8841c5.tar.bz2
add declaration of the "double trunc (double _x)" and winsock2.h
This allow to build a windows version of the nimrod compiler.
-rw-r--r--win32/include/math.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/win32/include/math.h b/win32/include/math.h
index 37a8ec4..5048ef9 100644
--- a/win32/include/math.h
+++ b/win32/include/math.h
@@ -597,6 +597,27 @@ extern "C" {
return retval;
}
+ #define FE_TONEAREST 0x0000
+ #define FE_DOWNWARD 0x0400
+ #define FE_UPWARD 0x0800
+ #define FE_TOWARDZERO 0x0c00
+
+ __CRT_INLINE double trunc (double _x)
+ {
+ double retval;
+ unsigned short saved_cw;
+ unsigned short tmp_cw;
+ __asm__ ("fnstcw %0;" : "=m" (saved_cw)); /* save FPU control word */
+ tmp_cw = (saved_cw & ~(FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO))
+ | FE_TOWARDZERO;
+ __asm__ ("fldcw %0;" : : "m" (tmp_cw));
+ __asm__ ("fldl %1;"
+ "frndint;"
+ "fstl %0;" : "=m" (retval) : "m" (_x)); /* round towards zero */
+ __asm__ ("fldcw %0;" : : "m" (saved_cw) ); /* restore saved control word */
+ return retval;
+ }
+
/* 7.12.9.6 */
/* round away from zero, regardless of fpu control word settings */
extern double __cdecl round (double);