📄 ia32priv.h
字号:
#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 + -