From: Andreas Jaeger Date: Thu, 21 Mar 2002 16:03:56 +0000 (+0000) Subject: (struct _fpstate): Add separate struct for x86-64. X-Git-Tag: upstream/2.30~21922 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=943b72618ef3e2040d339a38abdc86f23b89f702;p=external%2Fglibc.git (struct _fpstate): Add separate struct for x86-64. --- diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h b/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h index 3426d8c..3ebb271 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;