1#ifndef _ASM_X86_64_SIGCONTEXT_H
2#define _ASM_X86_64_SIGCONTEXT_H
3
4#include <asm/types.h>
5#include <linux/compiler.h>
6
7/* FXSAVE frame */
8/* Note: reserved1/2 may someday contain valuable data. Always save/restore
9   them when you change signal frames. */
10struct _fpstate {
11	__u16	cwd;
12	__u16	swd;
13	__u16	twd;	/* Note this is not the same as the 32bit/x87/FSAVE twd */
14	__u16	fop;
15	__u64	rip;
16	__u64	rdp;
17	__u32	mxcsr;
18	__u32	mxcsr_mask;
19	__u32	st_space[32];	/* 8*16 bytes for each FP-reg */
20	__u32	xmm_space[64];	/* 16*16 bytes for each XMM-reg  */
21	__u32	reserved2[24];
22};
23
24struct sigcontext {
25	unsigned long r8;
26	unsigned long r9;
27	unsigned long r10;
28	unsigned long r11;
29	unsigned long r12;
30	unsigned long r13;
31	unsigned long r14;
32	unsigned long r15;
33	unsigned long rdi;
34	unsigned long rsi;
35	unsigned long rbp;
36	unsigned long rbx;
37	unsigned long rdx;
38	unsigned long rax;
39	unsigned long rcx;
40	unsigned long rsp;
41	unsigned long rip;
42	unsigned long eflags;		/* RFLAGS */
43	unsigned short cs;
44	unsigned short gs;
45	unsigned short fs;
46	unsigned short __pad0;
47	unsigned long err;
48	unsigned long trapno;
49	unsigned long oldmask;
50	unsigned long cr2;
51	struct _fpstate __user *fpstate;	/* zero when no FPU context */
52	unsigned long reserved1[8];
53};
54
55#endif
56