Please review, i'll commit it, just need an OK.




diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 5aa4900..7245956 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -1359,29 +1359,11 @@ libarm32/libvfw32.a: libarm32/vfw32.mri libarm32/libmsvfw32.a libarm32/libavifil
 
 dx32_DATA =
 dx32_DATA += libarm32/libxinput.a
-dx32_DATA += libarm32/libxapofx.a
-dx32_DATA += libarm32/libx3daudio.a
-dx32_DATA += libarm32/libd3dx9.a
-dx32_DATA += libarm32/libd3dx10.a
-dx32_DATA += libarm32/libd3dx11.a
-dx32_DATA += libarm32/libd3dcsxd.a
 dx32_DATA += libarm32/libd3dcompiler.a
 
-libarm32/libxinput.a: libarm32/$(xinput).def
+libarm32/libxinput.a: libarm32/xinput1_4.def
 	$(DTDEFARM32) $<
-libarm32/libxapofx.a: libarm32/$(xapofx).def
-	$(DTDEFARM32) $<
-libarm32/libx3daudio.a: libarm32/$(x3daudio).def
-	$(DTDEFARM32) $<
-libarm32/libd3dx9.a: libarm32/$(d3dx9).def
-	$(DTDEFARM32) $<
-libarm32/libd3dx10.a: libarm32/$(d3dx10).def
-	$(DTDEFARM32) $<
-libarm32/libd3dx11.a: libarm32/$(d3dx11).def
-	$(DTDEFARM32) $<
-libarm32/libd3dcsxd.a: libarm32/$(d3dcsxd).def
-	$(DTDEFARM32) $<
-libarm32/libd3dcompiler.a: libarm32/$(d3dcompiler).def
+libarm32/libd3dcompiler.a: libarm32/d3dcompiler_47.def
 	$(DTDEFARM32) $<
 
 endif
diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in
index fcdf276..2d0c2fe 100644
--- a/mingw-w64-crt/Makefile.in
+++ b/mingw-w64-crt/Makefile.in
@@ -5584,10 +5584,8 @@ winrtlibs = \
 @LIB32_TRUE@	lib32/libx3daudio.a lib32/libd3dx9.a \
 @LIB32_TRUE@	lib32/libd3dx10.a lib32/libd3dx11.a \
 @LIB32_TRUE@	lib32/libd3dcsxd.a lib32/libd3dcompiler.a
-@LIBARM32_TRUE@dx32_DATA = libarm32/libxinput.a libarm32/libxapofx.a \
-@LIBARM32_TRUE@	libarm32/libx3daudio.a libarm32/libd3dx9.a \
-@LIBARM32_TRUE@	libarm32/libd3dx10.a libarm32/libd3dx11.a \
-@LIBARM32_TRUE@	libarm32/libd3dcsxd.a libarm32/libd3dcompiler.a
+@LIBARM32_TRUE@dx32_DATA = libarm32/libxinput.a \
+@LIBARM32_TRUE@	libarm32/libd3dcompiler.a
 
 # End 32-bit runtime
 # ##########
@@ -48374,21 +48372,9 @@ lib64/DFP_src_%.dfp.obj: math/DFP/mpdecimal/libmpdec/%.c
 @LIBARM32_TRUE@	$(AR) -M < $<
 @LIBARM32_TRUE@	$(RANLIB) $@
 
-@LIBARM32_TRUE@libarm32/libxinput.a: libarm32/$(xinput).def
+@LIBARM32_TRUE@libarm32/libxinput.a: libarm32/xinput1_4.def
 @LIBARM32_TRUE@	$(DTDEFARM32) $<
-@LIBARM32_TRUE@libarm32/libxapofx.a: libarm32/$(xapofx).def
-@LIBARM32_TRUE@	$(DTDEFARM32) $<
-@LIBARM32_TRUE@libarm32/libx3daudio.a: libarm32/$(x3daudio).def
-@LIBARM32_TRUE@	$(DTDEFARM32) $<
-@LIBARM32_TRUE@libarm32/libd3dx9.a: libarm32/$(d3dx9).def
-@LIBARM32_TRUE@	$(DTDEFARM32) $<
-@LIBARM32_TRUE@libarm32/libd3dx10.a: libarm32/$(d3dx10).def
-@LIBARM32_TRUE@	$(DTDEFARM32) $<
-@LIBARM32_TRUE@libarm32/libd3dx11.a: libarm32/$(d3dx11).def
-@LIBARM32_TRUE@	$(DTDEFARM32) $<
-@LIBARM32_TRUE@libarm32/libd3dcsxd.a: libarm32/$(d3dcsxd).def
-@LIBARM32_TRUE@	$(DTDEFARM32) $<
-@LIBARM32_TRUE@libarm32/libd3dcompiler.a: libarm32/$(d3dcompiler).def
+@LIBARM32_TRUE@libarm32/libd3dcompiler.a: libarm32/d3dcompiler_47.def
 @LIBARM32_TRUE@	$(DTDEFARM32) $<
 
 # End ARM 32-bit runtime
