diff options
author | Andreas Jaeger <aj@suse.de> | 2002-03-21 16:03:56 +0000 |
---|---|---|
committer | Andreas Jaeger <aj@suse.de> | 2002-03-21 16:03:56 +0000 |
commit | 943b72618ef3e2040d339a38abdc86f23b89f702 (patch) | |
tree | a79daa66dbfbfd5d1171e7474f06979b34548054 /sysdeps | |
parent | 973f52a0105f37faf986c17b90c16b1fcf7ce310 (diff) | |
download | glibc-943b72618ef3e2040d339a38abdc86f23b89f702.tar.gz glibc-943b72618ef3e2040d339a38abdc86f23b89f702.tar.xz glibc-943b72618ef3e2040d339a38abdc86f23b89f702.zip |
(struct _fpstate): Add separate struct for x86-64.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h b/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h index 3426d8c47e..3ebb271973 100644 --- a/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h +++ b/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h @@ -43,9 +43,10 @@ struct _xmmreg __uint32_t element[4]; }; -/* This is FXSAVE layout without 64bit prefix thus 32bit - compatible. This means that the IP and DPs are only 32bit and are - not useful in 64bit space. */ + + +#if __WORDSIZE == 32 + struct _fpstate { /* Regular FPU environment. */ @@ -65,13 +66,10 @@ struct _fpstate __uint32_t mxcsr; __uint32_t reserved; struct _fpxreg _fxsr_st[8]; - struct _xmmreg _xmm[8]; /* It's actually 16 for x86-64. */ + struct _xmmreg _xmm[8]; __uint32_t padding[56]; }; - -#if __WORDSIZE == 32 - struct sigcontext { unsigned short gs, __gsh; @@ -100,6 +98,22 @@ struct sigcontext #else +struct _fpstate +{ + /* Regular FPU environment. */ + __uint16_t cwd; + __uint16_t swd; + __uint16_t twd; + __uint16_t fop; + __uint64_t rip; + __uint64_t rdp; + __uint32_t mxcsr; + __uint32_t mxcr_mask; + __uint32_t st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ + __uint32_t xmm_space[64]; /* 16*16 bytes for each XMM-reg = 128 bytes */ + __uint32_t padding[24]; +}; + struct sigcontext { unsigned short gs, __gsh; |