]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Merge with mainline.
authorAndreas Jaeger <aj@suse.de>
Thu, 21 Mar 2002 16:05:47 +0000 (16:05 +0000)
committerAndreas Jaeger <aj@suse.de>
Thu, 21 Mar 2002 16:05:47 +0000 (16:05 +0000)
sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h
sysdeps/unix/sysv/linux/x86_64/sys/user.h

index 3426d8c47eea04d5fa080496b2b76d8b480111dc..3ebb2719738b1484ed637c909ff90d62faf112fc 100644 (file)
@@ -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;
index 98820a8d667d4246125bf49a96592e0bdf3870d4..bca10c7b3cdf284e729b284727023cb73fc9377f 100644 (file)
 
 struct user_fpregs_struct
 {
-  unsigned short int cwd;
-  unsigned short int swd;
-  unsigned short int twd;
-  unsigned short int fop;
-  unsigned long int frip;
-  unsigned long int frdp;
-  unsigned int mxcsr;
-  unsigned int reserved;
-  unsigned int st_space[32];   /* 8*16 bytes for each FP-reg = 128 bytes */
-  unsigned int xmm_space[64];  /* 16*16 bytes for each XMM-reg = 128 bytes */
-  unsigned int padding[24];
+  __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 user_regs_struct
@@ -70,7 +70,7 @@ struct user_regs_struct
   unsigned long ds;
   unsigned long es;
   unsigned long fs;
-  unsigned long gs;  
+  unsigned long gs;
 };
 
 struct user