--- erts/configure.in.orig 2007-06-30 19:35:17.000000000 -0700 +++ erts/configure.in 2007-06-30 19:39:13.000000000 -0700 @@ -1697,6 +1697,13 @@ __asm__ __volatile__("ldmxcsr %0" : : "m"(mxcsr)); } +#if defined(__DARWIN__) +#include +#include +#include +#endif + + #if defined(__x86_64__) || defined(__DARWIN__) static inline int cpu_has_sse2(void) { return 1; } #else /* !__x86_64__ */ @@ -1982,10 +1989,17 @@ regs[PT_FPSCR] = 0x80|0x40|0x10; /* VE, OE, ZE; not UE or XE */ #endif #elif defined(__DARWIN__) && defined(__i386__) +#if __DARWIN_UNIX03 + mcontext_t mc = uc->uc_mcontext; + x86_float_state32_t *fpstate = &mc->__fs; + fpstate->__fpu_mxcsr = 0x1F80; + *(unsigned short *)&fpstate->__fpu_fsw &= ~0xFF; +#else mcontext_t mc = uc->uc_mcontext; i386_float_state_t *fpstate = &mc->fs; fpstate->fpu_mxcsr = 0x1F80; *(unsigned short *)&fpstate->fpu_fsw &= ~0xFF; +#endif #elif defined(__DARWIN__) && defined(__ppc__) mcontext_t mc = uc->uc_mcontext; mc->ss.srr0 += 4;