diff --git a/mingw-w64-crt/math/sqrt.def.h b/mingw-w64-crt/math/sqrt.def.h
index 431fb3d..dc48905 100644
--- a/mingw-w64-crt/math/sqrt.def.h
+++ b/mingw-w64-crt/math/sqrt.def.h
@@ -54,7 +54,6 @@ asm(".def __fsqrt_internal; .scl 2; .type 32; .endef\n"
     "\t.text\n"
     "\t.align 4\n"
     "\t.globl __fsqrt_internal\n"
-    //"\t.type __fsqrt_internal,2\n"
     "__fsqrt_internal:\n"
 #if _NEW_COMPLEX_FLOAT
     "\t" "fsqrts s0, s0\n"
diff --git a/mingw-w64-crt/misc/feclearexcept.c b/mingw-w64-crt/misc/feclearexcept.c
index 63bf999..d6c65d2 100644
--- a/mingw-w64-crt/misc/feclearexcept.c
+++ b/mingw-w64-crt/misc/feclearexcept.c
@@ -5,6 +5,7 @@
  */
 #include <fenv.h>
 
+#if !(defined(_ARM_) || defined(__arm__))
 int __mingw_has_sse (void);
 
 int __mingw_has_sse(void)
@@ -31,6 +32,7 @@ int __mingw_has_sse(void)
     return 1;
   return 0;
 }
+#endif /* !(defined(_ARM_) || defined(__arm__)) */
 
 /* 7.6.2.1
    The feclearexcept function clears the supported exceptions
@@ -38,9 +40,13 @@ int __mingw_has_sse(void)
 
 int feclearexcept (int excepts)
 {
+#if defined(_ARM_) || defined(__arm__)
   fenv_t _env;
+  __asm__ volatile ("fmrx %0, FPSCR" : "=r" (_env));
+  _env.__cw &= ~(excepts & FE_ALL_EXCEPT);
+  __asm__ volatile ("fmxr FPSCR, %0" : : "r" (_env));
+#else
   int _mxcsr;
-
   if (excepts == FE_ALL_EXCEPT)
     {
       __asm__ volatile ("fnclex");
@@ -57,5 +63,6 @@ int feclearexcept (int excepts)
       _mxcsr &= ~(((excepts & FE_ALL_EXCEPT)));
       __asm__ volatile ("ldmxcsr %0" : : "m" (_mxcsr));
     }
+#endif /* defined(_ARM_) || defined(__arm__) */
   return (0);
 }
diff --git a/mingw-w64-crt/misc/fegetenv.c b/mingw-w64-crt/misc/fegetenv.c
index 6e08d77..96f57e4 100644
--- a/mingw-w64-crt/misc/fegetenv.c
+++ b/mingw-w64-crt/misc/fegetenv.c
@@ -5,7 +5,9 @@
  */
 #include <fenv.h>
 
+#if !(defined(_ARM_) || defined(__arm__))
 int __mingw_has_sse (void);
+#endif /* !(defined(_ARM_) || defined(__arm__)) */
 
 /* 7.6.4.1
    The fegetenv function stores the current floating-point environment
@@ -13,6 +15,9 @@ int __mingw_has_sse (void);
 
 int fegetenv (fenv_t * envp)
 {
+#if defined(_ARM_) || defined(__arm__)
+  __asm__ volatile ("fmrx %0, FPSCR" : "=r" (*envp));
+#else
   __asm__ __volatile__ ("fnstenv %0;": "=m" (*envp));
  /* fnstenv sets control word to non-stop for all exceptions, so we
     need to reload our env to restore the original mask.  */
