1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- x86/Linux-specific kernel interface. vki-x86-linux.h ---*/ 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This file is part of Valgrind, a dynamic binary instrumentation 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown framework. 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 10b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Copyright (C) 2000-2011 Julian Seward 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown jseward@acm.org 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This program is free software; you can redistribute it and/or 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown modify it under the terms of the GNU General Public License as 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown published by the Free Software Foundation; either version 2 of the 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown License, or (at your option) any later version. 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This program is distributed in the hope that it will be useful, but 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown WITHOUT ANY WARRANTY; without even the implied warranty of 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown General Public License for more details. 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown You should have received a copy of the GNU General Public License 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown along with this program; if not, write to the Free Software 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 02111-1307, USA. 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown The GNU General Public License is contained in the file COPYING. 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown*/ 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifndef __VKI_X86_LINUX_H 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define __VKI_X86_LINUX_H 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// x86 is little-endian. 35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_LITTLE_ENDIAN 1 36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/types.h 39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned char __vki_u8; 42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __signed__ short __vki_s16; 44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned short __vki_u16; 45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __signed__ int __vki_s32; 47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned int __vki_u32; 48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __signed__ long long __vki_s64; 50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned long long __vki_u64; 51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned short vki_u16; 53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned int vki_u32; 55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/page.h 58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* PAGE_SHIFT determines the page size */ 61ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PAGE_SHIFT 12 62ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) 63ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT 64ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE 65ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 66ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 67ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.35.4/arch/x86/include/asm/shmparam.h 68ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 69ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 70ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SHMLBA VKI_PAGE_SIZE 71ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 72ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 73ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/signal.h 74ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 75ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 76ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MINSIGSTKSZ 2048 77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_BLOCK 0 /* for blocking signals */ 79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_UNBLOCK 1 /* for unblocking signals */ 80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_SETMASK 2 /* for setting the signal mask */ 81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Type of a signal handler. */ 83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef void __vki_signalfn_t(int); 84ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __vki_signalfn_t __user *__vki_sighandler_t; 85ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 86ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef void __vki_restorefn_t(void); 87ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __vki_restorefn_t __user *__vki_sigrestore_t; 88ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 89ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_DFL ((__vki_sighandler_t)0) /* default signal handling */ 90ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */ 91ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 92ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_NSIG 64 93ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_NSIG_BPW 32 94ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW) 95ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 96ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned long vki_old_sigset_t; /* at least 32 bits */ 97ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 98ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct { 99ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long sig[_VKI_NSIG_WORDS]; 100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} vki_sigset_t; 101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGHUP 1 103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGINT 2 104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGQUIT 3 105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGILL 4 106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTRAP 5 107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGABRT 6 108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//#define VKI_SIGIOT 6 109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGBUS 7 110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGFPE 8 111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGKILL 9 112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGUSR1 10 113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGSEGV 11 114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGUSR2 12 115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGPIPE 13 116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGALRM 14 117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTERM 15 118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGSTKFLT 16 119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGCHLD 17 120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGCONT 18 121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGSTOP 19 122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTSTP 20 123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTTIN 21 124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTTOU 22 125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGURG 23 126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGXCPU 24 127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGXFSZ 25 128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGVTALRM 26 129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGPROF 27 130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGWINCH 28 131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGIO 29 132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGPWR 30 133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGSYS 31 134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGUNUSED 31 135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* These should not be considered constants from userland. */ 137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGRTMIN 32 138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// [[This was (_NSIG-1) in 2.4.X... not sure if it matters.]] 139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGRTMAX _VKI_NSIG 140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_NOCLDSTOP 0x00000001u 142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_NOCLDWAIT 0x00000002u 143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_SIGINFO 0x00000004u 144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_ONSTACK 0x08000000u 145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_RESTART 0x10000000u 146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_NODEFER 0x40000000u 147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_RESETHAND 0x80000000u 148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_NOMASK VKI_SA_NODEFER 150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_ONESHOT VKI_SA_RESETHAND 151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//#define VKI_SA_INTERRUPT 0x20000000 /* dummy -- ignored */ 152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_RESTORER 0x04000000 154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SS_ONSTACK 1 156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SS_DISABLE 2 157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* These are 'legacy' sigactions in which the size of sa_mask is fixed 159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown (cannot be expanded at any future point) because it is sandwiched 160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown between two other fields. 161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown (there is identical kludgery in vki-ppc32-linux.h) */ 162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_old_sigaction { 163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // [[Nb: a 'k' prefix is added to "sa_handler" because 164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // bits/sigaction.h (which gets dragged in somehow via signal.h) 165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // #defines it as something else. Since that is done for glibc's 166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // purposes, which we don't care about here, we use our own name.]] 167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_sighandler_t ksa_handler; 168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_old_sigset_t sa_mask; 169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long sa_flags; 170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_sigrestore_t sa_restorer; 171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_sigaction_base { 174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // [[See comment about extra 'k' above]] 175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_sighandler_t ksa_handler; 176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long sa_flags; 177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_sigrestore_t sa_restorer; 178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_sigset_t sa_mask; /* mask last for extensibility */ 179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* On Linux we use the same type for passing sigactions to 182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown and from the kernel. Hence: */ 183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_sigaction_base vki_sigaction_toK_t; 184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_sigaction_base vki_sigaction_fromK_t; 185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_sigaltstack { 188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown void __user *ss_sp; 189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown int ss_flags; 190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_size_t ss_size; 191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} vki_stack_t; 192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/sigcontext.h 195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct _vki_fpreg { 198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short significand[4]; 199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short exponent; 200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct _vki_fpxreg { 203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short significand[4]; 204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short exponent; 205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short padding[3]; 206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct _vki_xmmreg { 209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long element[4]; 210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct _vki_fpstate { 213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* Regular FPU environment */ 214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long cw; 215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long sw; 216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long tag; 217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long ipoff; 218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long cssel; 219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long dataoff; 220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long datasel; 221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct _vki_fpreg _st[8]; 222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short status; 223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short magic; /* 0xffff = regular FPU data only */ 224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* FXSR FPU environment */ 226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long _fxsr_env[6]; /* FXSR FPU env is ignored */ 227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long mxcsr; 228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long reserved; 229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct _vki_fpxreg _fxsr_st[8]; /* FXSR FPU reg data is ignored */ 230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct _vki_xmmreg _xmm[8]; 231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long padding[56]; 232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_sigcontext { 235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short gs, __gsh; 236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short fs, __fsh; 237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short es, __esh; 238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ds, __dsh; 239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long edi; 240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long esi; 241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long ebp; 242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long esp; 243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long ebx; 244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long edx; 245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long ecx; 246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long eax; 247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long trapno; 248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long err; 249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long eip; 250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short cs, __csh; 251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long eflags; 252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long esp_at_signal; 253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ss, __ssh; 254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct _vki_fpstate __user * fpstate; 255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long oldmask; 256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long cr2; 257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/mman.h 261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_NONE 0x0 /* No page permissions */ 264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_READ 0x1 /* page can be read */ 265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_WRITE 0x2 /* page can be written */ 266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_EXEC 0x4 /* page can be executed */ 267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */ 268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */ 269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_SHARED 0x01 /* Share changes */ 271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_PRIVATE 0x02 /* Changes are private */ 272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//#define VKI_MAP_TYPE 0x0f /* Mask for type of mapping */ 273ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */ 274ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_ANONYMOUS 0x20 /* don't use a file */ 275ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_NORESERVE 0x4000 /* don't check for reservations */ 276ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 278ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/fcntl.h 279ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 280ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 281ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_RDONLY 00 282ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_WRONLY 01 283ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_RDWR 02 284ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_CREAT 0100 /* not fcntl */ 285ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_EXCL 0200 /* not fcntl */ 286ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_TRUNC 01000 /* not fcntl */ 287ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_APPEND 02000 288ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_NONBLOCK 04000 289ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_LARGEFILE 0100000 290ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 291ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_AT_FDCWD -100 292ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 293ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_DUPFD 0 /* dup */ 294ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETFD 1 /* get close_on_exec */ 295ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETFD 2 /* set/clear close_on_exec */ 296ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETFL 3 /* get file->f_flags */ 297ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETFL 4 /* set file->f_flags */ 298ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETLK 5 299ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETLK 6 300ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETLKW 7 301ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 302ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETOWN 8 /* for sockets. */ 303ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETOWN 9 /* for sockets. */ 304ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETSIG 10 /* for sockets. */ 305ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETSIG 11 /* for sockets. */ 306ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 307ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETLK64 12 /* using 'struct flock64' */ 308ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETLK64 13 309ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETLKW64 14 310ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 311ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* for F_[GET|SET]FL */ 312ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */ 313ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 314ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_LINUX_SPECIFIC_BASE 1024 315ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 316ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 317ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/resource.h 318ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 319ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 320ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_RLIMIT_DATA 2 /* max data size */ 321ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_RLIMIT_STACK 3 /* max stack size */ 322ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_RLIMIT_CORE 4 /* max core file size */ 323ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_RLIMIT_NOFILE 7 /* max number of open files */ 324ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 325ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 326ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/socket.h 327ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 328ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 329ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SOL_SOCKET 1 330ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 331ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SO_TYPE 3 332ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 333ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 334ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/sockios.h 335ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 336ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 337ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIOCSPGRP 0x8902 338ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIOCGPGRP 0x8904 339ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIOCGSTAMP 0x8906 /* Get stamp (timeval) */ 340ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */ 341ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 342ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 343ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/stat.h 344ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 345ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 346ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_stat { 347ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_dev; 348ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_ino; 349ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short st_mode; 350ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short st_nlink; 351ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short st_uid; 352ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short st_gid; 353ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_rdev; 354ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_size; 355ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_blksize; 356ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_blocks; 357ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_atime; 358ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_atime_nsec; 359ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_mtime; 360ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_mtime_nsec; 361ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_ctime; 362ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_ctime_nsec; 363ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused4; 364ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused5; 365ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 366ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 367ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_stat64 { 368ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long long st_dev; 369ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned char __pad0[4]; 370ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 371ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define STAT64_HAS_BROKEN_ST_INO 1 372ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __st_ino; 373ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 374ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int st_mode; 375ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int st_nlink; 376ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 377ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_uid; 378ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_gid; 379ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 380ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long long st_rdev; 381ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned char __pad3[4]; 382ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 383ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long long st_size; 384ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_blksize; 385ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 386ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_blocks; /* Number 512-byte blocks allocated. */ 387ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __pad4; /* future possible st_blocks high bits */ 388ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 389ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_atime; 390ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_atime_nsec; 391ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 392ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_mtime; 393ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int st_mtime_nsec; 394ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 395ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_ctime; 396ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_ctime_nsec; 397ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 398ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long long st_ino; 399ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 400ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 401ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 402ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/statfs.h 403ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 404ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 405ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// [[Nb: asm-i386/statfs.h just #include asm-generic/statfs.h directly]] 406ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_statfs { 407ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_type; 408ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_bsize; 409ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_blocks; 410ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_bfree; 411ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_bavail; 412ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_files; 413ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_ffree; 414ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_fsid_t f_fsid; 415ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_namelen; 416ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_frsize; 417ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 f_spare[5]; 418ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 419ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 420ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 421ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/termios.h 422ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 423ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 424ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_winsize { 425ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ws_row; 426ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ws_col; 427ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ws_xpixel; 428ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ws_ypixel; 429ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 430ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 431ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_NCC 8 432ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_termio { 433ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short c_iflag; /* input mode flags */ 434ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short c_oflag; /* output mode flags */ 435ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short c_cflag; /* control mode flags */ 436ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short c_lflag; /* local mode flags */ 437ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned char c_line; /* line discipline */ 438ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned char c_cc[VKI_NCC]; /* control characters */ 439ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 440ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 441ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 442ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 443ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/termbits.h 444ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 445ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 446ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned char vki_cc_t; 447ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned int vki_tcflag_t; 448ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 449ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_NCCS 19 450ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_termios { 451ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_tcflag_t c_iflag; /* input mode flags */ 452ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_tcflag_t c_oflag; /* output mode flags */ 453ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_tcflag_t c_cflag; /* control mode flags */ 454ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_tcflag_t c_lflag; /* local mode flags */ 455ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_cc_t c_line; /* line discipline */ 456ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_cc_t c_cc[VKI_NCCS]; /* control characters */ 457ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 458ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 459ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 460ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/ioctl.h 461ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 462ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 463ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_NRBITS 8 464ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_TYPEBITS 8 465ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_SIZEBITS 14 466ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_DIRBITS 2 467ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 468ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_NRMASK ((1 << _VKI_IOC_NRBITS)-1) 469ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_TYPEMASK ((1 << _VKI_IOC_TYPEBITS)-1) 470ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1) 471ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1) 472ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 473ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_NRSHIFT 0 474ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS) 475ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS) 476ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS) 477ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 478ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_NONE 0U 479ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_WRITE 1U 480ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_READ 2U 481ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 482ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC(dir,type,nr,size) \ 483ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown (((dir) << _VKI_IOC_DIRSHIFT) | \ 484ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ((type) << _VKI_IOC_TYPESHIFT) | \ 485ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ((nr) << _VKI_IOC_NRSHIFT) | \ 486ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ((size) << _VKI_IOC_SIZESHIFT)) 487ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 488ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* used to create numbers */ 489ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) 490ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size))) 491ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size))) 492ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size))) 493ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 494ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* used to decode ioctl numbers.. */ 495ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK) 496ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_TYPE(nr) (((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK) 497ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_NR(nr) (((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK) 498ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK) 499ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 500ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 501ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/ioctls.h 502ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 503ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 504ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCGETS 0x5401 505ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETS 0x5402 /* Clashes with SNDCTL_TMR_START sound ioctl */ 506ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETSW 0x5403 507ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETSF 0x5404 508ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCGETA 0x5405 509ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETA 0x5406 510ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETAW 0x5407 511ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETAF 0x5408 512ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSBRK 0x5409 513ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCXONC 0x540A 514ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCFLSH 0x540B 515ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSCTTY 0x540E 516ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCGPGRP 0x540F 517ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSPGRP 0x5410 518ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCOUTQ 0x5411 519ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCGWINSZ 0x5413 520ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSWINSZ 0x5414 521ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCMGET 0x5415 522ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCMBIS 0x5416 523ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCMBIC 0x5417 524ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCMSET 0x5418 525ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_FIONREAD 0x541B 526ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCLINUX 0x541C 527ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_FIONBIO 0x5421 528ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ 529ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ 530ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */ 531ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 532ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_FIOASYNC 0x5452 533ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ 534ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 535ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ 536ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 537ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 538ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/poll.h 539ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 540ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 541ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* These are specified by iBCS2 */ 542ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_POLLIN 0x0001 543ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 544ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_pollfd { 545ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown int fd; 546ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown short events; 547ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown short revents; 548ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 549ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 550ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 551ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/user.h 552ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 553ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 554ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_user_i387_struct { 555ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long cwd; 556ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long swd; 557ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long twd; 558ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long fip; 559ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long fcs; 560ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long foo; 561ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long fos; 562ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */ 563ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 564ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 565ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_user_fxsr_struct { 566ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short cwd; 567ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short swd; 568ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short twd; 569ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short fop; 570ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long fip; 571ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long fcs; 572ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long foo; 573ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long fos; 574ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long mxcsr; 575ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long reserved; 576ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ 577ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */ 578ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long padding[56]; 579ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 580ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 581ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* 582ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * This is the old layout of "struct pt_regs", and 583ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * is still the layout used by user mode (the new 584ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * pt_regs doesn't have all registers as the kernel 585ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * doesn't use the extra segment registers) 586ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown */ 587ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_user_regs_struct { 588ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long ebx, ecx, edx, esi, edi, ebp, eax; 589ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ds, __ds, es, __es; 590ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short fs, __fs, gs, __gs; 591ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long orig_eax, eip; 592ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short cs, __cs; 593ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long eflags, esp; 594ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ss, __ss; 595ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 596ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 597ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 598ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/elf.h 599ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 600ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 601ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned long vki_elf_greg_t; 602ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 603ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t)) 604ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG]; 605ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 606ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_user_i387_struct vki_elf_fpregset_t; 607ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_user_fxsr_struct vki_elf_fpxregset_t; 608ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 609ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_AT_SYSINFO 32 610ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 611ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 612ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/ucontext.h 613ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 614ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 615ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_ucontext { 616ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long uc_flags; 617ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_ucontext *uc_link; 618ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_stack_t uc_stack; 619ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_sigcontext uc_mcontext; 620ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_sigset_t uc_sigmask; /* mask last for extensibility */ 621ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 622ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 623ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 624ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/segment.h 625ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 626ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 627ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_GDT_ENTRY_TLS_ENTRIES 3 628ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_GDT_ENTRY_TLS_MIN 6 629ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_GDT_ENTRY_TLS_MAX (VKI_GDT_ENTRY_TLS_MIN + VKI_GDT_ENTRY_TLS_ENTRIES - 1) 630ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 631ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 632ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/ldt.h 633ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 634ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 635ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* [[Nb: This is the structure passed to the modify_ldt syscall. Just so as 636ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown to confuse and annoy everyone, this is _not_ the same as an 637ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VgLdtEntry and has to be translated into such. The logic for doing 638ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown so, in vg_ldt.c, is copied from the kernel sources.]] */ 639ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_user_desc { 640ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int entry_number; 641ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long base_addr; 642ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int limit; 643ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int seg_32bit:1; 644ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int contents:2; 645ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int read_exec_only:1; 646ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int limit_in_pages:1; 647ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int seg_not_present:1; 648ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int useable:1; 649ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // [[Nb: this field is not in the kernel sources, but it has always 650ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // been in the Valgrind sources so I will keep it there in case it's 651ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // important... this is an x86-defined data structure so who 652ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // knows; maybe it's important to set this field to zero at some 653ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // point. --njn]] 654ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int reserved:25; 655ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 656ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 657ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// [[Nb: for our convenience within Valgrind, use a more specific name]] 658ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_user_desc vki_modify_ldt_t; 659ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 660ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 661ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/ipcbuf.h 662ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 663ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 664ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_ipc64_perm 665ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 666ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_key_t key; 667ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_uid32_t uid; 668ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_gid32_t gid; 669ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_uid32_t cuid; 670ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_gid32_t cgid; 671ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_mode_t mode; 672ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short __pad1; 673ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short seq; 674ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short __pad2; 675ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused1; 676ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused2; 677ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 678ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 679ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 680ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/sembuf.h 681ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 682ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 683ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_semid64_ds { 684ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */ 685ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t sem_otime; /* last semop time */ 686ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused1; 687ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t sem_ctime; /* last change time */ 688ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused2; 689ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long sem_nsems; /* no. of semaphores in array */ 690ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused3; 691ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused4; 692ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 693ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 694ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 695ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/msgbuf.h 696ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 697ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 698ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_msqid64_ds { 699ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_ipc64_perm msg_perm; 700ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t msg_stime; /* last msgsnd time */ 701ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused1; 702ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t msg_rtime; /* last msgrcv time */ 703ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused2; 704ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t msg_ctime; /* last change time */ 705ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused3; 706ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long msg_cbytes; /* current number of bytes on queue */ 707ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long msg_qnum; /* number of messages in queue */ 708ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long msg_qbytes; /* max number of bytes on queue */ 709ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */ 710ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_pid_t msg_lrpid; /* last receive pid */ 711ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused4; 712ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused5; 713ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 714ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 715ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 716ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/ipc.h 717ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 718ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 719ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_ipc_kludge { 720ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_msgbuf __user *msgp; 721ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long msgtyp; 722ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 723ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 724ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SEMOP 1 725ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SEMGET 2 726ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SEMCTL 3 727ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SEMTIMEDOP 4 728ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MSGSND 11 729ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MSGRCV 12 730ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MSGGET 13 731ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MSGCTL 14 732ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SHMAT 21 733ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SHMDT 22 734ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SHMGET 23 735ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SHMCTL 24 736ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 737ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 738ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 739ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.8.1/include/asm-i386/shmbuf.h 740ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 741ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 742ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_shmid64_ds { 743ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_ipc64_perm shm_perm; /* operation perms */ 744ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_size_t shm_segsz; /* size of segment (bytes) */ 745ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t shm_atime; /* last attach time */ 746ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused1; 747ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t shm_dtime; /* last detach time */ 748ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused2; 749ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t shm_ctime; /* last change time */ 750ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused3; 751ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_pid_t shm_cpid; /* pid of creator */ 752ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_pid_t shm_lpid; /* pid of last operator */ 753ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shm_nattch; /* no. of current attaches */ 754ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused4; 755ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused5; 756ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 757ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 758ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_shminfo64 { 759ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmmax; 760ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmmin; 761ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmmni; 762ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmseg; 763ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmall; 764ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused1; 765ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused2; 766ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused3; 767ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused4; 768ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 769ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 770ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 771ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// DRM ioctls 772ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 773ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 774ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// jrs 20050207: where did all this stuff come from? Is it really 775ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// i386 specific, or should it go into the linux-generic category? 776ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//struct vki_drm_buf_pub { 777ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// Int idx; /**< Index into the master buffer list */ 778ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// Int total; /**< Buffer size */ 779ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// Int used; /**< Amount of buffer in use (for DMA) */ 780ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// void __user *address; /**< Address of buffer */ 781ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//}; 782ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// 783ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//struct vki_drm_buf_map { 784ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// Int count; /**< Length of the buffer list */ 785ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// void __user *virtual; /**< Mmap'd area in user-virtual */ 786ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// struct vki_drm_buf_pub __user *list; /**< Buffer information */ 787ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//}; 788ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// 789ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown///* We need to pay attention to this, because it mmaps memory */ 790ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//#define VKI_DRM_IOCTL_MAP_BUFS _VKI_IOWR('d', 0x19, struct vki_drm_buf_map) 791ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 792ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 793ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-i386/ptrace.h 794ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 795ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 796ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_GETREGS 12 797ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_SETREGS 13 798ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_GETFPREGS 14 799ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_SETFPREGS 15 800ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_GETFPXREGS 18 801ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_SETFPXREGS 19 802ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 803ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 804ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.15.4/include/asm-i386/vm86.h 805ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 806ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 807ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_VM86_PLUS_INSTALL_CHECK 0 808ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_VM86_ENTER 1 809ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_VM86_ENTER_NO_BYPASS 2 810ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_VM86_REQUEST_IRQ 3 811ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_VM86_FREE_IRQ 4 812ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_VM86_GET_IRQ_BITS 5 813ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_VM86_GET_AND_RESET_IRQ 6 814ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 815ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_vm86_regs { 816ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* 817ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * normal regs, with special meaning for the segment descriptors.. 818ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown */ 819ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long ebx; 820ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long ecx; 821ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long edx; 822ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long esi; 823ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long edi; 824ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long ebp; 825ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long eax; 826ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long __null_ds; 827ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long __null_es; 828ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long __null_fs; 829ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long __null_gs; 830ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long orig_eax; 831ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long eip; 832ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short cs, __csh; 833ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long eflags; 834ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long esp; 835ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ss, __ssh; 836ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* 837ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * these are specific to v86 mode: 838ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown */ 839ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short es, __esh; 840ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ds, __dsh; 841ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short fs, __fsh; 842ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short gs, __gsh; 843ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 844ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 845ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_revectored_struct { 846ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __map[8]; /* 256 bits */ 847ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 848ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 849ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_vm86_struct { 850ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_vm86_regs regs; 851ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long flags; 852ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long screen_bitmap; 853ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long cpu_type; 854ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_revectored_struct int_revectored; 855ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_revectored_struct int21_revectored; 856ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 857ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 858ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_vm86plus_info_struct { 859ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long force_return_for_pic:1; 860ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long vm86dbg_active:1; /* for debugger */ 861ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long vm86dbg_TFpendig:1; /* for debugger */ 862ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long unused:28; 863ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long is_vm86pus:1; /* for vm86 internal use */ 864ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned char vm86dbg_intxxtab[32]; /* for debugger */ 865ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 866ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 867ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_vm86plus_struct { 868ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_vm86_regs regs; 869ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long flags; 870ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long screen_bitmap; 871ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long cpu_type; 872ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_revectored_struct int_revectored; 873ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_revectored_struct int21_revectored; 874ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_vm86plus_info_struct vm86plus; 875ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 876ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 877ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 878ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// And that's it! 879ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 880ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 881ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif // __VKI_X86_LINUX_H 882ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 883ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 884ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- end ---*/ 885ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 886