Hi, Mathieu Malaterre wrote: > Steven Chamberlain <ste...@pyro.eu.org> wrote: > > Gianfranco Costamagna wrote: > >> file.c:5:38: error: ‘mcontext_t’ has no member named ‘fpregs’ > >> uint32_t mxcsr = ucon.uc_mcontext.fpregs->mxcsr; > > > > FreeBSD doesn't seem to have fpregs in mcontext_t or sigcontext. > > But I think mc_fpstate might be the same thing; but that isn't > > implemented as a struct... > > Correct. Looks like other are handling it this way also > https://github.com/fukamachi/clozure-cl/blob/master/level-1/x86-trap-support.lisp
For future reference, I came up with this alternate implementation of restoreControlRegs() for kFreeBSD (untested, except it builds and passes the testsuite): #include <machine/npx.h> inline void restoreControlRegs (const ucontext_t & ucon, bool clearExceptions) { struct envxmm *ex = (struct envxmm *)(ucon.uc_mcontext.mc_fpstate); setCw ((ex->en_cw & cwRestoreMask) | cwRestoreVal); setMxcsr (ex->en_mxcsr, clearExceptions); } Regards, -- Steven Chamberlain ste...@pyro.eu.org
signature.asc
Description: Digital signature