1 $NetBSD: patch-as,v 1.1 2009/12/15 12:09:20 asau Exp $
3 --- erts/emulator/sys/unix/sys_float.c.orig 2010-02-19 20:04:07.000000000 +0200
4 +++ erts/emulator/sys/unix/sys_float.c 2010-02-24 14:43:43.000000000 +0200
9 -#if (defined(__linux__) && (defined(__i386__) || defined(__x86_64__) || defined(__sparc__) || defined(__powerpc__))) || (defined(__DARWIN__) && (defined(__i386__) || defined(__x86_64__) || defined(__ppc__))) || (defined(__FreeBSD__) && (defined(__x86_64__) || defined(__i386__))) || (defined(__OpenBSD__) && defined(__x86_64__)) || (defined(__sun__) && defined(__x86_64__))
10 +#if (defined(__linux__) && (defined(__i386__) || defined(__x86_64__) || defined(__sparc__) || defined(__powerpc__))) || (defined(__DARWIN__) && (defined(__i386__) || defined(__x86_64__) || defined(__ppc__))) || (defined(__FreeBSD__) && (defined(__x86_64__) || defined(__i386__))) || ((defined(__NetBSD__) || defined(__OpenBSD__)) && defined(__x86_64__)) || (defined(__sun__) && defined(__x86_64__))
12 #if defined(__linux__) && defined(__i386__)
13 #if !defined(X86_FXSR_MAGIC)
15 #define mc_pc(mc) ((mc)->mc_rip)
16 #elif defined(__FreeBSD__) && defined(__i386__)
17 #define mc_pc(mc) ((mc)->mc_eip)
18 +#elif defined(__NetBSD__) && defined(__x86_64__)
19 +#define mc_pc(mc) ((mc)->__gregs[_REG_RIP])
20 +typedef mcontext_t *erts_mcontext_ptr_t;
21 #elif defined(__OpenBSD__) && defined(__x86_64__)
22 #define mc_pc(mc) ((mc)->sc_rip)
23 #elif defined(__sun__) && defined(__x86_64__)
26 fxsave->fx_mxcsr = 0x1F80;
27 fxsave->fx_fsw &= ~0xFF;
28 +#elif defined(__NetBSD__) && defined(__x86_64__)
29 + mcontext_t *mc = &uc->uc_mcontext;
30 + struct fxsave64 *fxsave = (struct fxsave64 *)&mc->__fpregs;
31 + if (fxsave->fx_mxcsr & 0x000D) {
32 + fxsave->fx_mxcsr &= ~(0x003F|0x0680);
35 + fxsave->fx_fsw &= ~0xFF;
36 #elif defined(__sun__) && defined(__x86_64__)
37 mcontext_t *mc = &uc->uc_mcontext;
38 struct fpchip_state *fpstate = &mc->fpregs.fp_reg_set.fpchip_state;