@@ -24,6 +29,7 @@ int fegetenv (fenv_t * envp)
       envp->__unused0 = (((unsigned int) _mxcsr) >> 16);
       envp->__unused1 = (((unsigned int) _mxcsr) & 0xffff);
     }
+#endif /* defined(_ARM_) || defined(__arm__) */
   return 0;
 }
 
diff --git a/mingw-w64-crt/misc/fegetexceptflag.c b/mingw-w64-crt/misc/fegetexceptflag.c
index aa55826..e8dae96 100644
--- a/mingw-w64-crt/misc/fegetexceptflag.c
+++ b/mingw-w64-crt/misc/fegetexceptflag.c
@@ -5,7 +5,9 @@
  */
 #include <fenv.h>
 
+#if !(defined(_ARM_) || defined(__arm__))
 extern int __mingw_has_sse (void);
+#endif /* !(defined(_ARM_) || defined(__arm__)) */
 
 /* 7.6.2.2  
    The fegetexceptflag function stores an implementation-defined
@@ -14,6 +16,11 @@ extern int __mingw_has_sse (void);
 
 int fegetexceptflag (fexcept_t * flagp, int excepts)
 {
+#if defined(_ARM_) || defined(__arm__)
+  fenv_t _env;
+  __asm__ volatile ("fmrx %0, FPSCR" : "=r" (_env));
+  *flagp = _env.__cw & excepts & FE_ALL_EXCEPT;
+#else
   int _mxcsr;
   unsigned short _status;
 
@@ -23,5 +30,6 @@ int fegetexceptflag (fexcept_t * flagp, int excepts)
     __asm__ volatile ("stmxcsr %0" : "=m" (_mxcsr));
     
   *flagp = (_mxcsr | _status) & excepts & FE_ALL_EXCEPT;
+#endif /* defined(_ARM_) || defined(__arm__) */
   return 0;
 }
diff --git a/mingw-w64-crt/misc/fegetround.c b/mingw-w64-crt/misc/fegetround.c
index d1bae6e..b4b757b 100644
--- a/mingw-w64-crt/misc/fegetround.c
+++ b/mingw-w64-crt/misc/fegetround.c
@@ -12,8 +12,13 @@
 int
 fegetround (void)
 {
+#if defined(_ARM_) || defined(__arm__)
+  fenv_t _env;
+  __asm__ volatile ("fmrx %0, FPSCR" : "=r" (_env));
+  return (_env.__cw & (FE_TONEAREST | FE_DOWNWARD |  FE_UPWARD | FE_TOWARDZERO));
+#else
   int _control;
-
   __asm__ volatile ("fnstcw %0" : "=m" (*&_control));
   return (_control & (FE_TONEAREST | FE_DOWNWARD |  FE_UPWARD | FE_TOWARDZERO));
+#endif /* defined(_ARM_) || defined(__arm__) */
 }
diff --git a/mingw-w64-crt/misc/feholdexcept.c b/mingw-w64-crt/misc/feholdexcept.c
index c2d8630..a2b7834 100644
--- a/mingw-w64-crt/misc/feholdexcept.c
+++ b/mingw-w64-crt/misc/feholdexcept.c
@@ -13,9 +13,17 @@
 
 int feholdexcept (fenv_t * envp)
 {
+#if defined(_ARM_) || defined(__arm__)
+  fenv_t _env;
+  __asm__ volatile ("fmrx %0, FPSCR" : "=r" (_env));
+  envp->__cw = _env.__cw;
+  _env.__cw &= ~(FE_ALL_EXCEPT);
+  __asm__ volatile ("fmxr FPSCR, %0" : : "r" (_env));
+#else
   __asm__ __volatile__ ("fnstenv %0;" : "=m" (* envp)); /* save current into envp */
  /* fnstenv sets control word to non-stop for all exceptions, so all we
     need to do is clear the exception flags.  */
   __asm__ __volatile__ ("fnclex");
+#endif /* defined(_ARM_) || defined(__arm__) */
   return 0;
 }
