10437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef _UAPI_ASM_X86_SIGCONTEXT_H
20437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define _UAPI_ASM_X86_SIGCONTEXT_H
30437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
40437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#include <linux/compiler.h>
50437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#include <linux/types.h>
60437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
70437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define FP_XSTATE_MAGIC1	0x46505853U
80437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define FP_XSTATE_MAGIC2	0x46505845U
90437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define FP_XSTATE_MAGIC2_SIZE	sizeof(FP_XSTATE_MAGIC2)
100437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
110437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/*
120437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * bytes 464..511 in the current 512byte layout of fxsave/fxrstor frame
130437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * are reserved for SW usage. On cpu's supporting xsave/xrstor, these bytes
140437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * are used to extended the fpstate pointer in the sigcontext, which now
150437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * includes the extended state information along with fpstate information.
160437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris *
170437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * Presence of FP_XSTATE_MAGIC1 at the beginning of this SW reserved
180437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * area and FP_XSTATE_MAGIC2 at the end of memory layout
190437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * (extended_size - FP_XSTATE_MAGIC2_SIZE) indicates the presence of the
200437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * extended state information in the memory layout pointed by the fpstate
210437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * pointer in sigcontext.
220437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris */
230437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct _fpx_sw_bytes {
240437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32 magic1;		/* FP_XSTATE_MAGIC1 */
250437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32 extended_size;	/* total size of the layout referred by
260437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				 * fpstate pointer in the sigcontext.
270437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				 */
280437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 xstate_bv;
290437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				/* feature bit mask (including fp/sse/extended
300437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				 * state) that is present in the memory
310437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				 * layout.
320437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				 */
330437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32 xstate_size;	/* actual xsave state size, based on the
340437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				 * features saved in the layout.
350437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				 * 'extended_size' will be greater than
360437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				 * 'xstate_size'.
370437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				 */
380437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32 padding[7];	/*  for future use. */
390437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
400437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
410437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifdef __i386__
420437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/*
430437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * As documented in the iBCS2 standard..
440437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris *
450437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * The first part of "struct _fpstate" is just the normal i387
460437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * hardware setup, the extra "status" word is used to save the
470437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * coprocessor status word before entering the handler.
480437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris *
490437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * Pentium III FXSR, SSE support
500437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris *	Gareth Hughes <gareth@valinux.com>, May 2000
510437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris *
520437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * The FPU state data structure has had to grow to accommodate the
530437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * extended FPU state required by the Streaming SIMD Extensions.
540437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * There is no documented standard to accomplish this at the moment.
550437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris */
560437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct _fpreg {
570437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short significand[4];
580437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short exponent;
590437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
600437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
610437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct _fpxreg {
620437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short significand[4];
630437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short exponent;
640437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short padding[3];
650437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
660437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
670437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct _xmmreg {
680437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long element[4];
690437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
700437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
710437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct _fpstate {
720437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	/* Regular FPU environment */
730437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	cw;
740437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	sw;
750437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	tag;
760437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	ipoff;
770437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	cssel;
780437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	dataoff;
790437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	datasel;
800437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	struct _fpreg	_st[8];
810437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short	status;
820437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short	magic;		/* 0xffff = regular FPU data only */
830437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
840437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	/* FXSR FPU environment */
850437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	_fxsr_env[6];	/* FXSR FPU env is ignored */
860437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	mxcsr;
870437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	reserved;
880437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	struct _fpxreg	_fxsr_st[8];	/* FXSR FPU reg data is ignored */
890437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	struct _xmmreg	_xmm[8];
900437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long	padding1[44];
910437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
920437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	union {
930437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris		unsigned long	padding2[12];
940437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris		struct _fpx_sw_bytes sw_reserved; /* represents the extended
950437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris						   * state info */
960437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	};
970437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
980437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
990437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define X86_FXSR_MAGIC		0x0000
1000437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
1010437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef __KERNEL__
1020437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/*
1030437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * User-space might still rely on the old definition:
1040437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris */
1050437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct sigcontext {
1060437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short gs, __gsh;
1070437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short fs, __fsh;
1080437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short es, __esh;
1090437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short ds, __dsh;
1100437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long edi;
1110437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long esi;
1120437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long ebp;
1130437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long esp;
1140437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long ebx;
1150437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long edx;
1160437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long ecx;
1170437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long eax;
1180437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long trapno;
1190437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long err;
1200437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long eip;
1210437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short cs, __csh;
1220437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long eflags;
1230437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long esp_at_signal;
1240437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned short ss, __ssh;
1250437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	struct _fpstate __user *fpstate;
1260437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long oldmask;
1270437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	unsigned long cr2;
1280437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
1290437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* !__KERNEL__ */
1300437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
1310437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#else /* __i386__ */
1320437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
1330437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* FXSAVE frame */
1340437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* Note: reserved1/2 may someday contain valuable data. Always save/restore
1350437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris   them when you change signal frames. */
1360437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct _fpstate {
1370437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u16	cwd;
1380437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u16	swd;
1390437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u16	twd;		/* Note this is not the same as the
1400437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris				   32bit/x87/FSAVE twd */
1410437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u16	fop;
1420437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64	rip;
1430437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64	rdp;
1440437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32	mxcsr;
1450437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32	mxcsr_mask;
1460437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32	st_space[32];	/* 8*16 bytes for each FP-reg */
1470437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32	xmm_space[64];	/* 16*16 bytes for each XMM-reg  */
1480437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32	reserved2[12];
1490437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	union {
1500437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris		__u32	reserved3[12];
1510437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris		struct _fpx_sw_bytes sw_reserved; /* represents the extended
1520437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris						   * state information */
1530437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	};
1540437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
1550437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
1560437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef __KERNEL__
1570437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/*
1580437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * User-space might still rely on the old definition:
1590437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris */
1600437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct sigcontext {
1610437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 r8;
1620437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 r9;
1630437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 r10;
1640437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 r11;
1650437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 r12;
1660437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 r13;
1670437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 r14;
1680437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 r15;
1690437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 rdi;
1700437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 rsi;
1710437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 rbp;
1720437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 rbx;
1730437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 rdx;
1740437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 rax;
1750437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 rcx;
1760437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 rsp;
1770437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 rip;
1780437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 eflags;		/* RFLAGS */
1790437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u16 cs;
1800437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u16 gs;
1810437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u16 fs;
1820437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u16 __pad0;
1830437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 err;
1840437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 trapno;
1850437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 oldmask;
1860437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 cr2;
1870437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	struct _fpstate __user *fpstate;	/* zero when no FPU context */
1880437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifdef __ILP32__
1890437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32 __fpstate_pad;
1900437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif
1910437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 reserved1[8];
1920437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
1930437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* !__KERNEL__ */
1940437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
1950437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* !__i386__ */
1960437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
1970437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct _xsave_hdr {
1980437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 xstate_bv;
1990437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 reserved1[2];
2000437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u64 reserved2[5];
2010437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
2020437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
2030437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct _ymmh_state {
2040437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	/* 16 * 16 bytes for each YMMH-reg */
2050437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	__u32 ymmh_space[64];
2060437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
2070437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
2080437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/*
2090437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * Extended state pointed by the fpstate pointer in the sigcontext.
2100437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * In addition to the fpstate, information encoded in the xstate_hdr
2110437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * indicates the presence of other extended state information
2120437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris * supported by the processor and OS.
2130437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris */
2140437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct _xstate {
2150437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	struct _fpstate fpstate;
2160437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	struct _xsave_hdr xstate_hdr;
2170437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	struct _ymmh_state ymmh;
2180437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris	/* new processor state extensions go here */
2190437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris};
2200437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
2210437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* _UAPI_ASM_X86_SIGCONTEXT_H */
222