=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/include/interval.h,v retrieving revision 1.6 retrieving revision 1.14 diff -u -p -r1.6 -r1.14 --- OpenXM_contrib2/asir2000/include/interval.h 2003/12/08 07:15:28 1.6 +++ OpenXM_contrib2/asir2000/include/interval.h 2016/06/29 08:16:11 1.14 @@ -1,5 +1,5 @@ /* - * $OpenXM: OpenXM_contrib2/asir2000/include/interval.h,v 1.5 2002/01/08 04:14:38 kondoh Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/include/interval.h,v 1.13 2015/08/14 13:51:55 fujimoto Exp $ */ #ifndef _INTERVAL_H #define _INTERVAL_H @@ -33,9 +33,27 @@ static char *Interval_dummy; #ifdef linux #include #if 1 + +#if defined(__ARM_ARCH) || defined(ANDROID) +#ifndef _FPU_RC_NEAREST +#define _FPU_RC_NEAREST 0x0 +#endif +#ifndef _FPU_RC_DOWN +#define _FPU_RC_DOWN 0x400 +#endif +#ifndef _FPU_RC_UP +#define _FPU_RC_UP 0x800 +#endif +#ifndef _FPU_RC_ZERO +#define _FPU_RC_ZERO 0xC00 +#endif +#endif /* __ARM_ARCH */ + #define LINUX_FPU_RC_MASK 0xf3ff -#define LINUX_FPU_SETCW(c) {_FPU_GETCW(__fpu_control);\ - _FPU_SETCW(__fpu_control & LINUX_FPU_RC_MASK | c);} +#define LINUX_FPU_SETCW(c) \ +{fpu_control_t __tmp__; _FPU_GETCW(__fpu_control);\ + __tmp__ = (__fpu_control & LINUX_FPU_RC_MASK | c);\ + _FPU_SETCW(__tmp__);} #define FPNEAREST LINUX_FPU_SETCW(_FPU_RC_NEAREST); #define FPPLUSINF LINUX_FPU_SETCW(_FPU_RC_UP); #define FPMINUSINF LINUX_FPU_SETCW(_FPU_RC_DOWN); @@ -66,7 +84,7 @@ static char *Interval_dummy; #endif #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && defined(__GNUC__) #include #define FPNEAREST fpsetround(FP_RN); #define FPPLUSINF fpsetround(FP_RP); @@ -74,7 +92,7 @@ static char *Interval_dummy; #define FPTOZERO fpsetround(FP_RZ); #endif -#if defined(VISUAL) +#if defined(VISUAL) || defined(__MINGW32__) #include #define FPNEAREST _controlfp(_RC_NEAR,_MCW_RC); #define FPPLUSINF _controlfp(_RC_UP,_MCW_RC); @@ -99,28 +117,6 @@ static char *Interval_dummy; #define MID_PRINTF_G 2 #define MID_PRINTF_E 3 - -#undef N_C -#undef N_M -#undef N_LM -#undef N_GF2N -#undef N_GFPN -#undef N_GFS -#undef N_GFSN -#define N_NEXT_B (N_B+1) -#define N_Quad (N_NEXT_B) -#define N_IP (N_NEXT_B+1) -#define N_IntervalDouble (N_NEXT_B+2) -#define N_IntervalQuad (N_NEXT_B+3) -#define N_IntervalBigFloat (N_NEXT_B+4) -#define N_PRE_C N_IntervalBigFloat -#define N_C (N_NEXT_B+5) -#define N_M (N_NEXT_B+6) -#define N_LM (N_NEXT_B+7) -#define N_GF2N (N_NEXT_B+8) -#define N_GFPN (N_NEXT_B+9) -#define N_GFS (N_NEXT_B+10) -#define N_GFSN (N_NEXT_B+11) /* data structures */ struct oItv {