diff --git a/mingw-w64-crt/misc/feraiseexcept.c b/mingw-w64-crt/misc/feraiseexcept.c
index 4a39966..5175026 100644
--- a/mingw-w64-crt/misc/feraiseexcept.c
+++ b/mingw-w64-crt/misc/feraiseexcept.c
@@ -16,9 +16,15 @@
 int feraiseexcept (int excepts)
 {
   fenv_t _env;
+#if defined(_ARM_) || defined(__arm__)
+  __asm__ volatile ("fmrx %0, FPSCR" : "=r" (_env));
+  _env.__cw |= excepts & FE_ALL_EXCEPT;
+  __asm__ volatile ("fmxr FPSCR, %0" : : "r" (_env));
+#else
   __asm__ volatile ("fnstenv %0;" : "=m" (_env));
   _env.__status_word |= excepts & FE_ALL_EXCEPT;
   __asm__ volatile ("fldenv %0;"
 		    "fwait;" : : "m" (_env));
+#endif /* defined(_ARM_) || defined(__arm__) */
   return 0;
 }
diff --git a/mingw-w64-crt/misc/fesetenv.c b/mingw-w64-crt/misc/fesetenv.c
index d523d90..d16dd65 100644
--- a/mingw-w64-crt/misc/fesetenv.c
+++ b/mingw-w64-crt/misc/fesetenv.c
@@ -7,7 +7,9 @@
 #include <fenv.h>
 #include <float.h>
 
+#if !(defined(_ARM_) || defined(__arm__))
 extern int __mingw_has_sse (void);
+#endif /* !(defined(_ARM_) || defined(__arm__)) */
 
 /* 7.6.4.3
    The fesetenv function establishes the floating-point environment
@@ -24,6 +26,13 @@ extern void _fpreset(void);
 
 int fesetenv (const fenv_t * envp)
 {
+#if defined(_ARM_) || defined(__arm__)
+  if (envp == FE_DFL_ENV)
+    /* Use the choice made at app startup */ 
+    _fpreset();
+  else
+    __asm__ volatile ("fmxr FPSCR, %0" : : "r" (*envp));
+#else
   if (envp == FE_PC64_ENV)
    /*
     *  fninit initializes the control register to 0x37f,
@@ -61,5 +70,6 @@ int fesetenv (const fenv_t * envp)
         __asm__ volatile ("ldmxcsr %0" : : "m" (*&_mxcsr));
     }
 
+#endif /* defined(_ARM_) || defined(__arm__) */
   return 0;
 }
diff --git a/mingw-w64-crt/misc/fesetexceptflag.c b/mingw-w64-crt/misc/fesetexceptflag.c
index cec7b7c..cb9ba3f 100644
--- a/mingw-w64-crt/misc/fesetexceptflag.c
+++ b/mingw-w64-crt/misc/fesetexceptflag.c
@@ -5,7 +5,9 @@
  */
 #include <fenv.h>
 
+#if !(defined(_ARM_) || defined(__arm__))
 extern int __mingw_has_sse (void);
+#endif /* !(defined(_ARM_) || defined(__arm__)) */
 
 /* 7.6.2.4
    The fesetexceptflag function sets the complete status for those
@@ -21,6 +23,13 @@ int fesetexceptflag (const fexcept_t * flagp, int excepts)
   fenv_t _env;
 
   excepts &= FE_ALL_EXCEPT;
+
+#if defined(_ARM_) || defined(__arm__)
+  __asm__ volatile ("fmrx %0, FPSCR" : "=r" (_env));
+  _env.__cw &= ~excepts;
+  _env.__cw |= (*flagp & excepts);
+  __asm__ volatile ("fmxr FPSCR, %0" : : "r" (_env));
+#else
   __asm__ volatile ("fnstenv %0;" : "=m" (_env));
   _env.__status_word &= ~excepts;
   _env.__status_word |= (*flagp & excepts);
@@ -35,5 +44,6 @@ int fesetexceptflag (const fexcept_t * flagp, int excepts)
       __asm__ volatile ("ldmxcsr %0" : : "m" (sse_cw));
     }
 
+#endif /* defined(_ARM_) || defined(__arm__) */
   return 0;
 }
diff --git a/mingw-w64-crt/misc/fesetround.c b/mingw-w64-crt/misc/fesetround.c
index acb2e0e..74dc355 100644
--- a/mingw-w64-crt/misc/fesetround.c
+++ b/mingw-w64-crt/misc/fesetround.c
@@ -5,7 +5,9 @@
  */
 #include <fenv.h>
 
+#if !(defined(_ARM_) || defined(__arm__))
 int __mingw_has_sse (void);
