sigcontext.h

来自「linux 内核源代码」· C头文件 代码 · 共 139 行

H
139
字号
#ifndef _ASM_X86_SIGCONTEXT_H#define _ASM_X86_SIGCONTEXT_H#include <linux/compiler.h>#include <asm/types.h>#ifdef __i386__/* * As documented in the iBCS2 standard.. * * The first part of "struct _fpstate" is just the normal i387 * hardware setup, the extra "status" word is used to save the * coprocessor status word before entering the handler. * * Pentium III FXSR, SSE support *	Gareth Hughes <gareth@valinux.com>, May 2000 * * The FPU state data structure has had to grow to accommodate the * extended FPU state required by the Streaming SIMD Extensions. * There is no documented standard to accomplish this at the moment. */struct _fpreg {	unsigned short significand[4];	unsigned short exponent;};struct _fpxreg {	unsigned short significand[4];	unsigned short exponent;	unsigned short padding[3];};struct _xmmreg {	unsigned long element[4];};struct _fpstate {	/* Regular FPU environment */	unsigned long	cw;	unsigned long	sw;	unsigned long	tag;	unsigned long	ipoff;	unsigned long	cssel;	unsigned long	dataoff;	unsigned long	datasel;	struct _fpreg	_st[8];	unsigned short	status;	unsigned short	magic;		/* 0xffff = regular FPU data only */	/* FXSR FPU environment */	unsigned long	_fxsr_env[6];	/* FXSR FPU env is ignored */	unsigned long	mxcsr;	unsigned long	reserved;	struct _fpxreg	_fxsr_st[8];	/* FXSR FPU reg data is ignored */	struct _xmmreg	_xmm[8];	unsigned long	padding[56];};#define X86_FXSR_MAGIC		0x0000struct sigcontext {	unsigned short gs, __gsh;	unsigned short fs, __fsh;	unsigned short es, __esh;	unsigned short ds, __dsh;	unsigned long edi;	unsigned long esi;	unsigned long ebp;	unsigned long esp;	unsigned long ebx;	unsigned long edx;	unsigned long ecx;	unsigned long eax;	unsigned long trapno;	unsigned long err;	unsigned long eip;	unsigned short cs, __csh;	unsigned long eflags;	unsigned long esp_at_signal;	unsigned short ss, __ssh;	struct _fpstate __user * fpstate;	unsigned long oldmask;	unsigned long cr2;};#else /* __i386__ *//* FXSAVE frame *//* Note: reserved1/2 may someday contain valuable data. Always save/restore   them when you change signal frames. */struct _fpstate {	__u16	cwd;	__u16	swd;	__u16	twd;	/* Note this is not the same as the 32bit/x87/FSAVE twd */	__u16	fop;	__u64	rip;	__u64	rdp;	__u32	mxcsr;	__u32	mxcsr_mask;	__u32	st_space[32];	/* 8*16 bytes for each FP-reg */	__u32	xmm_space[64];	/* 16*16 bytes for each XMM-reg  */	__u32	reserved2[24];};struct sigcontext {	unsigned long r8;	unsigned long r9;	unsigned long r10;	unsigned long r11;	unsigned long r12;	unsigned long r13;	unsigned long r14;	unsigned long r15;	unsigned long rdi;	unsigned long rsi;	unsigned long rbp;	unsigned long rbx;	unsigned long rdx;	unsigned long rax;	unsigned long rcx;	unsigned long rsp;	unsigned long rip;	unsigned long eflags;		/* RFLAGS */	unsigned short cs;	unsigned short gs;	unsigned short fs;	unsigned short __pad0;	unsigned long err;	unsigned long trapno;	unsigned long oldmask;	unsigned long cr2;	struct _fpstate __user *fpstate;	/* zero when no FPU context */	unsigned long reserved1[8];};#endif /* !__i386__ */#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?