From: Ingo Molnar <mingo@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Mikko Rapeli <mikko.rapeli@iki.fi>,
Andy Lutomirski <luto@amacapital.net>,
Andrew Morton <akpm@linux-foundation.org>,
Denys Vlasenko <dvlasenk@redhat.com>,
Brian Gerst <brgerst@gmail.com>,
Peter Zijlstra <peterz@infradead.org>,
Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Oleg Nesterov <oleg@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH 07/15] x86/headers: Unify 'struct _fpstate_ia32' and i386 struct _fpstate
Date: Sat, 5 Sep 2015 09:32:35 +0200 [thread overview]
Message-ID: <1441438363-9999-8-git-send-email-mingo@kernel.org> (raw)
In-Reply-To: <1441438363-9999-1-git-send-email-mingo@kernel.org>
'struct _fpstate_ia32' and 'struct _fpstate' on i386 are identical in all fields,
except 'padding1' being named 'padding'.
We unify the two structures and add a union that is both named 'padding1' and
'padding', in the (unlikely) case there's user-space code that relies on the
padding field name.
We rename the two main types to be:
struct _fpstate_32
struct _fpstate_64
for the 32-bit and 64-bit frame, and map them to the main and compat structure
names (_fpstate) depending on whether we are on 32-bit or on 64-bit kernels.
We also keep the old _fpstate_ia32 name as a legacy name.
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mikko Rapeli <mikko.rapeli@iki.fi>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/include/asm/sigframe.h | 1 -
arch/x86/include/uapi/asm/sigcontext.h | 26 +++++++++++++++++---------
arch/x86/include/uapi/asm/sigcontext32.h | 29 -----------------------------
3 files changed, 17 insertions(+), 39 deletions(-)
diff --git a/arch/x86/include/asm/sigframe.h b/arch/x86/include/asm/sigframe.h
index 7c7c27c97daa..67d3027520ee 100644
--- a/arch/x86/include/asm/sigframe.h
+++ b/arch/x86/include/asm/sigframe.h
@@ -9,7 +9,6 @@
#define sigframe_ia32 sigframe
#define rt_sigframe_ia32 rt_sigframe
#define sigcontext_ia32 sigcontext
-#define _fpstate_ia32 _fpstate
#define ucontext_ia32 ucontext
#else /* !CONFIG_X86_32 */
diff --git a/arch/x86/include/uapi/asm/sigcontext.h b/arch/x86/include/uapi/asm/sigcontext.h
index 9df4df3e40ef..85811167821f 100644
--- a/arch/x86/include/uapi/asm/sigcontext.h
+++ b/arch/x86/include/uapi/asm/sigcontext.h
@@ -95,9 +95,10 @@ struct _xmmreg {
#define X86_FXSR_MAGIC 0x0000
-#ifdef __i386__
-
-struct _fpstate {
+/*
+ * The 32-bit FPU frame:
+ */
+struct _fpstate_32 {
/* Legacy FPU environment: */
__u32 cw;
__u32 sw;
@@ -117,7 +118,10 @@ struct _fpstate {
__u32 reserved;
struct _fpxreg _fxsr_st[8]; /* FXSR FPU reg data is ignored */
struct _xmmreg _xmm[8]; /* First 8 XMM registers */
- __u32 padding1[44]; /* Second 8 XMM registers plus padding */
+ union {
+ __u32 padding1[44]; /* Second 8 XMM registers plus padding */
+ __u32 padding[44]; /* Alias name for old user-space */
+ };
union {
__u32 padding2[12];
@@ -125,10 +129,8 @@ struct _fpstate {
};
};
-#else /* __x86_64__: */
-
/*
- * The FXSAVE frame.
+ * The 64-bit FPU frame. (FXSAVE format and later)
*
* Note1: If sw_reserved.magic1 == FP_XSTATE_MAGIC1 then the structure is
* larger: 'struct _xstate'. Note that 'struct _xstate' embedds
@@ -138,7 +140,7 @@ struct _fpstate {
* Note2: Reserved fields may someday contain valuable data. Always save/restore
* them when you change signal frames.
*/
-struct _fpstate {
+struct _fpstate_64 {
__u16 cwd;
__u16 swd;
/* Note this is not the same as the 32-bit/x87/FSAVE twd: */
@@ -157,7 +159,13 @@ struct _fpstate {
};
};
-#endif /* __x86_64__ */
+#ifdef __i386__
+# define _fpstate _fpstate_32
+#else
+# define _fpstate _fpstate_64
+#endif
+
+#define _fpstate_ia32 _fpstate_32
struct _header {
__u64 xfeatures;
diff --git a/arch/x86/include/uapi/asm/sigcontext32.h b/arch/x86/include/uapi/asm/sigcontext32.h
index 356caab997e7..19a89165ea1d 100644
--- a/arch/x86/include/uapi/asm/sigcontext32.h
+++ b/arch/x86/include/uapi/asm/sigcontext32.h
@@ -5,35 +5,6 @@
#include <asm/sigcontext.h>
-/* FXSAVE frame: FSAVE frame with extensions */
-struct _fpstate_ia32 {
- /* Regular FPU environment: */
- __u32 cw;
- __u32 sw;
- __u32 tag; /* Not compatible with the 64-bit frame */
- __u32 ipoff;
- __u32 cssel;
- __u32 dataoff;
- __u32 datasel;
- struct _fpreg _st[8];
- __u16 status;
- __u16 magic; /* 0xffff: regular FPU data only */
- /* 0x0000: FXSR data */
-
- /* Extended FXSR FPU environment: */
- __u32 _fxsr_env[6];
- __u32 mxcsr;
- __u32 reserved;
- struct _fpxreg _fxsr_st[8];
- struct _xmmreg _xmm[8]; /* The first 8 XMM registers */
- __u32 padding[44]; /* The second 8 XMM registers plus padding */
- union {
- __u32 padding2[12];
- /* Might encode xstate extensions, see asm/sigcontext.h: */
- struct _fpx_sw_bytes sw_reserved;
- };
-};
-
/* 32-bit compat sigcontext: */
struct sigcontext_ia32 {
__u16 gs, __gsh;
--
2.1.4
next prev parent reply other threads:[~2015-09-05 7:34 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-05 7:32 [PATCH 00/15] x86/headers: Clean up sigcontext types and headers Ingo Molnar
2015-09-05 7:32 ` [PATCH 01/15] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h Ingo Molnar
2015-09-08 14:24 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 02/15] x86/headers: Clean up uapi/asm/sigcontext32.h Ingo Molnar
2015-09-08 14:25 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 03/15] x86/headers: Clean up and better document uapi/asm/sigcontext.h Ingo Molnar
2015-09-08 14:25 ` [tip:x86/headers] x86/headers: Clean up and better document uapi/ asm/sigcontext.h tip-bot for Ingo Molnar
2015-09-09 7:12 ` Peter Zijlstra
2015-09-14 9:12 ` [tip:x86/headers] x86/headers: Clean up too long lines tip-bot for Peter Zijlstra
2015-09-05 7:32 ` [PATCH 04/15] x86/headers: Separate out legacy user-space structure definitions Ingo Molnar
2015-09-08 14:25 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 05/15] x86/headers: Use ABI types consistently in sigcontext*.h Ingo Molnar
2015-09-08 14:26 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 06/15] x86/headers: Unify register type definitions between 32-bit compat and i386 Ingo Molnar
2015-09-08 14:26 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` Ingo Molnar [this message]
2015-09-08 14:26 ` [tip:x86/headers] x86/headers: Unify 'struct _fpstate_ia32' and i386 struct _fpstate tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 08/15] x86/headers: Convert uses of _fpstate_ia32 to _fpstate_32 Ingo Molnar
2015-09-08 14:27 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 09/15] x86/headers: Clean up the kernel's struct sigcontext types to be ABI-clean Ingo Molnar
2015-09-08 14:27 ` [tip:x86/headers] x86/headers: Clean up the kernel' s " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 10/15] x86/headers: Move the 'struct sigcontext' definitions into the UAPI header Ingo Molnar
2015-09-08 14:27 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 11/15] x86/headers: Make sigcontext pointers bit independent Ingo Molnar
2015-09-08 14:28 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 12/15] x86/headers: Unify 'struct sigcontext_ia32' and 'struct sigcontext_32' Ingo Molnar
2015-09-08 14:28 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 13/15] x86/headers: Convert sigcontext_ia32 uses to sigcontext_32 Ingo Molnar
2015-09-08 14:28 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 14/15] x86/headers: Remove direct sigcontext32.h uses Ingo Molnar
2015-09-08 14:29 ` [tip:x86/headers] " tip-bot for Ingo Molnar
2015-09-05 7:32 ` [PATCH 15/15] x86/headers: Remove <asm/sigcontext.h> Ingo Molnar
2015-09-05 10:57 ` Mikko Rapeli
2015-09-05 11:59 ` Ingo Molnar
2015-09-05 12:11 ` Mikko Rapeli
2015-09-06 6:41 ` Ingo Molnar
2015-09-06 20:28 ` Mikko Rapeli
2015-09-07 7:37 ` Ingo Molnar
2015-09-07 8:14 ` Mikko Rapeli
2015-09-08 14:29 ` [tip:x86/headers] x86/headers: Remove <asm/sigcontext.h> references on the kernel side tip-bot for Ingo Molnar
2015-09-08 20:17 ` Mikko Rapeli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1441438363-9999-8-git-send-email-mingo@kernel.org \
--to=mingo@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=brgerst@gmail.com \
--cc=dvlasenk@redhat.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=mikko.rapeli@iki.fi \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).