+#endif /* !(defined(_ARM_) || defined(__arm__)) */
 
  /* 7.6.3.2
     The fesetround function establishes the rounding direction
@@ -15,6 +17,15 @@ int __mingw_has_sse (void);
 
 int fesetround (int mode)
 {
+#if defined(_ARM_) || defined(__arm__)
+  fenv_t _env;
+  if ((mode & ~(FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO)) != 0)
+    return -1;
+  __asm__ volatile ("fmrx %0, FPSCR" : "=r" (_env));
+  _env.__cw &= ~(FE_TONEAREST | FE_DOWNWARD |  FE_UPWARD | FE_TOWARDZERO);
+  _env.__cw |= mode;
+  __asm__ volatile ("fmxr FPSCR, %0" : : "r" (_env));
+#else
   unsigned short _cw;
   if ((mode & ~(FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO))
       != 0)
@@ -33,5 +44,6 @@ int fesetround (int mode)
       mxcsr |= mode << 3;
       __asm__ volatile ("ldmxcsr %0" : : "m" (*&mxcsr));
     }
+#endif /* defined(_ARM_) || defined(__arm__) */
   return 0;
 }
diff --git a/mingw-w64-crt/misc/fetestexcept.c b/mingw-w64-crt/misc/fetestexcept.c
index 12d22da..f27d535 100644
--- a/mingw-w64-crt/misc/fetestexcept.c
+++ b/mingw-w64-crt/misc/fetestexcept.c
@@ -6,7 +6,9 @@
 
 #include <fenv.h> 
 
+#if !(defined(_ARM_) || defined(__arm__))
 extern int __mingw_has_sse (void);
+#endif /* !(defined(_ARM_) || defined(__arm__)) */
 
 /* 7.6.2.5 
    The fetestexcept function determines which of a specified subset of
@@ -18,6 +20,11 @@ extern int __mingw_has_sse (void);
 
 int fetestexcept (int excepts)
 {
+#if defined(_ARM_) || defined(__arm__)
+  fenv_t _env;
+  __asm__ volatile ("fmrx %0, FPSCR" : "=r" (_env));
+  return _env.__cw & excepts & FE_ALL_EXCEPT;
+#else
   unsigned short _sw;
   __asm__ __volatile__ ("fnstsw %%ax" : "=a" (_sw));
 
@@ -27,6 +34,6 @@ int fetestexcept (int excepts)
       __asm__ __volatile__ ("stmxcsr %0;" : "=m" (sse_sw));
       _sw |= sse_sw;
     }
-
   return _sw & excepts & FE_ALL_EXCEPT;
+#endif /* defined(_ARM_) || defined(__arm__) */
 }
