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/

Reply via email to