1112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
2112711afefcfcd43680c7c4aa8d38ef180e8811esewardj/*--------------------------------------------------------------------*/
3112711afefcfcd43680c7c4aa8d38ef180e8811esewardj/*--- TILEGX/Linux-specific kernel interface.   vki-tilegx-linux.h ---*/
4112711afefcfcd43680c7c4aa8d38ef180e8811esewardj/*--------------------------------------------------------------------*/
5112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
6112711afefcfcd43680c7c4aa8d38ef180e8811esewardj/*
7112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  This file is part of Valgrind, a dynamic binary instrumentation
8112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  framework.
9112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
10b3a1e4bffbdbbf38304f216af405009868f43628sewardj  Copyright (C) 2010-2015 Tilera Corp.
11112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
12112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  This program is free software; you can redistribute it and/or
13112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  modify it under the terms of the GNU General Public License as
14112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  published by the Free Software Foundation; either version 2 of the
15112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  License, or (at your option) any later version.
16112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
17112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  This program is distributed in the hope that it will be useful, but
18112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  WITHOUT ANY WARRANTY; without even the implied warranty of
19112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  General Public License for more details.
21112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
22112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  You should have received a copy of the GNU General Public License
23112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  along with this program; if not, write to the Free Software
24112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
25112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  02111-1307, USA.
26112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
27112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  The GNU General Public License is contained in the file COPYING.
28112711afefcfcd43680c7c4aa8d38ef180e8811esewardj*/
29112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
30112711afefcfcd43680c7c4aa8d38ef180e8811esewardj/* Contributed by Zhi-Gang Liu <zliu at tilera dot com> */
31112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
32112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#ifndef __VKI_TILEGX_LINUX_H
33112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define __VKI_TILEGX_LINUX_H
34112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
35112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// TILEGX is little-endian.
36112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_LITTLE_ENDIAN  1
37112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
38112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
39112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm-generic/types.h
40112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
41112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
42112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned char __vki_u8;
43112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
44112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef __signed__ short __vki_s16;
45112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned short __vki_u16;
46112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
47112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef __signed__ int __vki_s32;
48112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned int __vki_u32;
49112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
50112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef __signed__ long long __vki_s64;
51112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned long long __vki_u64;
52112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
53112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned short vki_u16;
54112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
55112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned int vki_u32;
56112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
57112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
58112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/page.h
59112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
60112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
61112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PAGE_SHIFT       16
62112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PAGE_SIZE       (1UL << VKI_PAGE_SHIFT)
63112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_MAX_PAGE_SHIFT       VKI_PAGE_SHIFT
64112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_MAX_PAGE_SIZE       VKI_PAGE_SIZE
65112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
66112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
67112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From linux/include/asm/shmparam.h
68112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
69112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
70112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SHMLBA  VKI_PAGE_SIZE
71112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
72112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
73112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/signal.h
74112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
75112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
76112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_NSIG       64
77112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_NSIG_BPW       64
78112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_NSIG_WORDS       (_VKI_NSIG / _VKI_NSIG_BPW)
79112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
80112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned long vki_old_sigset_t;
81112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
82112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef struct {
83112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long sig[_VKI_NSIG_WORDS];
84112711afefcfcd43680c7c4aa8d38ef180e8811esewardj} vki_sigset_t;
85112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
86112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGHUP               1
87112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGINT               2
88112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGQUIT              3
89112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGILL               4
90112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGTRAP              5
91112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGABRT              6
92112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGIOT               6
93112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGBUS               7
94112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGFPE               8
95112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGKILL              9
96112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGUSR1              10
97112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGSEGV              11
98112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGUSR2              12
99112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGPIPE              13
100112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGALRM              14
101112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGTERM              15
102112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGSTKFLT            16
103112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGCHLD              17
104112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGCONT              18
105112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGSTOP              19
106112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGTSTP              20
107112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGTTIN              21
108112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGTTOU              22
109112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGURG               23
110112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGXCPU              24
111112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGXFSZ              25
112112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGVTALRM            26
113112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGPROF              27
114112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGWINCH             28
115112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGIO                29
116112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGPOLL              29
117112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGPWR               30
118112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGSYS               31
119112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGUNUSED            31
120112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
121112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGRTMIN             32
122112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIGRTMAX            _VKI_NSIG
123112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
124112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_NOCLDSTOP        0x00000001
125112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_NOCLDWAIT        0x00000002
126112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_SIGINFO          0x00000004
127112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_ONSTACK          0x08000000
128112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_RESTART          0x10000000
129112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_NODEFER          0x40000000
130112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_RESETHAND        0x80000000
131112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
132112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_NOMASK           VKI_SA_NODEFER
133112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_ONESHOT          VKI_SA_RESETHAND
134112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
135112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SA_RESTORER         0x04000000
136112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
137112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SS_ONSTACK          1
138112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SS_DISABLE          2
139112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
140112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_MINSIGSTKSZ         2048
141112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
142112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIG_BLOCK           0       /* for blocking signals */
143112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIG_UNBLOCK         1       /* for unblocking signals */
144112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIG_SETMASK         2       /* for setting the signal mask */
145112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
146112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef void __vki_signalfn_t(int);
147112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef __vki_signalfn_t __user *__vki_sighandler_t;
148112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
149112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef void __vki_restorefn_t(void);
150112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef __vki_restorefn_t __user *__vki_sigrestore_t;
151112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
152112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIG_DFL       ((__vki_sighandler_t)0)       /* default signal handling */
153112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIG_IGN       ((__vki_sighandler_t)1)       /* ignore signal */
154112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
155112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_sigaction_base {
156112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  // [[Nb: a 'k' prefix is added to "sa_handler" because
157112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  // bits/sigaction.h (which gets dragged in somehow via signal.h)
158112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  // #defines it as something else.  Since that is done for glibc's
159112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  // purposes, which we don't care about here, we use our own name.]]
160112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_sighandler_t ksa_handler;
161112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long sa_flags;
162112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_sigrestore_t sa_restorer;
163112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_sigset_t sa_mask;              /* mask last for extensibility */
164112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
165112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
166112711afefcfcd43680c7c4aa8d38ef180e8811esewardj/* On Linux we use the same type for passing sigactions to
167112711afefcfcd43680c7c4aa8d38ef180e8811esewardj   and from the kernel.  Hence: */
168112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef  struct vki_sigaction_base  vki_sigaction_toK_t;
169112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef  struct vki_sigaction_base  vki_sigaction_fromK_t;
170112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
171112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
172112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef struct vki_sigaltstack {
173112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  void __user *ss_sp;
174112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  int ss_flags;
175112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_size_t ss_size;
176112711afefcfcd43680c7c4aa8d38ef180e8811esewardj} vki_stack_t;
177112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
178112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
179112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/sigcontext.h
180112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
181112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
182112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// Tilegx has no FP registers.
183112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct _vki_fpstate {
184112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
185112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
186112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
187112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_sigcontext {
188112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long gregs[53];
189112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long tp;
190112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long sp;
191112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long lr;
192112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long pc;
193112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long ics;
194112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long faultnum;
195112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long pad[5];
196112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
197112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
198112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
199112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/mman.h
200112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
201112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
202112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PROT_READ       0x1              /* page can be read */
203112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PROT_WRITE      0x2              /* page can be written */
204112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PROT_EXEC       0x4              /* page can be executed */
205112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PROT_NONE       0x0              /* page can not be accessed */
206112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PROT_GROWSDOWN  0x01000000       /* mprotect flag: extend change to start of growsdown vma */
207112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PROT_GROWSUP    0x02000000       /* mprotect flag: extend change to end of growsup vma */
208112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
209112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_MAP_SHARED      0x01              /* Share changes */
210112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_MAP_PRIVATE     0x02              /* Changes are private */
211112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_MAP_FIXED       0x10              /* Interpret addr exactly */
212112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_MAP_ANONYMOUS   0x20              /* don't use a file */
213112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_MAP_HUGETLB     0x4000            /* Use HUGETLB */
214112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
215112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
216112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/fcntl.h
217112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
218112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
219112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_RDONLY          00
220112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_WRONLY          01
221112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_RDWR            02
222112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_ACCMODE         03
223112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_CREAT           0100       /* not fcntl */
224112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_EXCL            0200       /* not fcntl */
225112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_TRUNC           01000      /* not fcntl */
226112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_APPEND          02000
227112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_NONBLOCK        04000
228112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_O_LARGEFILE       0100000
229112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
230112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_AT_FDCWD            -100
231112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
232112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_DUPFD              0       /* dup */
233112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_GETFD              1       /* get close_on_exec */
234112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_SETFD              2       /* set/clear close_on_exec */
235112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_GETFL              3       /* get file->f_flags */
236112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_SETFL              4       /* set file->f_flags */
237112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_GETLK              5
238112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_SETLK              6
239112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_SETLKW             7
240112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
241112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_SETOWN             8       /*  for sockets. */
242112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_GETOWN             9       /*  for sockets. */
243112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_SETSIG             10       /*  for sockets. */
244112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_GETSIG             11       /*  for sockets. */
245112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
246112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_SETOWN_EX          15
247112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_GETOWN_EX          16
248112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_GETLK64            12
249112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_SETLK64            13
250112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_SETLKW64           14
251112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
252112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_OFD_GETLK          -1
253112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_OFD_SETLK          -2
254112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_OFD_SETLKW         -3
255112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
256112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_FD_CLOEXEC      1       /* actually anything with low bit set goes */
257112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
258112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_F_LINUX_SPECIFIC_BASE       1024
259112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
260112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_f_owner_ex {
261112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  int type;
262112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_pid_t pid;
263112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
264112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
265112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
266112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/resource.h
267112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
268112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
269112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_RLIMIT_DATA        2       /* max data size */
270112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_RLIMIT_STACK       3       /* max stack size */
271112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_RLIMIT_CORE        4       /* max core file size */
272112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_RLIMIT_NOFILE      7       /* max number of open files */
273112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
274112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
275112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/socket.h
276112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
277112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
278112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SOL_SOCKET         1
279112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SO_TYPE            3
280112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SO_ATTACH_FILTER   26
281112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
282112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
283112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/sockios.h
284112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
285112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
286112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIOCSPGRP          0x8902
287112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIOCGPGRP          0x8904
288112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIOCATMARK         0x8905
289112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIOCGSTAMP         0x8906              /* Get stamp (timeval) */
290112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_SIOCGSTAMPNS       0x8907              /* Get stamp (timespec) */
291112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
292112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
293112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/stat.h
294112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
295112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
296112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_stat {
297112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_dev;        /* Device.  */
298112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_ino;        /* File serial number.  */
299112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       st_mode;       /* File mode.  */
300112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       st_nlink;      /* Link count.  */
301112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       st_uid;        /* User ID of the file's owner.  */
302112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       st_gid;        /* Group ID of the file's group. */
303112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_rdev;       /* Device number, if device.  */
304112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      __pad1;
305112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_size;       /* Size of file, in bytes.  */
306112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  int                st_blksize;    /* Optimal block size for I/O.  */
307112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  int                __pad2;
308112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_blocks;     /* Number 512-byte blocks allocated. */
309112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_atime;      /* Time of last access.  */
310112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_atime_nsec;
311112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_mtime;      /* Time of last modification.  */
312112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_mtime_nsec;
313112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_ctime;      /* Time of last status change.  */
314112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_ctime_nsec;
315112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       __unused4;
316112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       __unused5;
317112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
318112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
319112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_stat64 {
320112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_dev;        /* Device.  */
321112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_ino;        /* File serial number.  */
322112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       st_mode;       /* File mode.  */
323112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       st_nlink;      /* Link count.  */
324112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       st_uid;        /* User ID of the file's owner.  */
325112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       st_gid;        /* Group ID of the file's group. */
326112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_rdev;       /* Device number, if device.  */
327112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      __pad1;
328112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_size;       /* Size of file, in bytes.  */
329112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  int                st_blksize;    /* Optimal block size for I/O.  */
330112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  int                __pad2;
331112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_blocks;     /* Number 512-byte blocks allocated. */
332112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_atime;      /* Time of last access.  */
333112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_atime_nsec;
334112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_mtime;      /* Time of last modification.  */
335112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_mtime_nsec;
336112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long               st_ctime;      /* Time of last status change.  */
337112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long      st_ctime_nsec;
338112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       __unused4;
339112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned int       __unused5;
340112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
341112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
342112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
343112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/statfs.h
344112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
345112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
346112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_statfs {
347112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_type;
348112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_bsize;
349112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_blocks;
350112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_bfree;
351112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_bavail;
352112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_files;
353112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_ffree;
354112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_fsid_t f_fsid;
355112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_namelen;
356112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_frsize;
357112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_flags;
358112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long f_spare[4];
359112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
360112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
361112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
362112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/termios.h
363112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
364112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
365112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_winsize {
366112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short ws_row;
367112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short ws_col;
368112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short ws_xpixel;
369112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short ws_ypixel;
370112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
371112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
372112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_NCC 8
373112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_termio {
374112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short c_iflag;            /* input mode flags */
375112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short c_oflag;            /* output mode flags */
376112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short c_cflag;            /* control mode flags */
377112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short c_lflag;            /* local mode flags */
378112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned char c_line;              /* line discipline */
379112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned char c_cc[VKI_NCC];       /* control characters */
380112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
381112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
382112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
383112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/termbits.h
384112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
385112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
386112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned char       vki_cc_t;
387112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned int        vki_tcflag_t;
388112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
389112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_NCCS 19
390112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_termios {
391112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_tcflag_t c_iflag;              /* input mode flags */
392112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_tcflag_t c_oflag;              /* output mode flags */
393112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_tcflag_t c_cflag;              /* control mode flags */
394112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_tcflag_t c_lflag;              /* local mode flags */
395112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_cc_t c_line;                   /* line discipline */
396112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_cc_t c_cc[VKI_NCCS];           /* control characters */
397112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
398112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
399112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
400112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
401112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/ioctl.h
402112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
403112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
404112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_NRBITS              8
405112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_TYPEBITS            8
406112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_SIZEBITS           14
407112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_DIRBITS             2
408112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
409112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_SIZEMASK      ((1 << _VKI_IOC_SIZEBITS)-1)
410112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_DIRMASK       ((1 << _VKI_IOC_DIRBITS)-1)
411112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
412112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_NRSHIFT         0
413112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_TYPESHIFT       (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
414112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_SIZESHIFT       (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
415112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_DIRSHIFT        (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
416112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
417112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_NONE            0U
418112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_WRITE           1U
419112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_READ            2U
420112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
421112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC(dir,type,nr,size)              \
422112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  (((dir)  << _VKI_IOC_DIRSHIFT) |              \
423112711afefcfcd43680c7c4aa8d38ef180e8811esewardj   ((type) << _VKI_IOC_TYPESHIFT) |             \
424112711afefcfcd43680c7c4aa8d38ef180e8811esewardj   ((nr)   << _VKI_IOC_NRSHIFT) |               \
425112711afefcfcd43680c7c4aa8d38ef180e8811esewardj   ((size) << _VKI_IOC_SIZESHIFT))
426112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
427112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IO(type,nr)        _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
428112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOR(type,nr,size)  _VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size))
429112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOW(type,nr,size)  _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size))
430112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size))
431112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
432112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_DIR(nr)     (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
433112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define _VKI_IOC_SIZE(nr)    (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
434112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
435112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
436112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/ioctls.h
437112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
438112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
439112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCGETS         0x5401
440112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCSETS         0x5402
441112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCSETSW        0x5403
442112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCSETSF        0x5404
443112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCGETA         0x5405
444112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCSETA         0x5406
445112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCSETAW        0x5407
446112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCSETAF        0x5408
447112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCSBRK         0x5409
448112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCXONC         0x540A
449112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCFLSH         0x540B
450112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCEXCL       0x540C
451112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCNXCL       0x540D
452112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSCTTY      0x540E
453112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCGPGRP      0x540F
454112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSPGRP      0x5410
455112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCOUTQ       0x5411
456112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSTI        0x5412
457112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCGWINSZ     0x5413
458112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSWINSZ     0x5414
459112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCMGET       0x5415
460112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCMBIS       0x5416
461112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCMBIC       0x5417
462112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCMSET       0x5418
463112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCGSOFTCAR   0x5419
464112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSSOFTCAR   0x541A
465112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_FIONREAD       0x541B
466112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCINQ        VKI_FIONREAD
467112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCLINUX      0x541C
468112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCCONS       0x541D
469112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCGSERIAL    0x541E
470112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSSERIAL    0x541F
471112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCPKT        0x5420
472112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_FIONBIO        0x5421
473112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCNOTTY      0x5422
474112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSETD       0x5423
475112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCGETD       0x5424
476112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TCSBRKP        0x5425
477112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCGPTN       _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
478112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSPTLCK     _VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
479112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
480112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_FIONCLEX       0x5450
481112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_FIOCLEX        0x5451
482112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_FIOASYNC       0x5452
483112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSERGETLSR  0x5459 /* Get line status register */
484112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCGICOUNT    0x545D /* read serial port inline interrupt counts */
485112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
486112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// X86_64 define above, assume tilegx need no more than that. --FIXME
487112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
488112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCGPTN       _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
489112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSPTLCK     _VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
490112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
491112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_FIOASYNC       0x5452
492112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCSERGETLSR  0x5459 /* Get line status register */
493112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_TIOCGICOUNT    0x545D       /* read serial port inline interrupt counts */
494112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
495112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
496112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/poll.h
497112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
498112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
499112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_POLLIN              0x0001
500112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
501112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_pollfd {
502112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  int fd;
503112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  short events;
504112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  short revents;
505112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
506112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
507112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
508112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/user.h
509112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
510112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
511112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
512112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/ucontext.h
513112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
514112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
515112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_ucontext {
516112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long            uc_flags;
517112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  struct vki_ucontext      *uc_link;
518112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_stack_t              uc_stack;
519112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  struct vki_sigcontext    uc_mcontext;
520112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_sigset_t             uc_sigmask;       /* mask last for extensibility */
521112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
522112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
523112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
524112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/segment.h
525112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
526112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// NA
527112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
528112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm-generic/prctl.h
529112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
530112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// NA
531112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
532112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/ldt.h
533112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
534112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
535112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// NA
536112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
537112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
538112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From linux-2.6.11.2/include/asm-x86_64/ipcbuf.h
539112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
540112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
541112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_ipc64_perm
542112711afefcfcd43680c7c4aa8d38ef180e8811esewardj{
543112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_key_t         key;
544112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_uid32_t       uid;
545112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_gid32_t       gid;
546112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_uid32_t       cuid;
547112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_gid32_t       cgid;
548112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_mode_t        mode;
549112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned char              __pad1[4 - sizeof(__vki_kernel_mode_t)];
550112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short             seq;
551112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short             __pad2;
552112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long              __unused1;
553112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long              __unused2;
554112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
555112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
556112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
557112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From linux-2.6.11.2/include/asm-x86_64/sembuf.h
558112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
559112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
560112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_semid64_ds {
561112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  struct vki_ipc64_perm    sem_perm;              /* permissions .. see ipc.h */
562112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_time_t      sem_otime;              /* last semop time */
563112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_time_t      sem_ctime;              /* last change time */
564112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long            sem_nsems;              /* no. of semaphores in array */
565112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long            __unused3;
566112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long            __unused4;
567112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
568112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
569112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
570112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From linux-2.6.11.2/include/asm-x86_64/msgbuf.h
571112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
572112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
573112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_msqid64_ds {
574112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  struct vki_ipc64_perm msg_perm;
575112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_time_t   msg_stime;       /* last msgsnd time */
576112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_time_t   msg_rtime;       /* last msgrcv time */
577112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_time_t   msg_ctime;       /* last change time */
578112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long         msg_cbytes;      /* current number of bytes on queue */
579112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long         msg_qnum;        /* number of messages in queue */
580112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long         msg_qbytes;      /* max number of bytes on queue */
581112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_pid_t    msg_lspid;       /* pid of last msgsnd */
582112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_pid_t    msg_lrpid;       /* last receive pid */
583112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long         __unused4;
584112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long         __unused5;
585112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
586112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
587112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
588112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From linux-2.6.11.2/include/asm-x86_64/shmbuf.h
589112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
590112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
591112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_shmid64_ds {
592112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  struct vki_ipc64_perm   shm_perm;        /* operation perms */
593112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  vki_size_t              shm_segsz;       /* size of segment (bytes) */
594112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_time_t     shm_atime;       /* last attach time */
595112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_time_t     shm_dtime;       /* last detach time */
596112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_time_t     shm_ctime;       /* last change time */
597112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_pid_t      shm_cpid;        /* pid of creator */
598112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  __vki_kernel_pid_t      shm_lpid;        /* pid of last operator */
599112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long           shm_nattch;      /* no. of current attaches */
600112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long           __unused4;
601112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long           __unused5;
602112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
603112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
604112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_shminfo64 {
605112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long       shmmax;
606112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long       shmmin;
607112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long       shmmni;
608112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long       shmseg;
609112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long       shmall;
610112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long       __unused1;
611112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long       __unused2;
612112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long       __unused3;
613112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long       __unused4;
614112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
615112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
616112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
617112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm-tile/ptrace.h
618112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
619112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
620112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct vki_pt_regs {
621112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
622112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long regs[53];
623112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long tp;
624112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long sp;
625112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long lr;
626112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long pc;
627112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long ex1;
628112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long faultnum;
629112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long orig_r0;
630112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long flags;
631112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned long pad[3];
632112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
633112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
634112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#ifndef user_pt_regs
635112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define user_pt_regs  vki_pt_regs
636112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#endif
637112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
638112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// Tile has no fp registers. Just make gcc happy.
639112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct  tilegx_elf_fpregset {};
640112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef struct tilegx_elf_fpregset vki_elf_fpregset_t;
641112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
642112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define vki_user_regs_struct vki_pt_regs
643112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
644112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r56       regs[56]
645112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r55       regs[55]
646112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r54       regs[54]
647112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r53       regs[53]
648112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r52       regs[52]
649112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r51       regs[51]
650112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r50       regs[50]
651112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r49       regs[49]
652112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r48       regs[48]
653112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r47       regs[47]
654112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r46       regs[46]
655112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r45       regs[45]
656112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r44       regs[44]
657112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r43       regs[43]
658112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r42       regs[42]
659112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r41       regs[41]
660112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r40       regs[40]
661112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r39       regs[39]
662112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r38       regs[38]
663112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r37       regs[37]
664112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r36       regs[36]
665112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r35       regs[35]
666112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r34       regs[34]
667112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r33       regs[33]
668112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r32       regs[32]
669112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r31       regs[31]
670112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r30       regs[30]
671112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r29       regs[29]
672112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r28       regs[28]
673112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r27       regs[27]
674112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r26       regs[26]
675112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r25       regs[25]
676112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r24       regs[24]
677112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r23       regs[23]
678112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r22       regs[22]
679112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r21       regs[21]
680112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r20       regs[20]
681112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r19       regs[19]
682112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r18       regs[18]
683112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r17       regs[17]
684112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r16       regs[16]
685112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r15       regs[15]
686112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r14       regs[14]
687112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r13       regs[13]
688112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r12       regs[12]
689112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r11       regs[11]
690112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r10       regs[10]
691112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r9        regs[9]
692112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r8        regs[8]
693112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r7        regs[7]
694112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r6        regs[6]
695112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r5        regs[5]
696112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r4        regs[4]
697112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r3        regs[3]
698112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r2        regs[2]
699112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r1        regs[1]
700112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_r0        regs[0]
701112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
702112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_lr        TILEGX_r55
703112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_sp        TILEGX_r54
704112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_tp        TILEGX_r53
705112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define TILEGX_pc        TILEGX_r56
706112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
707112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PTRACE_GETREGS            12
708112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PTRACE_SETREGS            13
709112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PTRACE_GETFPREGS          14
710112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_PTRACE_SETFPREGS          15
711112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
712112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
713112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
714112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm_generic/elf.h
715112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
716112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
717112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef unsigned long vki_elf_greg_t;
718112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
719112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t))
720112711afefcfcd43680c7c4aa8d38ef180e8811esewardjtypedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG];
721112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
722112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
723112711afefcfcd43680c7c4aa8d38ef180e8811esewardjstruct tilegx_dirent64 {
724112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long              d_ino;
725112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  long              d_off;
726112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned short    d_reclen;
727112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  unsigned char     d_type;
728112711afefcfcd43680c7c4aa8d38ef180e8811esewardj  char              d_name[256];
729112711afefcfcd43680c7c4aa8d38ef180e8811esewardj};
730112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
731112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
732112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// From tilegx linux/include/asm-generic/errno.h
733112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
734112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
735112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define       VKI_ENOSYS       38  /* Function not implemented */
736112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#define       VKI_EOVERFLOW    75  /* Value too large for defined data type */
737112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
738112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
739112711afefcfcd43680c7c4aa8d38ef180e8811esewardj// And that's it!
740112711afefcfcd43680c7c4aa8d38ef180e8811esewardj//----------------------------------------------------------------------
741112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
742112711afefcfcd43680c7c4aa8d38ef180e8811esewardj#endif // __VKI_TILEGX_LINUX_H
743112711afefcfcd43680c7c4aa8d38ef180e8811esewardj
744112711afefcfcd43680c7c4aa8d38ef180e8811esewardj/*--------------------------------------------------------------------*/
745112711afefcfcd43680c7c4aa8d38ef180e8811esewardj/*--- end                                                          ---*/
746112711afefcfcd43680c7c4aa8d38ef180e8811esewardj/*--------------------------------------------------------------------*/
747