diff --git a/mingw-w64-crt/misc/winbs_uint64.c b/mingw-w64-crt/misc/winbs_uint64.c
index 7592ab2..6eb475d 100644
--- a/mingw-w64-crt/misc/winbs_uint64.c
+++ b/mingw-w64-crt/misc/winbs_uint64.c
@@ -2,11 +2,11 @@ unsigned long long __cdecl _byteswap_uint64(unsigned long long _Int64);
 
 unsigned long long __cdecl _byteswap_uint64(unsigned long long _Int64)
 {
-#ifdef _WIN64
+#if defined(_AMD64_) || defined(__x86_64__)
   unsigned long long retval;
   __asm__ __volatile__ ("bswapq %[retval]" : [retval] "=rm" (retval) : "[retval]" (_Int64));
   return retval;
-#else
+#elif defined(_X86_) || defined(__i386__)
   union {
     long long int64part;
     struct {
@@ -19,5 +19,20 @@ unsigned long long __cdecl _byteswap_uint64(unsigned long long _Int64)
     "bswapl %[hipart]\n"
     : [lowpart] "=rm" (retval.hipart), [hipart] "=rm" (retval.lowpart)  : "[lowpart]" (retval.lowpart), "[hipart]" (retval.hipart));
   return retval.int64part;
+#else
+  unsigned char *b = (void*)&_Int64;
+  unsigned char tmp;
+  tmp = b[0];
+  b[0] = b[7];
+  b[7] = tmp;
+  tmp = b[1];
+  b[1] = b[6];
+  b[6] = tmp;
+  tmp = b[2];
+  b[2] = b[5];
+  b[5] = tmp;
+  tmp = b[3];
+  b[3] = b[4];
+  b[4] = tmp;
 #endif
 }
diff --git a/mingw-w64-crt/misc/winbs_ulong.c b/mingw-w64-crt/misc/winbs_ulong.c
index ed26c2d..5fb5613 100644
--- a/mingw-w64-crt/misc/winbs_ulong.c
+++ b/mingw-w64-crt/misc/winbs_ulong.c
@@ -3,6 +3,17 @@ unsigned long __cdecl _byteswap_ulong (unsigned long _Long);
 unsigned long __cdecl _byteswap_ulong (unsigned long _Long)
 {
   unsigned long retval;
+#if defined(_AMD64_) || defined(__x86_64__) || defined(_X86_) || defined(__i386__)
   __asm__ __volatile__ ("bswapl %[retval]" : [retval] "=rm" (retval) : "[retval]" (_Long));
+#else
+  unsigned char *b = (void*)&_Long;
+  unsigned char tmp;
+  tmp = b[0];
+  b[0] = b[3];
+  b[3] = tmp;
+  tmp = b[1];
+  b[1] = b[2];
+  b[2] = tmp;
+#endif /* defined(_AMD64_) || defined(__x86_64__) || defined(_X86_) || defined(__i386__) */
   return retval;
 }
diff --git a/mingw-w64-crt/misc/winbs_ushort.c b/mingw-w64-crt/misc/winbs_ushort.c
index b05345f..8773c49 100644
--- a/mingw-w64-crt/misc/winbs_ushort.c
+++ b/mingw-w64-crt/misc/winbs_ushort.c
@@ -3,6 +3,14 @@ unsigned short __cdecl _byteswap_ushort(unsigned short _Short);
 unsigned short __cdecl _byteswap_ushort(unsigned short _Short)
 {
   unsigned short retval;
+#if defined(_AMD64_) || defined(__x86_64__) || defined(_X86_) || defined(__i386__)
   __asm__ __volatile__ ("rorw $8, %w[retval]" : [retval] "=rm" (retval) : "[retval]" (_Short));
+#else
+  unsigned char *b = (void*)&_Short;
+  unsigned char tmp;
+  tmp = b[0];
+  b[0] = b[1];
+  b[1] = tmp;
+#endif /* defined(_AMD64_) || defined(__x86_64__) || defined(_X86_) || defined(__i386__) */
   return retval;
 }
diff --git a/mingw-w64-headers/crt/fenv.h b/mingw-w64-headers/crt/fenv.h
index 168926a..3339337 100644
--- a/mingw-w64-headers/crt/fenv.h
+++ b/mingw-w64-headers/crt/fenv.h
@@ -8,7 +8,27 @@
 
 #include <crtdefs.h>
 
+#if defined(_ARM_) || defined(__arm__)
+
 /* FPU status word exception flags */
+#define FE_INVALID      0x01
+#define FE_DIVBYZERO    0x02
+#define FE_OVERFLOW     0x04
+#define FE_UNDERFLOW    0x08
+#define FE_INEXACT      0x10
+#define FE_ALL_EXCEPT   (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
+
+/* FPU control word rounding flags */
+#define FE_TONEAREST    0x00000000
+#define FE_UPWARD       0x00400000
+#define FE_DOWNWARD     0x00800000
+#define FE_TOWARDZERO   0x00c00000
+
+/* Amount to shift by to convert an exception to a mask bit.  */
+#define FE_EXCEPT_SHIFT 0x08
+
+#else
+
 #define FE_INVALID	0x01
 #define FE_DENORMAL	0x02
 #define FE_DIVBYZERO	0x04
@@ -36,7 +56,26 @@
    to get MXCSR rounding flags,  */
 #define __MXCSR_ROUND_FLAG_SHIFT 3
 
+#endif /* defined(_ARM_) || defined(__arm__) */
+
 #ifndef RC_INVOKED
+
+#if defined(_ARM_) || defined(__arm__)
+
+/* Type representing exception flags. */
+typedef unsigned int fexcept_t;
+
+/* Type representing floating-point environment.  */
+typedef struct
+{
+    unsigned int __cw;
+} fenv_t;
+
+/* If the default argument is used we use this value.  */
+#define FE_DFL_ENV  ((const fenv_t *) -1l)
+
+#else
+
 /*
   For now, support only for the basic abstraction of flags that are
   either set or clear. fexcept_t could be  structure that holds more
@@ -79,6 +118,8 @@ typedef struct
   fesetenv will use the environment set at app startup.*/
 #define FE_DFL_ENV ((const fenv_t *) 0)
 
+#endif /* defined(_ARM_) || defined(__arm__) */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to