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