This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
PATCH: Update x86_64 bits/sigcontext.h from Linux kernel 3.4.0
- From: "H.J. Lu" <hongjiu dot lu at intel dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Date: Fri, 1 Jun 2012 05:38:16 -0700
- Subject: PATCH: Update x86_64 bits/sigcontext.h from Linux kernel 3.4.0
- Reply-to: "H.J. Lu" <hjl dot tools at gmail dot com>
Hi,
This patch updates x86_64 bits/sigcontext.h from Linux kernel 3.4.0.
Once glibc requires the minimum kernel version >= the earliest supported
kernel header version, we can remove x86_64 bits/sigcontext.h and use
the installed <asm/sigcontext.h> instead. OK to install?
Thanks.
H.J.
----
* sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h (FP_XSTATE_MAGIC1):
New macro from Linux kernel 3.4.0.
(FP_XSTATE_MAGIC2): Likewise.
(FP_XSTATE_MAGIC2_SIZE): Likewise.
(X86_FXSR_MAGIC): New macro from Linux i386 kernel.
(struct _fpx_sw_bytes): New struct.
(struct _xsave_hdr): Likewise.
(struct _ymmh_state): Likewise.
(struct _xstate): Likewise.
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h b/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h
index d9ba716..06f36cb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h
+++ b/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h
@@ -22,6 +22,19 @@
# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
#endif
+#define FP_XSTATE_MAGIC1 0x46505853U
+#define FP_XSTATE_MAGIC2 0x46505845U
+#define FP_XSTATE_MAGIC2_SIZE sizeof(FP_XSTATE_MAGIC2)
+
+struct _fpx_sw_bytes
+{
+ __uint32_t magic1;
+ __uint32_t extended_size;
+ __uint64_t xstate_bv;
+ __uint32_t xstate_size;
+ __uint32_t padding[7];
+};
+
struct _fpreg
{
unsigned short significand[4];
@@ -75,6 +88,8 @@ struct _fpstate
# define sigcontext_struct sigcontext
#endif
+#define X86_FXSR_MAGIC 0x0000
+
struct sigcontext
{
unsigned short gs, __gsh;
@@ -157,4 +172,23 @@ struct sigcontext
#endif /* __x86_64__ */
+struct _xsave_hdr
+{
+ __uint64_t xstate_bv;
+ __uint64_t reserved1[2];
+ __uint64_t reserved2[5];
+};
+
+struct _ymmh_state
+{
+ __uint32_t ymmh_space[64];
+};
+
+struct _xstate
+{
+ struct _fpstate fpstate;
+ struct _xsave_hdr xstate_hdr;
+ struct _ymmh_state ymmh;
+};
+
#endif /* _BITS_SIGCONTEXT_H */