1c616819253fcf211745060b2be26076174b1df19njn
2c616819253fcf211745060b2be26076174b1df19njn/*--------------------------------------------------------------------*/
342c8355fc918c5af6182559e93f7402311530e77njn/*--- AMD64/Linux-specific kernel interface.     vki-amd64-linux.h ---*/
4c616819253fcf211745060b2be26076174b1df19njn/*--------------------------------------------------------------------*/
5c616819253fcf211745060b2be26076174b1df19njn
6c616819253fcf211745060b2be26076174b1df19njn/*
7b9c427c63a278cc612ae0ec573be7bb1abaa447fnjn   This file is part of Valgrind, a dynamic binary instrumentation
8b9c427c63a278cc612ae0ec573be7bb1abaa447fnjn   framework.
9c616819253fcf211745060b2be26076174b1df19njn
10ed39800a83baf5bffbe391f3974eb2af0f415f80Elliott Hughes   Copyright (C) 2000-2017 Julian Seward
11c616819253fcf211745060b2be26076174b1df19njn      jseward@acm.org
12c616819253fcf211745060b2be26076174b1df19njn
13c616819253fcf211745060b2be26076174b1df19njn   This program is free software; you can redistribute it and/or
14c616819253fcf211745060b2be26076174b1df19njn   modify it under the terms of the GNU General Public License as
15c616819253fcf211745060b2be26076174b1df19njn   published by the Free Software Foundation; either version 2 of the
16c616819253fcf211745060b2be26076174b1df19njn   License, or (at your option) any later version.
17c616819253fcf211745060b2be26076174b1df19njn
18c616819253fcf211745060b2be26076174b1df19njn   This program is distributed in the hope that it will be useful, but
19c616819253fcf211745060b2be26076174b1df19njn   WITHOUT ANY WARRANTY; without even the implied warranty of
20c616819253fcf211745060b2be26076174b1df19njn   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21c616819253fcf211745060b2be26076174b1df19njn   General Public License for more details.
22c616819253fcf211745060b2be26076174b1df19njn
23c616819253fcf211745060b2be26076174b1df19njn   You should have received a copy of the GNU General Public License
24c616819253fcf211745060b2be26076174b1df19njn   along with this program; if not, write to the Free Software
25c616819253fcf211745060b2be26076174b1df19njn   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
26c616819253fcf211745060b2be26076174b1df19njn   02111-1307, USA.
27c616819253fcf211745060b2be26076174b1df19njn
28c616819253fcf211745060b2be26076174b1df19njn   The GNU General Public License is contained in the file COPYING.
29c616819253fcf211745060b2be26076174b1df19njn*/
30c616819253fcf211745060b2be26076174b1df19njn
314de47b1c9bfe84ddd76a9e71e486c5085c51e3a8njn#ifndef __VKI_AMD64_LINUX_H
324de47b1c9bfe84ddd76a9e71e486c5085c51e3a8njn#define __VKI_AMD64_LINUX_H
33c616819253fcf211745060b2be26076174b1df19njn
34c616819253fcf211745060b2be26076174b1df19njn// AMD64 is little-endian.
35c616819253fcf211745060b2be26076174b1df19njn#define VKI_LITTLE_ENDIAN  1
36c616819253fcf211745060b2be26076174b1df19njn
37c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
38c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/types.h
39c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
40c616819253fcf211745060b2be26076174b1df19njn
41c616819253fcf211745060b2be26076174b1df19njntypedef unsigned char __vki_u8;
42c616819253fcf211745060b2be26076174b1df19njn
43c616819253fcf211745060b2be26076174b1df19njntypedef __signed__ short __vki_s16;
44c616819253fcf211745060b2be26076174b1df19njntypedef unsigned short __vki_u16;
45c616819253fcf211745060b2be26076174b1df19njn
461aa57373be5343c365ee6b480e205abc16008402tomtypedef __signed__ int __vki_s32;
47c616819253fcf211745060b2be26076174b1df19njntypedef unsigned int __vki_u32;
48c616819253fcf211745060b2be26076174b1df19njn
49c616819253fcf211745060b2be26076174b1df19njntypedef __signed__ long long __vki_s64;
50c616819253fcf211745060b2be26076174b1df19njntypedef unsigned long long __vki_u64;
51c616819253fcf211745060b2be26076174b1df19njn
52c616819253fcf211745060b2be26076174b1df19njntypedef unsigned short vki_u16;
53c616819253fcf211745060b2be26076174b1df19njn
54c616819253fcf211745060b2be26076174b1df19njntypedef unsigned int vki_u32;
55c616819253fcf211745060b2be26076174b1df19njn
56c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
57c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/page.h
58c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
59c616819253fcf211745060b2be26076174b1df19njn
60c616819253fcf211745060b2be26076174b1df19njn#define VKI_PAGE_SHIFT	12
61c616819253fcf211745060b2be26076174b1df19njn#define VKI_PAGE_SIZE	(1UL << VKI_PAGE_SHIFT)
62e66f2e09ec1aa9bab7a0fd6b02a6a6150ea85190sewardj#define VKI_MAX_PAGE_SHIFT	VKI_PAGE_SHIFT
63e66f2e09ec1aa9bab7a0fd6b02a6a6150ea85190sewardj#define VKI_MAX_PAGE_SIZE	VKI_PAGE_SIZE
64c616819253fcf211745060b2be26076174b1df19njn
65c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
66a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj// From linux-2.6.35.4/arch/x86/include/asm/shmparam.h
67a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj//----------------------------------------------------------------------
68a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj
69a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj#define VKI_SHMLBA  VKI_PAGE_SIZE
70a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj
71a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj//----------------------------------------------------------------------
72c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/signal.h
73c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
74c616819253fcf211745060b2be26076174b1df19njn
75c616819253fcf211745060b2be26076174b1df19njn#define _VKI_NSIG	64
76c616819253fcf211745060b2be26076174b1df19njn#define _VKI_NSIG_BPW	64
77c616819253fcf211745060b2be26076174b1df19njn#define _VKI_NSIG_WORDS	(_VKI_NSIG / _VKI_NSIG_BPW)
78c616819253fcf211745060b2be26076174b1df19njn
79c616819253fcf211745060b2be26076174b1df19njntypedef unsigned long vki_old_sigset_t;		/* at least 32 bits */
80c616819253fcf211745060b2be26076174b1df19njn
81c616819253fcf211745060b2be26076174b1df19njntypedef struct {
82c616819253fcf211745060b2be26076174b1df19njn	unsigned long sig[_VKI_NSIG_WORDS];
83c616819253fcf211745060b2be26076174b1df19njn} vki_sigset_t;
84c616819253fcf211745060b2be26076174b1df19njn
85c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGHUP		 1
86c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGINT		 2
87c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGQUIT		 3
88c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGILL		 4
89c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGTRAP		 5
90c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGABRT		 6
91c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGBUS		 7
92c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGFPE		 8
93c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGKILL		 9
94c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGUSR1		10
95c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGSEGV		11
96c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGUSR2		12
97c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGPIPE		13
98c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGALRM		14
99c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGTERM		15
100c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGSTKFLT		16
101c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGCHLD		17
102c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGCONT		18
103c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGSTOP		19
104c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGTSTP		20
105c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGTTIN		21
106c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGTTOU		22
107c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGURG		23
108c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGXCPU		24
109c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGXFSZ		25
110c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGVTALRM		26
111c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGPROF		27
112c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGWINCH		28
113c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGIO		29
114c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGPWR		30
115c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGSYS		31
116c616819253fcf211745060b2be26076174b1df19njn#define	VKI_SIGUNUSED		31
117c616819253fcf211745060b2be26076174b1df19njn
118c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGRTMIN		32
119c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIGRTMAX		_VKI_NSIG
120c616819253fcf211745060b2be26076174b1df19njn
121c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_NOCLDSTOP	0x00000001
122c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_NOCLDWAIT	0x00000002
123c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_SIGINFO		0x00000004
124c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_ONSTACK		0x08000000
125c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_RESTART		0x10000000
126c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_NODEFER		0x40000000
127c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_RESETHAND	0x80000000
128c616819253fcf211745060b2be26076174b1df19njn
129c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_NOMASK	VKI_SA_NODEFER
130c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_ONESHOT	VKI_SA_RESETHAND
131c616819253fcf211745060b2be26076174b1df19njn
132c616819253fcf211745060b2be26076174b1df19njn#define VKI_SA_RESTORER	0x04000000
133c616819253fcf211745060b2be26076174b1df19njn
134c616819253fcf211745060b2be26076174b1df19njn#define VKI_SS_ONSTACK	1
135c616819253fcf211745060b2be26076174b1df19njn#define VKI_SS_DISABLE	2
136c616819253fcf211745060b2be26076174b1df19njn
137c616819253fcf211745060b2be26076174b1df19njn#define VKI_MINSIGSTKSZ	2048
138c616819253fcf211745060b2be26076174b1df19njn
139c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIG_BLOCK          0	/* for blocking signals */
140c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIG_UNBLOCK        1	/* for unblocking signals */
141c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIG_SETMASK        2	/* for setting the signal mask */
142c616819253fcf211745060b2be26076174b1df19njn
143c616819253fcf211745060b2be26076174b1df19njntypedef void __vki_signalfn_t(int);
144c616819253fcf211745060b2be26076174b1df19njntypedef __vki_signalfn_t __user *__vki_sighandler_t;
145c616819253fcf211745060b2be26076174b1df19njn
146c616819253fcf211745060b2be26076174b1df19njntypedef void __vki_restorefn_t(void);
147c616819253fcf211745060b2be26076174b1df19njntypedef __vki_restorefn_t __user *__vki_sigrestore_t;
148c616819253fcf211745060b2be26076174b1df19njn
149c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIG_DFL	((__vki_sighandler_t)0)	/* default signal handling */
150c616819253fcf211745060b2be26076174b1df19njn#define VKI_SIG_IGN	((__vki_sighandler_t)1)	/* ignore signal */
151c616819253fcf211745060b2be26076174b1df19njn
152cda2f0fbda4c4b2644babc830244be8aed95de1dnjnstruct vki_sigaction_base {
153c616819253fcf211745060b2be26076174b1df19njn        // [[Nb: a 'k' prefix is added to "sa_handler" because
154c616819253fcf211745060b2be26076174b1df19njn        // bits/sigaction.h (which gets dragged in somehow via signal.h)
155c616819253fcf211745060b2be26076174b1df19njn        // #defines it as something else.  Since that is done for glibc's
156c616819253fcf211745060b2be26076174b1df19njn        // purposes, which we don't care about here, we use our own name.]]
157c616819253fcf211745060b2be26076174b1df19njn	__vki_sighandler_t ksa_handler;
158c616819253fcf211745060b2be26076174b1df19njn	unsigned long sa_flags;
159c616819253fcf211745060b2be26076174b1df19njn	__vki_sigrestore_t sa_restorer;
160c616819253fcf211745060b2be26076174b1df19njn	vki_sigset_t sa_mask;		/* mask last for extensibility */
161c616819253fcf211745060b2be26076174b1df19njn};
162c616819253fcf211745060b2be26076174b1df19njn
163cda2f0fbda4c4b2644babc830244be8aed95de1dnjn/* On Linux we use the same type for passing sigactions to
164cda2f0fbda4c4b2644babc830244be8aed95de1dnjn   and from the kernel.  Hence: */
165cda2f0fbda4c4b2644babc830244be8aed95de1dnjntypedef  struct vki_sigaction_base  vki_sigaction_toK_t;
166cda2f0fbda4c4b2644babc830244be8aed95de1dnjntypedef  struct vki_sigaction_base  vki_sigaction_fromK_t;
167cda2f0fbda4c4b2644babc830244be8aed95de1dnjn
168cda2f0fbda4c4b2644babc830244be8aed95de1dnjn
169c616819253fcf211745060b2be26076174b1df19njntypedef struct vki_sigaltstack {
170c616819253fcf211745060b2be26076174b1df19njn	void __user *ss_sp;
171c616819253fcf211745060b2be26076174b1df19njn	int ss_flags;
172c616819253fcf211745060b2be26076174b1df19njn	vki_size_t ss_size;
173c616819253fcf211745060b2be26076174b1df19njn} vki_stack_t;
174c616819253fcf211745060b2be26076174b1df19njn
175c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
176c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/sigcontext.h
177c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
178c616819253fcf211745060b2be26076174b1df19njn
179c616819253fcf211745060b2be26076174b1df19njnstruct _vki_fpstate {
180c616819253fcf211745060b2be26076174b1df19njn	__vki_u16	cwd;
181c616819253fcf211745060b2be26076174b1df19njn	__vki_u16	swd;
182c616819253fcf211745060b2be26076174b1df19njn	__vki_u16	twd;	/* Note this is not the same as the 32bit/x87/FSAVE twd */
183c616819253fcf211745060b2be26076174b1df19njn	__vki_u16	fop;
184c616819253fcf211745060b2be26076174b1df19njn	__vki_u64	rip;
185c616819253fcf211745060b2be26076174b1df19njn	__vki_u64	rdp;
186c616819253fcf211745060b2be26076174b1df19njn	__vki_u32	mxcsr;
187c616819253fcf211745060b2be26076174b1df19njn	__vki_u32	mxcsr_mask;
188c616819253fcf211745060b2be26076174b1df19njn	__vki_u32	st_space[32];	/* 8*16 bytes for each FP-reg */
189c616819253fcf211745060b2be26076174b1df19njn	__vki_u32	xmm_space[64];	/* 16*16 bytes for each XMM-reg  */
190c616819253fcf211745060b2be26076174b1df19njn	__vki_u32	reserved2[24];
191c616819253fcf211745060b2be26076174b1df19njn};
192c616819253fcf211745060b2be26076174b1df19njn
193c616819253fcf211745060b2be26076174b1df19njnstruct vki_sigcontext {
194c616819253fcf211745060b2be26076174b1df19njn	unsigned long r8;
195c616819253fcf211745060b2be26076174b1df19njn	unsigned long r9;
196c616819253fcf211745060b2be26076174b1df19njn	unsigned long r10;
197c616819253fcf211745060b2be26076174b1df19njn	unsigned long r11;
198c616819253fcf211745060b2be26076174b1df19njn	unsigned long r12;
199c616819253fcf211745060b2be26076174b1df19njn	unsigned long r13;
200c616819253fcf211745060b2be26076174b1df19njn	unsigned long r14;
201c616819253fcf211745060b2be26076174b1df19njn	unsigned long r15;
202c616819253fcf211745060b2be26076174b1df19njn	unsigned long rdi;
203c616819253fcf211745060b2be26076174b1df19njn	unsigned long rsi;
204c616819253fcf211745060b2be26076174b1df19njn	unsigned long rbp;
205c616819253fcf211745060b2be26076174b1df19njn	unsigned long rbx;
206c616819253fcf211745060b2be26076174b1df19njn	unsigned long rdx;
207c616819253fcf211745060b2be26076174b1df19njn	unsigned long rax;
208c616819253fcf211745060b2be26076174b1df19njn	unsigned long rcx;
209c616819253fcf211745060b2be26076174b1df19njn	unsigned long rsp;
210c616819253fcf211745060b2be26076174b1df19njn	unsigned long rip;
211c616819253fcf211745060b2be26076174b1df19njn	unsigned long eflags;		/* RFLAGS */
212c616819253fcf211745060b2be26076174b1df19njn	unsigned short cs;
213c616819253fcf211745060b2be26076174b1df19njn	unsigned short gs;
214c616819253fcf211745060b2be26076174b1df19njn	unsigned short fs;
215c616819253fcf211745060b2be26076174b1df19njn	unsigned short __pad0;
216c616819253fcf211745060b2be26076174b1df19njn	unsigned long err;
217c616819253fcf211745060b2be26076174b1df19njn	unsigned long trapno;
218c616819253fcf211745060b2be26076174b1df19njn	unsigned long oldmask;
219c616819253fcf211745060b2be26076174b1df19njn	unsigned long cr2;
220c616819253fcf211745060b2be26076174b1df19njn	struct _vki_fpstate __user *fpstate;	/* zero when no FPU context */
221c616819253fcf211745060b2be26076174b1df19njn	unsigned long reserved1[8];
222c616819253fcf211745060b2be26076174b1df19njn};
223c616819253fcf211745060b2be26076174b1df19njn
224c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
225c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/mman.h
226c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
227c616819253fcf211745060b2be26076174b1df19njn
228c616819253fcf211745060b2be26076174b1df19njn#define VKI_PROT_READ	0x1		/* page can be read */
229c616819253fcf211745060b2be26076174b1df19njn#define VKI_PROT_WRITE	0x2		/* page can be written */
230c616819253fcf211745060b2be26076174b1df19njn#define VKI_PROT_EXEC	0x4		/* page can be executed */
2314d89e30888b71146076d043d523dc7256d923476sewardj#define VKI_PROT_NONE	0x0		/* page can not be accessed */
23265505193b8d9c8f36f3df6c5d6a8e1d475bb37cbtom#define VKI_PROT_GROWSDOWN	0x01000000	/* mprotect flag: extend change to start of growsdown vma */
23365505193b8d9c8f36f3df6c5d6a8e1d475bb37cbtom#define VKI_PROT_GROWSUP	0x02000000	/* mprotect flag: extend change to end of growsup vma */
234c616819253fcf211745060b2be26076174b1df19njn
235c616819253fcf211745060b2be26076174b1df19njn#define VKI_MAP_SHARED	0x01		/* Share changes */
236c616819253fcf211745060b2be26076174b1df19njn#define VKI_MAP_PRIVATE	0x02		/* Changes are private */
237c616819253fcf211745060b2be26076174b1df19njn#define VKI_MAP_FIXED	0x10		/* Interpret addr exactly */
238c616819253fcf211745060b2be26076174b1df19njn#define VKI_MAP_ANONYMOUS	0x20	/* don't use a file */
23980fe549a7e8ed88f20ba0ab11832c441b6151fc0sewardj#define VKI_MAP_32BIT	0x40		/* only give out 32bit addresses */
240d804ab84f8ad8e2c00b81d06e8f22f7220ed8ad6rjwalsh#define VKI_MAP_NORESERVE       0x4000  /* don't check for reservations */
241c616819253fcf211745060b2be26076174b1df19njn
242c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
243c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/fcntl.h
244c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
245c616819253fcf211745060b2be26076174b1df19njn
24691a16b78d3de85e68c5c5e2c13d2bf52d4676f5etom#define VKI_O_ACCMODE	     03
247c616819253fcf211745060b2be26076174b1df19njn#define VKI_O_RDONLY	     00
248c616819253fcf211745060b2be26076174b1df19njn#define VKI_O_WRONLY	     01
24945f4e7c91119c7d01a59f5e827c67841632c9314sewardj#define VKI_O_RDWR	     02
250c616819253fcf211745060b2be26076174b1df19njn#define VKI_O_CREAT	   0100	/* not fcntl */
251c616819253fcf211745060b2be26076174b1df19njn#define VKI_O_EXCL	   0200	/* not fcntl */
252c616819253fcf211745060b2be26076174b1df19njn#define VKI_O_TRUNC	  01000	/* not fcntl */
253c616819253fcf211745060b2be26076174b1df19njn#define VKI_O_APPEND	  02000
254c616819253fcf211745060b2be26076174b1df19njn#define VKI_O_NONBLOCK	  04000
25528d2e641964eb9342ff012e2314e22b2094606c0njn#define VKI_O_LARGEFILE	0100000
256c616819253fcf211745060b2be26076174b1df19njn
257c9d66c0debd4d9d7882fd7ba874a37429bbcc170dirk#define VKI_AT_FDCWD            -100
258c9d66c0debd4d9d7882fd7ba874a37429bbcc170dirk
259c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_DUPFD		0	/* dup */
260c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_GETFD		1	/* get close_on_exec */
261c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_SETFD		2	/* set/clear close_on_exec */
262c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_GETFL		3	/* get file->f_flags */
263c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_SETFL		4	/* set file->f_flags */
264c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_GETLK		5
265c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_SETLK		6
266c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_SETLKW		7
267c616819253fcf211745060b2be26076174b1df19njn
268c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_SETOWN		8	/*  for sockets. */
269c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_GETOWN		9	/*  for sockets. */
270c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_SETSIG		10	/*  for sockets. */
271c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_GETSIG		11	/*  for sockets. */
272c616819253fcf211745060b2be26076174b1df19njn
273835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_SETOWN_EX		15
274835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_GETOWN_EX		16
275835a714e35b6ce920b1abbd338547fa0b4a7601etom
276f77df946e65783c2bc727807e508fa1af04f0da8tom#define VKI_F_OFD_GETLK		36
277f77df946e65783c2bc727807e508fa1af04f0da8tom#define VKI_F_OFD_SETLK		37
278f77df946e65783c2bc727807e508fa1af04f0da8tom#define VKI_F_OFD_SETLKW	38
279f77df946e65783c2bc727807e508fa1af04f0da8tom
280835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_OWNER_TID		0
281835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_OWNER_PID		1
282835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_OWNER_PGRP	2
283835a714e35b6ce920b1abbd338547fa0b4a7601etom
284835a714e35b6ce920b1abbd338547fa0b4a7601etomstruct vki_f_owner_ex {
285835a714e35b6ce920b1abbd338547fa0b4a7601etom	int	type;
286835a714e35b6ce920b1abbd338547fa0b4a7601etom	__vki_kernel_pid_t	pid;
287835a714e35b6ce920b1abbd338547fa0b4a7601etom};
288835a714e35b6ce920b1abbd338547fa0b4a7601etom
289c616819253fcf211745060b2be26076174b1df19njn#define VKI_FD_CLOEXEC	1	/* actually anything with low bit set goes */
290c616819253fcf211745060b2be26076174b1df19njn
291c616819253fcf211745060b2be26076174b1df19njn#define VKI_F_LINUX_SPECIFIC_BASE	1024
292c616819253fcf211745060b2be26076174b1df19njn
293c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
294c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/resource.h
295c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
296c616819253fcf211745060b2be26076174b1df19njn
297c616819253fcf211745060b2be26076174b1df19njn#define VKI_RLIMIT_DATA		2	/* max data size */
298c616819253fcf211745060b2be26076174b1df19njn#define VKI_RLIMIT_STACK	3	/* max stack size */
299c616819253fcf211745060b2be26076174b1df19njn#define VKI_RLIMIT_CORE		4	/* max core file size */
300c616819253fcf211745060b2be26076174b1df19njn#define VKI_RLIMIT_NOFILE	7	/* max number of open files */
301c616819253fcf211745060b2be26076174b1df19njn
302c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
303c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/socket.h
304c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
305c616819253fcf211745060b2be26076174b1df19njn
306c616819253fcf211745060b2be26076174b1df19njn#define VKI_SOL_SOCKET	1
307c616819253fcf211745060b2be26076174b1df19njn
308c616819253fcf211745060b2be26076174b1df19njn#define VKI_SO_TYPE	3
309c616819253fcf211745060b2be26076174b1df19njn
3108f420f1a5d392c461def7e5578d84fc39029dbc6tom#define VKI_SO_ATTACH_FILTER	26
3118f420f1a5d392c461def7e5578d84fc39029dbc6tom
312c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
313c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/sockios.h
314c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
315c616819253fcf211745060b2be26076174b1df19njn
316a2ec4f53cfbf020c69aa8faae53a1435b29a55f2tom#define VKI_SIOCSPGRP		0x8902
317a2ec4f53cfbf020c69aa8faae53a1435b29a55f2tom#define VKI_SIOCGPGRP		0x8904
3184f17e600c7f0a697a964eb7083627b6d759401b6tom#define VKI_SIOCATMARK		0x8905
319a2ec4f53cfbf020c69aa8faae53a1435b29a55f2tom#define VKI_SIOCGSTAMP		0x8906		/* Get stamp (timeval) */
320a2ec4f53cfbf020c69aa8faae53a1435b29a55f2tom#define VKI_SIOCGSTAMPNS	0x8907		/* Get stamp (timespec) */
321c616819253fcf211745060b2be26076174b1df19njn
322c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
323c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/stat.h
324c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
325c616819253fcf211745060b2be26076174b1df19njn
326c616819253fcf211745060b2be26076174b1df19njnstruct vki_stat {
327c616819253fcf211745060b2be26076174b1df19njn	unsigned long	st_dev;
328c616819253fcf211745060b2be26076174b1df19njn	unsigned long	st_ino;
329c616819253fcf211745060b2be26076174b1df19njn	unsigned long	st_nlink;
330c616819253fcf211745060b2be26076174b1df19njn
331c616819253fcf211745060b2be26076174b1df19njn	unsigned int	st_mode;
332c616819253fcf211745060b2be26076174b1df19njn	unsigned int	st_uid;
333c616819253fcf211745060b2be26076174b1df19njn	unsigned int	st_gid;
334c616819253fcf211745060b2be26076174b1df19njn	unsigned int	__pad0;
335c616819253fcf211745060b2be26076174b1df19njn	unsigned long	st_rdev;
336c616819253fcf211745060b2be26076174b1df19njn	long		st_size;
337c616819253fcf211745060b2be26076174b1df19njn	long		st_blksize;
338c616819253fcf211745060b2be26076174b1df19njn	long		st_blocks;	/* Number 512-byte blocks allocated. */
339c616819253fcf211745060b2be26076174b1df19njn
340c616819253fcf211745060b2be26076174b1df19njn	unsigned long	st_atime;
341c616819253fcf211745060b2be26076174b1df19njn	unsigned long 	st_atime_nsec;
342c616819253fcf211745060b2be26076174b1df19njn	unsigned long	st_mtime;
343c616819253fcf211745060b2be26076174b1df19njn	unsigned long	st_mtime_nsec;
344c616819253fcf211745060b2be26076174b1df19njn	unsigned long	st_ctime;
345c616819253fcf211745060b2be26076174b1df19njn	unsigned long   st_ctime_nsec;
3467b634085c095fbb2c9d2c2470d81aa3bd684a115sewardj  	long		__unused0[3];
347c616819253fcf211745060b2be26076174b1df19njn};
348c616819253fcf211745060b2be26076174b1df19njn
349c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
350c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/statfs.h
351c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
352c616819253fcf211745060b2be26076174b1df19njn
353c616819253fcf211745060b2be26076174b1df19njnstruct vki_statfs {
354c616819253fcf211745060b2be26076174b1df19njn	long f_type;
355c616819253fcf211745060b2be26076174b1df19njn	long f_bsize;
356c616819253fcf211745060b2be26076174b1df19njn	long f_blocks;
357c616819253fcf211745060b2be26076174b1df19njn	long f_bfree;
358c616819253fcf211745060b2be26076174b1df19njn	long f_bavail;
359c616819253fcf211745060b2be26076174b1df19njn	long f_files;
360c616819253fcf211745060b2be26076174b1df19njn	long f_ffree;
361c616819253fcf211745060b2be26076174b1df19njn	__vki_kernel_fsid_t f_fsid;
362c616819253fcf211745060b2be26076174b1df19njn	long f_namelen;
363c616819253fcf211745060b2be26076174b1df19njn	long f_frsize;
364c616819253fcf211745060b2be26076174b1df19njn	long f_spare[5];
365c616819253fcf211745060b2be26076174b1df19njn};
366c616819253fcf211745060b2be26076174b1df19njn
367c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
368c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/termios.h
369c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
370c616819253fcf211745060b2be26076174b1df19njn
371c616819253fcf211745060b2be26076174b1df19njnstruct vki_winsize {
372c616819253fcf211745060b2be26076174b1df19njn	unsigned short ws_row;
373c616819253fcf211745060b2be26076174b1df19njn	unsigned short ws_col;
374c616819253fcf211745060b2be26076174b1df19njn	unsigned short ws_xpixel;
375c616819253fcf211745060b2be26076174b1df19njn	unsigned short ws_ypixel;
376c616819253fcf211745060b2be26076174b1df19njn};
377c616819253fcf211745060b2be26076174b1df19njn
378c616819253fcf211745060b2be26076174b1df19njn#define VKI_NCC 8
379c616819253fcf211745060b2be26076174b1df19njnstruct vki_termio {
380c616819253fcf211745060b2be26076174b1df19njn	unsigned short c_iflag;		/* input mode flags */
381c616819253fcf211745060b2be26076174b1df19njn	unsigned short c_oflag;		/* output mode flags */
382c616819253fcf211745060b2be26076174b1df19njn	unsigned short c_cflag;		/* control mode flags */
383c616819253fcf211745060b2be26076174b1df19njn	unsigned short c_lflag;		/* local mode flags */
384c616819253fcf211745060b2be26076174b1df19njn	unsigned char c_line;		/* line discipline */
385c616819253fcf211745060b2be26076174b1df19njn	unsigned char c_cc[VKI_NCC];	/* control characters */
386c616819253fcf211745060b2be26076174b1df19njn};
387c616819253fcf211745060b2be26076174b1df19njn
388c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
389c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/termbits.h
390c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
391c616819253fcf211745060b2be26076174b1df19njn
392c616819253fcf211745060b2be26076174b1df19njntypedef unsigned char	vki_cc_t;
393c616819253fcf211745060b2be26076174b1df19njntypedef unsigned int	vki_tcflag_t;
394c616819253fcf211745060b2be26076174b1df19njn
395c616819253fcf211745060b2be26076174b1df19njn#define VKI_NCCS 19
396c616819253fcf211745060b2be26076174b1df19njnstruct vki_termios {
397c616819253fcf211745060b2be26076174b1df19njn	vki_tcflag_t c_iflag;		/* input mode flags */
398c616819253fcf211745060b2be26076174b1df19njn	vki_tcflag_t c_oflag;		/* output mode flags */
399c616819253fcf211745060b2be26076174b1df19njn	vki_tcflag_t c_cflag;		/* control mode flags */
400c616819253fcf211745060b2be26076174b1df19njn	vki_tcflag_t c_lflag;		/* local mode flags */
401c616819253fcf211745060b2be26076174b1df19njn	vki_cc_t c_line;		/* line discipline */
402c616819253fcf211745060b2be26076174b1df19njn	vki_cc_t c_cc[VKI_NCCS];	/* control characters */
403c616819253fcf211745060b2be26076174b1df19njn};
404c616819253fcf211745060b2be26076174b1df19njn
405c616819253fcf211745060b2be26076174b1df19njn
406c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
407c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/ioctl.h
408c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
409c616819253fcf211745060b2be26076174b1df19njn
410c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_NRBITS		8
411c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_TYPEBITS	8
412c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_SIZEBITS	14
413c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_DIRBITS	2
414c616819253fcf211745060b2be26076174b1df19njn
415c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_SIZEMASK	((1 << _VKI_IOC_SIZEBITS)-1)
416c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_DIRMASK	((1 << _VKI_IOC_DIRBITS)-1)
417c616819253fcf211745060b2be26076174b1df19njn
418c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_NRSHIFT	0
419c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_TYPESHIFT	(_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
420c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_SIZESHIFT	(_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
421c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_DIRSHIFT	(_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
422c616819253fcf211745060b2be26076174b1df19njn
423c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_NONE	0U
424c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_WRITE	1U
425c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_READ	2U
426c616819253fcf211745060b2be26076174b1df19njn
427c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC(dir,type,nr,size) \
428c616819253fcf211745060b2be26076174b1df19njn	(((dir)  << _VKI_IOC_DIRSHIFT) | \
429c616819253fcf211745060b2be26076174b1df19njn	 ((type) << _VKI_IOC_TYPESHIFT) | \
430c616819253fcf211745060b2be26076174b1df19njn	 ((nr)   << _VKI_IOC_NRSHIFT) | \
431c616819253fcf211745060b2be26076174b1df19njn	 ((size) << _VKI_IOC_SIZESHIFT))
432c616819253fcf211745060b2be26076174b1df19njn
433c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IO(type,nr)		_VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
434c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size))
435c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOW(type,nr,size)	_VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size))
436c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOWR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size))
437c616819253fcf211745060b2be26076174b1df19njn
438c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_DIR(nr)		(((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
439c616819253fcf211745060b2be26076174b1df19njn#define _VKI_IOC_SIZE(nr)		(((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
440c616819253fcf211745060b2be26076174b1df19njn
441c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
442c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/ioctls.h
443c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
444c616819253fcf211745060b2be26076174b1df19njn
445c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCGETS	0x5401
446c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCSETS	0x5402
447c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCSETSW	0x5403
448c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCSETSF	0x5404
449c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCGETA	0x5405
450c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCSETA	0x5406
451c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCSETAW	0x5407
452c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCSETAF	0x5408
453c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCSBRK	0x5409
454c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCXONC	0x540A
455c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCFLSH	0x540B
456c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCSCTTY	0x540E
457c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCGPGRP	0x540F
458c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCSPGRP	0x5410
459c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCOUTQ	0x5411
460c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCGWINSZ	0x5413
461c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCSWINSZ	0x5414
46262ba758224e7e1289b0f9be52bcbcf73e36630a4tom#define VKI_TIOCMGET	0x5415
463c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCMBIS	0x5416
464c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCMBIC	0x5417
465c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCMSET	0x5418
466c616819253fcf211745060b2be26076174b1df19njn#define VKI_FIONREAD	0x541B
467c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCLINUX	0x541C
468c616819253fcf211745060b2be26076174b1df19njn#define VKI_FIONBIO	0x5421
4694efdae1b2143692687d1e062ac336255898e7359tom#define VKI_TIOCNOTTY	0x5422
470c616819253fcf211745060b2be26076174b1df19njn#define VKI_TCSBRKP	0x5425	/* Needed for POSIX tcsendbreak() */
471c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCGPTN	_VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
472c616819253fcf211745060b2be26076174b1df19njn#define VKI_TIOCSPTLCK	_VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
473c616819253fcf211745060b2be26076174b1df19njn
474a52c83526a1bb0a4e3223e56ddb096258fc5e422tom#define VKI_FIONCLEX    0x5450
475a52c83526a1bb0a4e3223e56ddb096258fc5e422tom#define VKI_FIOCLEX     0x5451
476c616819253fcf211745060b2be26076174b1df19njn#define VKI_FIOASYNC	0x5452
4771b96ee6f6268af4e6eb3b47ab19313c497591ee2tom#define VKI_TIOCSERGETLSR   0x5459 /* Get line status register */
4785d2af674214d1f7b9abda9b178775c69dc4f7c7dtom
4791ecb5409ee53a7c085fdbb744108e39dc4df6c70tom#define VKI_TIOCGICOUNT	0x545D	/* read serial port inline interrupt counts */
480c616819253fcf211745060b2be26076174b1df19njn
481c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
482c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/poll.h
483c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
484c616819253fcf211745060b2be26076174b1df19njn
485c616819253fcf211745060b2be26076174b1df19njn#define VKI_POLLIN		0x0001
486c616819253fcf211745060b2be26076174b1df19njn
487c616819253fcf211745060b2be26076174b1df19njnstruct vki_pollfd {
488c616819253fcf211745060b2be26076174b1df19njn	int fd;
489c616819253fcf211745060b2be26076174b1df19njn	short events;
490c616819253fcf211745060b2be26076174b1df19njn	short revents;
491c616819253fcf211745060b2be26076174b1df19njn};
492c616819253fcf211745060b2be26076174b1df19njn
493c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
494c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/user.h
495c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
496c616819253fcf211745060b2be26076174b1df19njn
4972af58f27aa3d05dfd31613c9c61971cb7879c94atomstruct vki_user_i387_struct {
4982af58f27aa3d05dfd31613c9c61971cb7879c94atom	unsigned short	cwd;
4992af58f27aa3d05dfd31613c9c61971cb7879c94atom	unsigned short	swd;
5002af58f27aa3d05dfd31613c9c61971cb7879c94atom	unsigned short	twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */
5012af58f27aa3d05dfd31613c9c61971cb7879c94atom	unsigned short	fop;
5022af58f27aa3d05dfd31613c9c61971cb7879c94atom	__vki_u64	rip;
5032af58f27aa3d05dfd31613c9c61971cb7879c94atom	__vki_u64	rdp;
5042af58f27aa3d05dfd31613c9c61971cb7879c94atom	__vki_u32	mxcsr;
5052af58f27aa3d05dfd31613c9c61971cb7879c94atom	__vki_u32	mxcsr_mask;
5062af58f27aa3d05dfd31613c9c61971cb7879c94atom	__vki_u32	st_space[32];	/* 8*16 bytes for each FP-reg = 128 bytes */
5072af58f27aa3d05dfd31613c9c61971cb7879c94atom	__vki_u32	xmm_space[64];	/* 16*16 bytes for each XMM-reg = 256 bytes */
5082af58f27aa3d05dfd31613c9c61971cb7879c94atom	__vki_u32	padding[24];
5092af58f27aa3d05dfd31613c9c61971cb7879c94atom};
5102af58f27aa3d05dfd31613c9c61971cb7879c94atom
511c616819253fcf211745060b2be26076174b1df19njnstruct vki_user_regs_struct {
512c616819253fcf211745060b2be26076174b1df19njn	unsigned long r15,r14,r13,r12,rbp,rbx,r11,r10;
513c616819253fcf211745060b2be26076174b1df19njn	unsigned long r9,r8,rax,rcx,rdx,rsi,rdi,orig_rax;
514c616819253fcf211745060b2be26076174b1df19njn	unsigned long rip,cs,eflags;
515c616819253fcf211745060b2be26076174b1df19njn	unsigned long rsp,ss;
516c616819253fcf211745060b2be26076174b1df19njn  	unsigned long fs_base, gs_base;
517c616819253fcf211745060b2be26076174b1df19njn	unsigned long ds,es,fs,gs;
518c616819253fcf211745060b2be26076174b1df19njn};
519c616819253fcf211745060b2be26076174b1df19njn
520c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
521c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/elf.h
522c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
523c616819253fcf211745060b2be26076174b1df19njn
524c616819253fcf211745060b2be26076174b1df19njntypedef unsigned long vki_elf_greg_t;
525c616819253fcf211745060b2be26076174b1df19njn
526c616819253fcf211745060b2be26076174b1df19njn#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t))
527c616819253fcf211745060b2be26076174b1df19njntypedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG];
528c616819253fcf211745060b2be26076174b1df19njn
529f4c231081a5c8ff6f24b3fa1980349199f1d9ea3tomtypedef struct vki_user_i387_struct vki_elf_fpregset_t;
530f4c231081a5c8ff6f24b3fa1980349199f1d9ea3tom
531c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
532c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/ucontext.h
533c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
534c616819253fcf211745060b2be26076174b1df19njn
535c616819253fcf211745060b2be26076174b1df19njnstruct vki_ucontext {
536c616819253fcf211745060b2be26076174b1df19njn	unsigned long		uc_flags;
537c616819253fcf211745060b2be26076174b1df19njn	struct vki_ucontext    *uc_link;
538c616819253fcf211745060b2be26076174b1df19njn	vki_stack_t		uc_stack;
539c616819253fcf211745060b2be26076174b1df19njn	struct vki_sigcontext	uc_mcontext;
540c616819253fcf211745060b2be26076174b1df19njn	vki_sigset_t		uc_sigmask;	/* mask last for extensibility */
541c616819253fcf211745060b2be26076174b1df19njn};
542c616819253fcf211745060b2be26076174b1df19njn
543c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
544c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/segment.h
545c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
546c616819253fcf211745060b2be26076174b1df19njn
547c616819253fcf211745060b2be26076174b1df19njn#define VKI_GDT_ENTRY_TLS_ENTRIES 3
548c616819253fcf211745060b2be26076174b1df19njn
549c616819253fcf211745060b2be26076174b1df19njn#define VKI_GDT_ENTRY_TLS_MIN 11
550c616819253fcf211745060b2be26076174b1df19njn#define VKI_GDT_ENTRY_TLS_MAX 13
551c616819253fcf211745060b2be26076174b1df19njn
552f5e7ee23263aa27fec5530e0085815d0f8422fa4tom//----------------------------------------------------------------------
553f5e7ee23263aa27fec5530e0085815d0f8422fa4tom// From linux-2.6.11.9/include/asm-x86_64/prctl.h
554f5e7ee23263aa27fec5530e0085815d0f8422fa4tom//----------------------------------------------------------------------
555f5e7ee23263aa27fec5530e0085815d0f8422fa4tom
556f25e902044fbf9e53359ce2bbb0628d0eb36cfcdsewardj#define VKI_ARCH_SET_GS 0x1001
557f25e902044fbf9e53359ce2bbb0628d0eb36cfcdsewardj#define VKI_ARCH_SET_FS 0x1002
558f25e902044fbf9e53359ce2bbb0628d0eb36cfcdsewardj#define VKI_ARCH_GET_FS 0x1003
559f25e902044fbf9e53359ce2bbb0628d0eb36cfcdsewardj#define VKI_ARCH_GET_GS 0x1004
560f25e902044fbf9e53359ce2bbb0628d0eb36cfcdsewardj
561c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
562c616819253fcf211745060b2be26076174b1df19njn// From linux-2.6.9/include/asm-x86_64/ldt.h
563c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
564c616819253fcf211745060b2be26076174b1df19njn
565c616819253fcf211745060b2be26076174b1df19njn// I think this LDT stuff will have to be reinstated for amd64, but I'm not
566a22a93aabc41f7fcd528aafc2e7f52c0b7084be6njn// certain.  (Nb: The sys_arch_prctl seems to have replaced
567a22a93aabc41f7fcd528aafc2e7f52c0b7084be6njn// [gs]et_thread_area syscalls.)
568a22a93aabc41f7fcd528aafc2e7f52c0b7084be6njn//
569a22a93aabc41f7fcd528aafc2e7f52c0b7084be6njn// Note that the type here is very slightly different to the
570c616819253fcf211745060b2be26076174b1df19njn// type for x86 (the final 'lm' field is added);  I'm not sure about the
571c616819253fcf211745060b2be26076174b1df19njn// significance of that... --njn
572c616819253fcf211745060b2be26076174b1df19njn
573c616819253fcf211745060b2be26076174b1df19njn/* [[Nb: This is the structure passed to the modify_ldt syscall.  Just so as
574c616819253fcf211745060b2be26076174b1df19njn   to confuse and annoy everyone, this is _not_ the same as an
575c616819253fcf211745060b2be26076174b1df19njn   VgLdtEntry and has to be translated into such.  The logic for doing
576c616819253fcf211745060b2be26076174b1df19njn   so, in vg_ldt.c, is copied from the kernel sources.]] */
5773f59faacb471e03f4434f89436888f10592b546aphilippe/* Note also that a comment in ldt.h indicates that the below
5783f59faacb471e03f4434f89436888f10592b546aphilippe   contains several fields ignored on 64bit, and that modify_ldt
5793f59faacb471e03f4434f89436888f10592b546aphilippe   is rather for 32bit. */
580c616819253fcf211745060b2be26076174b1df19njnstruct vki_user_desc {
581c616819253fcf211745060b2be26076174b1df19njn	unsigned int  entry_number;
582c616819253fcf211745060b2be26076174b1df19njn	unsigned long base_addr;
583c616819253fcf211745060b2be26076174b1df19njn	unsigned int  limit;
584c616819253fcf211745060b2be26076174b1df19njn	unsigned int  seg_32bit:1;
585c616819253fcf211745060b2be26076174b1df19njn	unsigned int  contents:2;
586c616819253fcf211745060b2be26076174b1df19njn	unsigned int  read_exec_only:1;
587c616819253fcf211745060b2be26076174b1df19njn	unsigned int  limit_in_pages:1;
588c616819253fcf211745060b2be26076174b1df19njn	unsigned int  seg_not_present:1;
589c616819253fcf211745060b2be26076174b1df19njn	unsigned int  useable:1;
590c616819253fcf211745060b2be26076174b1df19njn        unsigned int  lm:1;
591c616819253fcf211745060b2be26076174b1df19njn};
592c616819253fcf211745060b2be26076174b1df19njn
593c616819253fcf211745060b2be26076174b1df19njn// [[Nb: for our convenience within Valgrind, use a more specific name]]
594c616819253fcf211745060b2be26076174b1df19njntypedef struct vki_user_desc vki_modify_ldt_t;
5954d89e30888b71146076d043d523dc7256d923476sewardj
596c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
597b369c5e35c69997f9bc5798f476108da59876cfcsewardj// From linux-2.6.11.2/include/asm-x86_64/ipcbuf.h
598b369c5e35c69997f9bc5798f476108da59876cfcsewardj//----------------------------------------------------------------------
599b369c5e35c69997f9bc5798f476108da59876cfcsewardj
600b369c5e35c69997f9bc5798f476108da59876cfcsewardjstruct vki_ipc64_perm
601b369c5e35c69997f9bc5798f476108da59876cfcsewardj{
602b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_key_t	key;
603b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_uid32_t	uid;
604b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_gid32_t	gid;
605b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_uid32_t	cuid;
606b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_gid32_t	cgid;
607b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_mode_t	mode;
608b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned short		__pad1;
609b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned short		seq;
610b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned short		__pad2;
611b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long		__unused1;
612b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long		__unused2;
613b369c5e35c69997f9bc5798f476108da59876cfcsewardj};
614b369c5e35c69997f9bc5798f476108da59876cfcsewardj
615b369c5e35c69997f9bc5798f476108da59876cfcsewardj//----------------------------------------------------------------------
616b369c5e35c69997f9bc5798f476108da59876cfcsewardj// From linux-2.6.11.2/include/asm-x86_64/sembuf.h
617b369c5e35c69997f9bc5798f476108da59876cfcsewardj//----------------------------------------------------------------------
618b369c5e35c69997f9bc5798f476108da59876cfcsewardj
619b369c5e35c69997f9bc5798f476108da59876cfcsewardjstruct vki_semid64_ds {
620b369c5e35c69997f9bc5798f476108da59876cfcsewardj	struct vki_ipc64_perm sem_perm;		/* permissions .. see ipc.h */
621b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_time_t	sem_otime;		/* last semop time */
622b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	__unused1;
623b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_time_t	sem_ctime;		/* last change time */
624b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	__unused2;
625b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	sem_nsems;		/* no. of semaphores in array */
626b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	__unused3;
627b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	__unused4;
628b369c5e35c69997f9bc5798f476108da59876cfcsewardj};
629b369c5e35c69997f9bc5798f476108da59876cfcsewardj
630b369c5e35c69997f9bc5798f476108da59876cfcsewardj//----------------------------------------------------------------------
631b369c5e35c69997f9bc5798f476108da59876cfcsewardj// From linux-2.6.11.2/include/asm-x86_64/msgbuf.h
632b369c5e35c69997f9bc5798f476108da59876cfcsewardj//----------------------------------------------------------------------
633b369c5e35c69997f9bc5798f476108da59876cfcsewardj
634b369c5e35c69997f9bc5798f476108da59876cfcsewardjstruct vki_msqid64_ds {
635b369c5e35c69997f9bc5798f476108da59876cfcsewardj	struct vki_ipc64_perm msg_perm;
636b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_time_t msg_stime;	/* last msgsnd time */
637b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_time_t msg_rtime;	/* last msgrcv time */
638b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_time_t msg_ctime;	/* last change time */
639b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long  msg_cbytes;	/* current number of bytes on queue */
640b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long  msg_qnum;	/* number of messages in queue */
641b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long  msg_qbytes;	/* max number of bytes on queue */
642b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_pid_t msg_lspid;	/* pid of last msgsnd */
643b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_pid_t msg_lrpid;	/* last receive pid */
644b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long  __unused4;
645b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long  __unused5;
646b369c5e35c69997f9bc5798f476108da59876cfcsewardj};
647b369c5e35c69997f9bc5798f476108da59876cfcsewardj
648b369c5e35c69997f9bc5798f476108da59876cfcsewardj//----------------------------------------------------------------------
649b369c5e35c69997f9bc5798f476108da59876cfcsewardj// From linux-2.6.11.2/include/asm-x86_64/shmbuf.h
650b369c5e35c69997f9bc5798f476108da59876cfcsewardj//----------------------------------------------------------------------
651b369c5e35c69997f9bc5798f476108da59876cfcsewardj
652b369c5e35c69997f9bc5798f476108da59876cfcsewardjstruct vki_shmid64_ds {
653b369c5e35c69997f9bc5798f476108da59876cfcsewardj	struct vki_ipc64_perm	shm_perm;	/* operation perms */
654b369c5e35c69997f9bc5798f476108da59876cfcsewardj	vki_size_t		shm_segsz;	/* size of segment (bytes) */
655b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_time_t	shm_atime;	/* last attach time */
656b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_time_t	shm_dtime;	/* last detach time */
657b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_time_t	shm_ctime;	/* last change time */
658b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_pid_t	shm_cpid;	/* pid of creator */
659b369c5e35c69997f9bc5798f476108da59876cfcsewardj	__vki_kernel_pid_t	shm_lpid;	/* pid of last operator */
660b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long		shm_nattch;	/* no. of current attaches */
661b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long		__unused4;
662b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long		__unused5;
663b369c5e35c69997f9bc5798f476108da59876cfcsewardj};
664b369c5e35c69997f9bc5798f476108da59876cfcsewardj
665b369c5e35c69997f9bc5798f476108da59876cfcsewardjstruct vki_shminfo64 {
666b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	shmmax;
667b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	shmmin;
668b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	shmmni;
669b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	shmseg;
670b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	shmall;
671b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	__unused1;
672b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	__unused2;
673b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	__unused3;
674b369c5e35c69997f9bc5798f476108da59876cfcsewardj	unsigned long	__unused4;
675b369c5e35c69997f9bc5798f476108da59876cfcsewardj};
676b369c5e35c69997f9bc5798f476108da59876cfcsewardj
677b369c5e35c69997f9bc5798f476108da59876cfcsewardj//----------------------------------------------------------------------
6782af58f27aa3d05dfd31613c9c61971cb7879c94atom// From linux-2.6.12.2/include/asm-x86_64/ptrace.h
6792af58f27aa3d05dfd31613c9c61971cb7879c94atom//----------------------------------------------------------------------
6802af58f27aa3d05dfd31613c9c61971cb7879c94atom
6812af58f27aa3d05dfd31613c9c61971cb7879c94atom#define VKI_PTRACE_GETREGS            12
6822af58f27aa3d05dfd31613c9c61971cb7879c94atom#define VKI_PTRACE_SETREGS            13
6832af58f27aa3d05dfd31613c9c61971cb7879c94atom#define VKI_PTRACE_GETFPREGS          14
6842af58f27aa3d05dfd31613c9c61971cb7879c94atom#define VKI_PTRACE_SETFPREGS          15
6852af58f27aa3d05dfd31613c9c61971cb7879c94atom
6862af58f27aa3d05dfd31613c9c61971cb7879c94atom//----------------------------------------------------------------------
6870c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj// From linux-2.6.8.1/include/asm-generic/errno.h
6880c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj//----------------------------------------------------------------------
6890c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj
6900c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj#define	VKI_ENOSYS       38  /* Function not implemented */
6910c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj#define	VKI_EOVERFLOW    75  /* Value too large for defined data type */
6920c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj
6930c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj//----------------------------------------------------------------------
69455895379b090d4db5d39013e1a9859714ac3e0d8sewardj// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
69555895379b090d4db5d39013e1a9859714ac3e0d8sewardj//----------------------------------------------------------------------
69655895379b090d4db5d39013e1a9859714ac3e0d8sewardj
69755895379b090d4db5d39013e1a9859714ac3e0d8sewardj#define VKI_TIOCGSERIAL     0x541E
69855895379b090d4db5d39013e1a9859714ac3e0d8sewardj#define VKI_TIOCSSERIAL     0x541F
69955895379b090d4db5d39013e1a9859714ac3e0d8sewardj
70055895379b090d4db5d39013e1a9859714ac3e0d8sewardj//----------------------------------------------------------------------
701c616819253fcf211745060b2be26076174b1df19njn// And that's it!
702c616819253fcf211745060b2be26076174b1df19njn//----------------------------------------------------------------------
703c616819253fcf211745060b2be26076174b1df19njn
7044de47b1c9bfe84ddd76a9e71e486c5085c51e3a8njn#endif // __VKI_AMD64_LINUX_H
705c616819253fcf211745060b2be26076174b1df19njn
706c616819253fcf211745060b2be26076174b1df19njn/*--------------------------------------------------------------------*/
707c616819253fcf211745060b2be26076174b1df19njn/*--- end                                                          ---*/
708c616819253fcf211745060b2be26076174b1df19njn/*--------------------------------------------------------------------*/
709