⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ia32priv.h

📁 linux-2.6.15.6
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef _ASM_IA64_IA32_PRIV_H#define _ASM_IA64_IA32_PRIV_H#include <linux/config.h>#include <asm/ia32.h>#ifdef CONFIG_IA32_SUPPORT#include <linux/binfmts.h>#include <linux/compat.h>#include <linux/rbtree.h>#include <asm/processor.h>/* * 32 bit structures for IA32 support. */#define IA32_PAGE_SIZE		(1UL << IA32_PAGE_SHIFT)#define IA32_PAGE_MASK		(~(IA32_PAGE_SIZE - 1))#define IA32_PAGE_ALIGN(addr)	(((addr) + IA32_PAGE_SIZE - 1) & IA32_PAGE_MASK)#define IA32_CLOCKS_PER_SEC	100	/* Cast in stone for IA32 Linux *//* * partially mapped pages provide precise accounting of which 4k sub pages * are mapped and which ones are not, thereby improving IA-32 compatibility. */struct partial_page {	struct partial_page	*next; /* linked list, sorted by address */	struct rb_node		pp_rb;	/* 64K is the largest "normal" page supported by ia64 ABI. So 4K*32	 * should suffice.*/	unsigned int		bitmap;	unsigned int		base;};struct partial_page_list {	struct partial_page	*pp_head; /* list head, points to the lowest					   * addressed partial page */	struct rb_root		ppl_rb;	struct partial_page	*pp_hint; /* pp_hint->next is the last					   * accessed partial page */	atomic_t		pp_count; /* reference count */};#if PAGE_SHIFT > IA32_PAGE_SHIFTstruct partial_page_list* ia32_init_pp_list (void);#else# define ia32_init_pp_list()	0#endif/* sigcontext.h *//* * 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. */struct _fpreg_ia32 {       unsigned short significand[4];       unsigned short exponent;};struct _fpxreg_ia32 {        unsigned short significand[4];        unsigned short exponent;        unsigned short padding[3];};struct _xmmreg_ia32 {        unsigned int element[4];};struct _fpstate_ia32 {       unsigned int    cw,		       sw,		       tag,		       ipoff,		       cssel,		       dataoff,		       datasel;       struct _fpreg_ia32      _st[8];       unsigned short  status;       unsigned short  magic;          /* 0xffff = regular FPU data only */       /* FXSR FPU environment */       unsigned int         _fxsr_env[6];   /* FXSR FPU env is ignored */       unsigned int         mxcsr;       unsigned int         reserved;       struct _fpxreg_ia32  _fxsr_st[8];    /* FXSR FPU reg data is ignored */       struct _xmmreg_ia32  _xmm[8];       unsigned int         padding[56];};struct sigcontext_ia32 {       unsigned short gs, __gsh;       unsigned short fs, __fsh;       unsigned short es, __esh;       unsigned short ds, __dsh;       unsigned int edi;       unsigned int esi;       unsigned int ebp;       unsigned int esp;       unsigned int ebx;       unsigned int edx;       unsigned int ecx;       unsigned int eax;       unsigned int trapno;       unsigned int err;       unsigned int eip;       unsigned short cs, __csh;       unsigned int eflags;       unsigned int esp_at_signal;       unsigned short ss, __ssh;       unsigned int fpstate;		/* really (struct _fpstate_ia32 *) */       unsigned int oldmask;       unsigned int cr2;};/* user.h *//* * IA32 (Pentium III/4) FXSR, SSE support * * Provide support for the GDB 5.0+ PTRACE_{GET|SET}FPXREGS requests for * interacting with the FXSR-format floating point environment.  Floating * point data can be accessed in the regular format in the usual manner, * and both the standard and SIMD floating point data can be accessed via * the new ptrace requests.  In either case, changes to the FPU environment * will be reflected in the task's state as expected. */struct ia32_user_i387_struct {	int	cwd;	int	swd;	int	twd;	int	fip;	int	fcs;	int	foo;	int	fos;	/* 8*10 bytes for each FP-reg = 80 bytes */	struct _fpreg_ia32 	st_space[8];};struct ia32_user_fxsr_struct {	unsigned short	cwd;	unsigned short	swd;	unsigned short	twd;	unsigned short	fop;	int	fip;	int	fcs;	int	foo;	int	fos;	int	mxcsr;	int	reserved;	int	st_space[32];	/* 8*16 bytes for each FP-reg = 128 bytes */	int	xmm_space[32];	/* 8*16 bytes for each XMM-reg = 128 bytes */	int	padding[56];};/* signal.h */#define IA32_SET_SA_HANDLER(ka,handler,restorer)				\				((ka)->sa.sa_handler = (__sighandler_t)		\					(((unsigned long)(restorer) << 32)	\					 | ((handler) & 0xffffffff)))#define IA32_SA_HANDLER(ka)	((unsigned long) (ka)->sa.sa_handler & 0xffffffff)#define IA32_SA_RESTORER(ka)	((unsigned long) (ka)->sa.sa_handler >> 32)#define __IA32_NR_sigreturn 119#define __IA32_NR_rt_sigreturn 173struct sigaction32 {       unsigned int sa_handler;		/* Really a pointer, but need to deal with 32 bits */       unsigned int sa_flags;       unsigned int sa_restorer;	/* Another 32 bit pointer */       compat_sigset_t sa_mask;		/* A 32 bit mask */};struct old_sigaction32 {       unsigned int  sa_handler;	/* Really a pointer, but need to deal					     with 32 bits */       compat_old_sigset_t sa_mask;		/* A 32 bit mask */       unsigned int sa_flags;       unsigned int sa_restorer;	/* Another 32 bit pointer */};typedef struct sigaltstack_ia32 {	unsigned int	ss_sp;	int		ss_flags;	unsigned int	ss_size;} stack_ia32_t;struct ucontext_ia32 {	unsigned int	  uc_flags;	unsigned int	  uc_link;	stack_ia32_t	  uc_stack;	struct sigcontext_ia32 uc_mcontext;	sigset_t	  uc_sigmask;	/* mask last for extensibility */};struct stat64 {	unsigned long long	st_dev;	unsigned char	__pad0[4];	unsigned int	__st_ino;	unsigned int	st_mode;	unsigned int	st_nlink;	unsigned int	st_uid;	unsigned int	st_gid;	unsigned long long	st_rdev;	unsigned char	__pad3[4];	unsigned int	st_size_lo;	unsigned int	st_size_hi;	unsigned int	st_blksize;	unsigned int	st_blocks;	/* Number 512-byte blocks allocated. */	unsigned int	__pad4;		/* future possible st_blocks high bits */	unsigned int	st_atime;	unsigned int	st_atime_nsec;	unsigned int	st_mtime;	unsigned int	st_mtime_nsec;	unsigned int	st_ctime;	unsigned int	st_ctime_nsec;	unsigned int	st_ino_lo;	unsigned int	st_ino_hi;};typedef struct compat_siginfo {	int si_signo;	int si_errno;	int si_code;	union {		int _pad[((128/sizeof(int)) - 3)];		/* kill() */		struct {			unsigned int _pid;	/* sender's pid */			unsigned int _uid;	/* sender's uid */		} _kill;		/* POSIX.1b timers */		struct {			compat_timer_t _tid;		/* timer id */			int _overrun;		/* overrun count */			char _pad[sizeof(unsigned int) - sizeof(int)];			compat_sigval_t _sigval;	/* same as below */			int _sys_private;       /* not to be passed to user */		} _timer;		/* POSIX.1b signals */		struct {			unsigned int _pid;	/* sender's pid */			unsigned int _uid;	/* sender's uid */			compat_sigval_t _sigval;		} _rt;		/* SIGCHLD */		struct {			unsigned int _pid;	/* which child */			unsigned int _uid;	/* sender's uid */			int _status;		/* exit code */			compat_clock_t _utime;			compat_clock_t _stime;		} _sigchld;		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */		struct {			unsigned int _addr;	/* faulting insn/memory ref. */		} _sigfault;		/* SIGPOLL */

⌨️ 快捷键说明

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