Warlich, Christof writes: > Mikael Pettersson <mi...@it.uu.se> writes: > > Write to the fpstate ->mxcsr and ->swd fields in the sigaction handler's > > uc_mcontext. > > To me, "sigaction handler's uc_mcontext" sounds like userspace, which really > confuses me: > Even in most recent glibc-2.17, uc_mcontext is of type mcontext_t, which us > defined as: > > typedef struct { > gregset_t gregs; > fpregset_t fpregs; > } mcontext_t; > > typedef struct fpregset { > union { > struct fpchip_state { > int state[27]; > int status; > } fpchip_state; > struct fp_emul_space { > char fp_emul[246]; > char fp_epad[2]; > } fp_emul_space; > int f_fpregs[62]; > } fp_reg_set; > long int f_wregs[33]; > } fpregset_t; > > So there is no fpstate whatsoever.
You're looking at the wrong header: glibc-2.17/sysdeps/i386/sys/ucontext.h is legacy SVR4. Instead look at glibc-2.17/sysdeps/unix/sysv/linux/x86/sys/ucontext.h. (If the old one got installed on your system then something there is seriously wrong.) The only quirk is that to access ->mxcsr on 32-bit you have to check if the high half of ->status contains FXSR_MAGIC and if so you need to cast that pointer to struct _fpstate*. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/