1436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
2436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/
3436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--- mips/Linux-specific kernel interface.     vki-mips64-linux.h ---*/
4436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/
5436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
6436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*
7436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   This file is part of Valgrind, a dynamic binary instrumentation
8436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   framework.
9436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   Copyright (C) 2010-2013 RT-RK
11436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov      mips-valgrind@rt-rk.com
12436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
13436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   This program is free software; you can redistribute it and/or
14436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   modify it under the terms of the GNU General Public License as
15436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   published by the Free Software Foundation; either version 2 of the
16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   License, or (at your option) any later version.
17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   This program is distributed in the hope that it will be useful, but
19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   WITHOUT ANY WARRANTY; without even the implied warranty of
20436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   General Public License for more details.
22436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
23436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   You should have received a copy of the GNU General Public License
24436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   along with this program; if not, write to the Free Software
25436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
26436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   02111-1307, USA.
27436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov*/
28436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
29436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifndef __VKI_MIPS64_LINUX_H
30436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define __VKI_MIPS64_LINUX_H
31436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
32436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include <config.h>
33436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
34436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// mips endian
35436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#if defined (_MIPSEL)
36436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_LITTLE_ENDIAN  1
37436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#elif defined (_MIPSEB)
38436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_BIG_ENDIAN  1
39436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
40436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
41436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
42436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/cachectl.h
43436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
44436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
45436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_ICACHE  (1<<0)          /* flush instruction cache        */
46436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_DCACHE  (1<<1)          /* writeback and flush data cache */
47436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_BCACHE  (VKI_ICACHE | VKI_DCACHE) /* flush both caches    */
48436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
49436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
50436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/mips-mips/types.h
51436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
52436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
53436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed__ char __vki_s8;
54436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned   char __vki_u8;
55436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
56436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed__ short __vki_s16;
57436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned   short __vki_u16;
58436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
59436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed__ int __vki_s32;
60436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned   int __vki_u32;
61436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
62436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed char vki_s8;
63436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned char vki_u8;
64436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
65436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed short vki_s16;
66436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned short vki_u16;
67436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
68436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed int vki_s32;
69436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned int vki_u32;
70436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
71436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#if (_MIPS_SZLONG == 64)
72436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed__ long __vki_s64;
73436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned   long __vki_u64;
74436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#else
75436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed__ long long __vki_s64;
76436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned   long long __vki_u64;
77436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
78436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
79436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
80436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/page.h
81436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
82436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
83436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* PAGE_SHIFT determines the page size */
84436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PAGE_SHIFT  MIPS_PAGE_SHIFT
85436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PAGE_SIZE   (1UL << VKI_PAGE_SHIFT)
86436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PAGE_MASK   (~(VKI_PAGE_SIZE-1))
87436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAX_PAGE_SHIFT      VKI_PAGE_SHIFT
88436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAX_PAGE_SIZE       VKI_PAGE_SIZE
89436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
90436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
91436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/arch/mips/include/bits/shm.h
92436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
93436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
94436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SHMLBA  0x40000
95436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
96436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
97436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/signal.h
98436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
99436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
100436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MINSIGSTKSZ 2048
101436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
102436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_BLOCK   1  /* for blocking signals */
103436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_UNBLOCK 2  /* for unblocking signals */
104436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_SETMASK 3  /* for setting the signal mask */
105436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
106436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* Type of a signal handler.  */
107436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef void __vki_signalfn_t(int);
108436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __vki_signalfn_t __user *__vki_sighandler_t;
109436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
110436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef void __vki_restorefn_t(void);
111436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __vki_restorefn_t __user *__vki_sigrestore_t;
112436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
113436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_DFL     ((__vki_sighandler_t)0)   /* default signal handling */
114436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_IGN     ((__vki_sighandler_t)1)   /* ignore signal */
115436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_ERR     ((__vki_sighandler_t)-1)  /* error return from signal */
116436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
117436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_NSIG       128
118436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_NSIG_BPW   64
119436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
120436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
121436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned long vki_old_sigset_t;  /* at least 32 bits */
122436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
123436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct {
124436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long sig[_VKI_NSIG_WORDS];
125436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} vki_sigset_t;
126436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
127436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGHUP           1          /* Hangup (POSIX).                    */
128436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGINT           2          /* Interrupt (ANSI).                  */
129436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGQUIT          3          /* Quit (POSIX).                      */
130436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGILL           4          /* Illegal instruction (ANSI).        */
131436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTRAP          5          /* Trace trap (POSIX).                */
132436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGIOT           6          /* IOT trap (4.2 BSD).                */
133436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGABRT          VKI_SIGIOT /* Abort (ANSI).                      */
134436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGEMT           7
135436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGFPE           8          /* Floating-point exception (ANSI).   */
136436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGKILL          9          /* Kill, unblockable (POSIX).         */
137436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGBUS          10          /* BUS error (4.2 BSD).               */
138436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGSEGV         11          /* Segmentation violation (ANSI).     */
139436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGSYS          12
140436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGPIPE         13          /* Broken pipe (POSIX).               */
141436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGALRM         14          /* Alarm clock (POSIX).               */
142436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTERM         15          /* Termination (ANSI).                */
143436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGUSR1         16          /* User-defined signal 1 (POSIX).     */
144436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGUSR2         17          /* User-defined signal 2 (POSIX).     */
145436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGCHLD         18          /* Child status has changed (POSIX).  */
146436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGCLD          VKI_SIGCHLD /* Same as SIGCHLD (System V).        */
147436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGPWR          19          /* Power failure restart (System V).  */
148436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGWINCH        20          /* Window size change (4.3 BSD, Sun). */
149436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGURG          21          /* Urgent condition on socket.        */
150436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGIO           22          /* I/O now possible (4.2 BSD).        */
151436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGPOLL         VKI_SIGIO   /* Pollable event occurred (System V).*/
152436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGSTOP         23          /* Stop, unblockable (POSIX).         */
153436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTSTP         24          /* Keyboard stop (POSIX).             */
154436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGCONT         25          /* Continue (POSIX).                  */
155436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTTIN         26          /* Background read from tty (POSIX).  */
156436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTTOU         27          /* Background write to tty (POSIX).   */
157436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGVTALRM       28          /* Virtual alarm clock (4.2 BSD).     */
158436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGPROF         29          /* Profiling alarm clock (4.2 BSD).   */
159436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGXCPU         30          /* CPU limit exceeded (4.2 BSD).      */
160436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGXFSZ         31          /* File size limit exceeded (4.2 BSD).*/
161436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
162436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* These should not be considered constants from userland.  */
163436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGRTMIN    32
164436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// [[This was (_NSIG-1) in 2.4.X... not sure if it matters.]]
165436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGRTMAX    (_VKI_NSIG - 1)
166436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
167436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_ONSTACK      0x08000000u
168436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_RESETHAND    0x80000000u
169436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_RESTART      0x10000000u
170436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_SIGINFO      0x00000008u
171436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_NODEFER      0x40000000u
172436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_NOCLDWAIT    0x00010000u
173436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_NOCLDSTOP    0x00000001u
174436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
175436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_NOMASK           VKI_SA_NODEFER
176436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_ONESHOT          VKI_SA_RESETHAND
177436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//#define VKI_SA_INTERRUPT      0x20000000  /* dummy -- ignored */
178436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
179436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_RESTORER         0x04000000
180436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
181436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SS_ONSTACK          1
182436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SS_DISABLE          2
183436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
184436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_old_sigaction {
185436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       // [[Nb: a 'k' prefix is added to "sa_handler" because
186436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       // bits/sigaction.h (which gets dragged in somehow via signal.h)
187436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       // #defines it as something else.  Since that is done for glibc's
188436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       // purposes, which we don't care about here, we use our own name.]]
189436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long sa_flags;
190436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_sighandler_t ksa_handler;
191436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_old_sigset_t sa_mask;
192436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_sigrestore_t sa_restorer;
193436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
194436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
195436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_sigaction {
196436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned int    sa_flags;
197436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_sighandler_t  sa_handler;
198436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_sigset_t        sa_mask;
199436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
200436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
201436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
202436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_sigaction_base {
203436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       // [[See comment about extra 'k' above]]
204436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned int sa_flags;
205436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_sighandler_t ksa_handler;
206436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_sigset_t sa_mask;           // mask last for extensibility
207436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_sigrestore_t sa_restorer;
208436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
209436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
210436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* On Linux we use the same type for passing sigactions to
211436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   and from the kernel.  Hence: */
212436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef  struct vki_sigaction_base  vki_sigaction_toK_t;
213436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef  struct vki_sigaction_base  vki_sigaction_fromK_t;
214436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
215436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_sigaltstack {
216436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        void __user *ss_sp;
217436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        vki_size_t ss_size;
218436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        int ss_flags;
219436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} vki_stack_t;
220436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
221436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
222436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/sigcontext.h
223436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
224436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
225436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct _vki_fpreg {
226436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short significand[4];
227436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short exponent;
228436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
229436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
230436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct _vki_fpxreg {
231436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short significand[4];
232436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short exponent;
233436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short padding[3];
234436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
235436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
236436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct _vki_xmmreg {
237436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long element[4];
238436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
239436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
240436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct _vki_fpstate {
241436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       /* Regular FPU environment */
242436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    cw;
243436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    sw;
244436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    tag;
245436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    ipoff;
246436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    cssel;
247436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    dataoff;
248436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    datasel;
249436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       struct _vki_fpreg    _st[8];
250436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short   status;
251436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short   magic;           /* 0xffff = regular FPU data only */
252436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
253436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       /* FXSR FPU environment */
254436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    _fxsr_env[6];    /* FXSR FPU env is ignored */
255436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    mxcsr;
256436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    reserved;
257436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       struct _vki_fpxreg   _fxsr_st[8]; /* FXSR FPU reg data is ignored */
258436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       struct _vki_xmmreg   _xmm[8];
259436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long    padding[56];
260436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
261436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
262436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
263436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/sigcontext.h
264436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
265436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_sigcontext {
266436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_regs[32];
267436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_fpregs[32];
268436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_mdhi;
269436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_hi1;
270436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_hi2;
271436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_hi3;
272436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_mdlo;
273436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_lo1;
274436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_lo2;
275436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_lo3;
276436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_pc;
277436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_fpc_csr;
278436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_used_math;
279436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_dsp;
280436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u64   sc_reserved;
281436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
282436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
283436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
284436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/mman.h
285436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
286436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
287436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_NONE       0x0      /* No page permissions */
288436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_READ       0x1      /* page can be read */
289436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_WRITE      0x2      /* page can be written */
290436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_EXEC       0x4      /* page can be executed */
291436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_GROWSDOWN  0x01000000  /* mprotect flag: extend change to start
292436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                           of growsdown vma */
293436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_GROWSUP    0x02000000  /* mprotect flag: extend change to end
294436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                           of growsup vma */
295436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
296436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_SHARED      0x001     /* Share changes */
297436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_PRIVATE     0x002     /* Changes are private */
298436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//#define VKI_MAP_TYPE      0x0f        /* Mask for type of mapping */
299436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_FIXED       0x010     /* Interpret addr exactly */
300436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
301436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_NORESERVE   0x0400   /* don't reserve swap pages */
302436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
303436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* These are linux-specific */
304436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_NORESERVE   0x0400          /* don't check for reservations */
305436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_ANONYMOUS   0x0800          /* don't use a file */
306436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_GROWSDOWN   0x1000          /* stack-like segment */
307436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_DENYWRITE   0x2000          /* ETXTBSY */
308436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_EXECUTABLE  0x4000          /* mark it as an executable */
309436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_LOCKED      0x8000          /* pages are locked */
310436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_POPULATE    0x10000         /* populate (prefault) pagetables */
311436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_NONBLOCK    0x20000         /* do not block on IO */
312436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
313436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
314436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/fcntl.h
315436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
316436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
317436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_RDONLY        00
318436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_WRONLY        01
319436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_RDWR          02
320436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_ACCMODE       03
321436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
322436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_CREAT         0x0100      /* not fcntl */
323436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_EXCL          0x0400      /* not fcntl */
324436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
325436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_TRUNC         0x0200      /* not fcntl */
326436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
327436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_APPEND        0x0008
328436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_NONBLOCK      0x0080
329436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_LARGEFILE     0x2000
330436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
331436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_AT_FDCWD        -100
332436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
333436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_DUPFD         0           /* dup */
334436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETFD         1           /* get close_on_exec */
335436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETFD         2           /* set/clear close_on_exec */
336436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETFL         3           /* get file->f_flags */
337436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETFL         4           /* set file->f_flags */
338436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
339436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETLK         14
340436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETLK         6
341436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETLKW        7
342436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
343436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETOWN        24          /*  for sockets. */
344436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETOWN        23          /*  for sockets. */
345436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETSIG        10          /*  for sockets. */
346436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETSIG        11          /*  for sockets. */
347436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
348436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETOWN_EX     15
349436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETOWN_EX     16
350436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
351436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETLK64       33          /*  using 'struct flock64' */
352436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETLK64       34
353436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETLKW64      35
354436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
355436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* for F_[GET|SET]FL */
356436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FD_CLOEXEC      1      /* actually anything with low bit set goes */
357436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
358436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_LINUX_SPECIFIC_BASE 1024
359436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
360436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_f_owner_ex {
361436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       int type;
362436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_pid_t pid;
363436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
364436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
365436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
366436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/resource.h
367436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
368436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
369436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_RLIMIT_DATA     2   /* max data size */
370436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_RLIMIT_STACK    3   /* max stack size */
371436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_RLIMIT_CORE     4   /* max core file size */
372436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_RLIMIT_NOFILE   5   /* max number of open files */
373436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
374436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
375436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/socket.h
376436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
377436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
378436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SOL_SOCKET   0xffff
379436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
380436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SO_TYPE      0x1008
381436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
382436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SO_ATTACH_FILTER	26
383436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
384436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
385436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-i386/sockios.h
386436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
387436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
388436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIOCSPGRP           0x8902
389436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIOCGPGRP           0x8904
390436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIOCGSTAMP          0x8906      /* Get stamp (timeval) */
391436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIOCGSTAMPNS        0x8907      /* Get stamp (timespec) */
392436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
393436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
394436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/stat.h
395436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
396436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
397436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_stat {
398436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_dev;
399436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_pad0[3];     /* Reserved for st_dev expansion  */
400436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
401436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_ino;
402436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
403436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        int             st_mode;
404436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_nlink;
405436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
406436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_uid;
407436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_gid;
408436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
409436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_rdev;
410436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_pad1[3];     /* Reserved for st_rdev expansion  */
411436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
412436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        long            st_size;
413436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
414436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        /*
415436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov         * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
416436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov         * but we don't have it under Linux.
417436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov         */
418436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_atime;
419436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_atime_nsec;  /* Reserved for st_atime expansion  */
420436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
421436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_mtime;
422436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_mtime_nsec;  /* Reserved for st_mtime expansion  */
423436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
424436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_ctime;
425436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_ctime_nsec;  /* Reserved for st_ctime expansion  */
426436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
427436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_blksize;
428436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_pad2;
429436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
430436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        long long       st_blocks;
431436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
432436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
433436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_stat64 {
434436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_dev;
435436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_pad0[3];     /* Reserved for st_dev expansion  */
436436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
437436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long long      st_ino;
438436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
439436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        int             st_mode;
440436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_nlink;
441436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
442436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_uid;
443436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned int    st_gid;
444436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
445436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_rdev;
446436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_pad1[3];     /* Reserved for st_rdev expansion  */
447436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
448436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        long long       st_size;
449436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
450436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        /*
451436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov         * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
452436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov         * but we don't have it under Linux.
453436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov         */
454436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_atime;
455436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_atime_nsec;  /* Reserved for st_atime expansion  */
456436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
457436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_mtime;
458436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_mtime_nsec;  /* Reserved for st_mtime expansion  */
459436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
460436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_ctime;
461436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_ctime_nsec;  /* Reserved for st_ctime expansion  */
462436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
463436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_blksize;
464436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        unsigned long   st_pad2;
465436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
466436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        long long       st_blocks;
467436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
468436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
469436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
470436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/statfs.h
471436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
472436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
473436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_statfs {
474436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_type;
475436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define f_fstyp f_type
476436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_bsize;
477436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_frsize;
478436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_blocks;
479436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_bfree;
480436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_files;
481436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_ffree;
482436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_bavail;
483436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_fsid_t f_fsid;
484436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_namelen;
485436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_u32 f_spare[6];
486436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
487436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
488436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
489436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/termios.h
490436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
491436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
492436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_winsize {
493436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short ws_row;
494436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short ws_col;
495436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short ws_xpixel;
496436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short ws_ypixel;
497436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
498436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
499436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define NCC     8
500436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define NCCS    23
501436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_termio {
502436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short c_iflag;      /* input mode flags */
503436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short c_oflag;      /* output mode flags */
504436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short c_cflag;      /* control mode flags */
505436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short c_lflag;      /* local mode flags */
506436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       char           c_line;       /* line discipline */
507436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned char  c_cc[NCCS];   /* control characters */
508436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
509436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
510436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
511436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/termbits.h
512436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
513436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
514436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned char   vki_cc_t;
515436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned long   vki_speed_t;
516436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned long   vki_tcflag_t;
517436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
518436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_termios {
519436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_tcflag_t c_iflag;        /* input mode flags */
520436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_tcflag_t c_oflag;        /* output mode flags */
521436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_tcflag_t c_cflag;        /* control mode flags */
522436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_tcflag_t c_lflag;        /* local mode flags */
523436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_cc_t c_line;             /* line discipline */
524436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_cc_t c_cc[NCCS];         /* control characters */
525436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
526436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
527436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
528436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/ioctl.h
529436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
530436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
531436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_NRBITS     8
532436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_TYPEBITS   8
5332ca80a6a6fc069acdb73186e8e578dbf8f46af80Dmitriy Ivanov#define _VKI_IOC_SIZEBITS   13
5342ca80a6a6fc069acdb73186e8e578dbf8f46af80Dmitriy Ivanov#define _VKI_IOC_DIRBITS    3
535436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
536436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_NRMASK     ((1 << _VKI_IOC_NRBITS)-1)
537436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_TYPEMASK   ((1 << _VKI_IOC_TYPEBITS)-1)
538436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_SIZEMASK   ((1 << _VKI_IOC_SIZEBITS)-1)
539436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_DIRMASK    ((1 << _VKI_IOC_DIRBITS)-1)
540436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
541436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_NRSHIFT    0
542436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_TYPESHIFT  (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
543436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_SIZESHIFT  (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
544436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_DIRSHIFT   (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
545436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
546436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_NONE   1U
5472ca80a6a6fc069acdb73186e8e578dbf8f46af80Dmitriy Ivanov#define _VKI_IOC_READ   2U
5482ca80a6a6fc069acdb73186e8e578dbf8f46af80Dmitriy Ivanov#define _VKI_IOC_WRITE  4U
549436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
550436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC(dir,type,nr,size) \
551436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                (((dir)  << _VKI_IOC_DIRSHIFT) | \
552436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                ((type) << _VKI_IOC_TYPESHIFT) | \
553436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                ((nr)   << _VKI_IOC_NRSHIFT) | \
554436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                ((size) << _VKI_IOC_SIZESHIFT))
555436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
556436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* provoke compile error for invalid uses of size argument */
557436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovextern unsigned int __VKI_invalid_size_argument_for_IOC;
558436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* used to create numbers */
559436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IO(type,nr)        _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
560436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOR(type,nr,size)  _VKI_IOC(_VKI_IOC_READ,(type),(nr), \
561436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                (_VKI_IOC_TYPECHECK(size)))
562436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOW(type,nr,size)  _VKI_IOC(_VKI_IOC_WRITE,(type),(nr), \
563436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                (_VKI_IOC_TYPECHECK(size)))
564436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type), \
565436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                (nr),(_VKI_IOC_TYPECHECK(size)))
566436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
567436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* used to decode ioctl numbers.. */
568436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_DIR(nr)    (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
569436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_TYPE(nr)   (((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK)
570436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_NR(nr)     (((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK)
571436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_SIZE(nr)   (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
572436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
573436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
574436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/ioctls.h
575436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
576436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
577436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCGETA              0x5401
578436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETA              0x5402 /* Clashes with SNDCTL_TMR_START
579436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                          sound ioctl */
580436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETAW             0x5403
581436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETAF             0x5404
582436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
583436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSBRK              0x5405
584436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCXONC              0x5406
585436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCFLSH              0x5407
586436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
587436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCGETS              0x540d
588436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETS              0x540e
589436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETSW             0x540f
590436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETSF             0x5410
591436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
592436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCEXCL            0x740d  /* set exclusive use of tty */
593436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCNXCL            0x740e  /* reset exclusive use of tty */
594436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCOUTQ            0x7472  /* output queue size */
595436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSTI             0x5472  /* simulate terminal input */
596436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCMGET            0x741d  /* get all modem bits */
597436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCMBIS            0x741b  /* bis modem bits */
598436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCMBIC            0x741c  /* bic modem bits */
599436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCMSET            0x741a  /* set all modem bits */
600436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCPKT             0x5470  /* pty: set/clear packet mode */
601436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCPKT_DATA        0x00    /* data packet */
602436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCPKT_FLUSHREAD   0x01    /* flush packet */
603436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCPKT_FLUSHWRITE  0x02    /* flush packet */
604436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCPKT_STOP        0x04    /* stop output */
605436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCPKT_START       0x08    /* start output */
606436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCPKT_NOSTOP      0x10    /* no more ^S, ^Q */
607436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCPKT_DOSTOP      0x20    /* now do ^S ^Q */
608436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
609436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* set window size */
610436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSWINSZ          _VKI_IOW('t', 103, struct vki_winsize)
611436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* get window size */
612436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGWINSZ          _VKI_IOR('t', 104, struct vki_winsize)
613436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCNOTTY           0x5471 /* void tty association */
614436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSETD            0x7401
615436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGETD            0x7400
616436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
617436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIOCLEX             0x6601
618436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIONCLEX            0x6602
619436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIOASYNC            0x667d
620436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIONBIO             0x667e
621436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIOQSIZE            0x667f
622436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
623436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGLTC            0x7474 /* get special local chars */
624436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSLTC            0x7475 /* set special local chars */
625436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSPGRP           _VKI_IOW('t', 118, int) /* set pgrp of tty */
626436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGPGRP           _VKI_IOR('t', 119, int) /* get pgrp of tty */
627436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCCONS            _VKI_IOW('t', 120, int) /* become virtual
628436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                                           console */
629436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
630436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIONREAD            0x467f
631436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCINQ             FIONREAD
632436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
633436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGETP            0x7408
634436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSETP            0x7409
635436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSETN            0x740a /* TIOCSETP wo flush */
636436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
637436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSBRK            0x5427 /* BSD compatibility */
638436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCCBRK            0x5428 /* BSD compatibility */
639436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGSID            0x7416 /* Return the session ID of FD */
640436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGPTN            _VKI_IOR('T',0x30, unsigned int) /* Get Pty
641436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                                   Number (of pty-mux device) */
642436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSPTLCK          _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */
643436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
644436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* I hope the range from 0x5480 on is free ... */
645436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSCTTY           0x5480 /* become controlling tty */
646436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGSOFTCAR        0x5481
647436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSSOFTCAR        0x5482
648436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCLINUX           0x5483
649436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGSERIAL         0x5484
650436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSSERIAL         0x5485
651436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSBRKP             0x5486 /* Needed for POSIX tcsendbreak() */
652436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSERCONFIG       0x5488
653436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSERGWILD        0x5489
654436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSERSWILD        0x548a
655436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGLCKTRMIOS      0x548b
656436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSLCKTRMIOS      0x548c
657436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSERGSTRUCT      0x548d /* For debugging only */
658436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSERGETLSR       0x548e /* Get line status register */
659436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSERGETMULTI     0x548f /* Get multiport config  */
660436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSERSETMULTI     0x5490 /* Set multiport config */
661436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCMIWAIT          0x5491 /* wait for a change on serial input
662436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                          line(s) */
663436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGICOUNT         0x5492 /* read serial port inline interrupt
664436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                          counts */
665436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGHAYESESP       0x5493 /* Get Hayes ESP configuration */
666436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSHAYESESP       0x5494 /* Set Hayes ESP configuration */
667436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
668436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
669436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From asm-generic/poll.h
670436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
671436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
672436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* These are specified by iBCS2 */
673436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_POLLIN              0x0001
674436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
675436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_pollfd {
676436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       int fd;
677436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       short events;
678436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       short revents;
679436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
680436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
681436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/elf.h
682436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
683436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
684436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_ELF_NGREG           45  /* includes nip, msr, lr, etc. */
685436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_ELF_NFPREG          33  /* includes fpscr */
686436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
687436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned long vki_elf_greg_t;
688436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG];
689436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
690436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef double vki_elf_fpreg_t;
691436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef vki_elf_fpreg_t vki_elf_fpregset_t[VKI_ELF_NFPREG];
692436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
693436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_user_fxsr_struct vki_elf_fpxregset_t;
694436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
695436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_AT_SYSINFO          32
696436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
697436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/ucontext.h
698436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
699436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
700436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_ucontext {
701436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long          uc_flags;
702436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       struct vki_ucontext    *uc_link;
703436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_stack_t            uc_stack;
704436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       struct vki_sigcontext  uc_mcontext;
705436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_sigset_t           uc_sigmask;  /* mask last for extensibility */
706436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
707436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
708436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
709436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/ipcbuf.h
710436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
711436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
712436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_ipc64_perm {
713436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_key_t  key;
714436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_uid_t  uid;
715436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_gid_t  gid;
716436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_uid_t  cuid;
717436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_gid_t  cgid;
718436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_mode_t mode;
719436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short  seq;
720436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned short  __pad1;
721436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   __unused1;
722436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   __unused2;
723436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
724436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
725436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
726436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/sembuf.h
727436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
728436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
729436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_semid64_ds {
730436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       struct vki_ipc64_perm sem_perm;         /* permissions .. see ipc.h */
731436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_time_t sem_otime;          /* last semop time */
732436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_time_t sem_ctime;          /* last change time */
733436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   sem_nsems;              /* no. of semaphores in array */
734436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   __unused1;
735436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   __unused2;
736436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
737436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
738436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
739436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/msgbuf.h
740436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
741436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
742436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_msqid64_ds {
743436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       struct vki_ipc64_perm msg_perm;
744436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_time_t msg_stime;     /* last msgsnd time */
745436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_time_t msg_rtime;     /* last msgrcv time */
746436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_time_t msg_ctime;     /* last change time */
747436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long  msg_cbytes;         /* current number of bytes on queue */
748436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long  msg_qnum;           /* number of messages in queue */
749436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long  msg_qbytes;         /* max number of bytes on queue */
750436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_pid_t msg_lspid;      /* pid of last msgsnd */
751436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_pid_t msg_lrpid;      /* last receive pid */
752436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long  __unused4;
753436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long  __unused5;
754436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
755436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
756436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
757436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/ipc.h
758436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
759436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
760436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_ipc_kludge {
761436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       struct vki_msgbuf __user *msgp;
762436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       long msgtyp;
763436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
764436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
765436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SEMOP            1
766436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SEMGET           2
767436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SEMCTL           3
768436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SEMTIMEDOP       4
769436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MSGSND          11
770436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MSGRCV          12
771436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MSGGET          13
772436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MSGCTL          14
773436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SHMAT           21
774436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SHMDT           22
775436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SHMGET          23
776436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SHMCTL          24
777436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
778436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
779436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/shmbuf.h
780436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
781436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
782436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_shmid64_ds {
783436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       struct vki_ipc64_perm       shm_perm;       /* operation perms */
784436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       vki_size_t                  shm_segsz;      /* size of segment (bytes) */
785436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_time_t         shm_atime;      /* last attach time */
786436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_time_t         shm_dtime;      /* last detach time */
787436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_time_t         shm_ctime;      /* last change time */
788436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_pid_t          shm_cpid;       /* pid of creator */
789436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       __vki_kernel_pid_t          shm_lpid;       /* pid of last operator */
790436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long               shm_nattch;     /* no. of current attaches */
791436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long               __unused1;
792436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long               __unused2;
793436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
794436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
795436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_shminfo64 {
796436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   shmmax;
797436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   shmmin;
798436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   shmmni;
799436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   shmseg;
800436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   shmall;
801436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   __unused1;
802436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   __unused2;
803436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   __unused3;
804436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long   __unused4;
805436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
806436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
807436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
808436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-mips/ptrace.h
809436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
810436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
811436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_pt_regs {
812436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifdef CONFIG_32BIT
813436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        /* Pad bytes for argument save space on the stack. */
814436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long pad0[6];
815436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
816436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
817436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       /* Saved main processor registers. */
818436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long regs[32];
819436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
820436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       /* Saved special registers. */
821436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long cp0_status;
822436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long hi;
823436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long lo;
824436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifdef CONFIG_CPU_HAS_SMARTMIPS
825436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long acx;
826436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
827436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long cp0_badvaddr;
828436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long cp0_cause;
829436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long cp0_epc;
830436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifdef CONFIG_MIPS_MT_SMTC
831436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long cp0_tcstatus;
832436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif /* CONFIG_MIPS_MT_SMTC */
833436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifdef CONFIG_CPU_CAVIUM_OCTEON
834436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long long mpl[3];        /* MTM{0,1,2} */
835436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov       unsigned long long mtp[3];        /* MTP{0,1,2} */
836436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
837436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} __attribute__ ((aligned (8)));
838436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
839436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
840436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define vki_user_regs_struct vki_pt_regs
841436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
842436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_lo     lo
843436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_hi     hi
844436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r31    regs[31]
845436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r30    regs[30]
846436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r29    regs[29]
847436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r28    regs[28]
848436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r27    regs[27]
849436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r26    regs[26]
850436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r25    regs[25]
851436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r24    regs[24]
852436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r23    regs[23]
853436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r22    regs[22]
854436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r21    regs[21]
855436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r20    regs[20]
856436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r19    regs[19]
857436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r18    regs[18]
858436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r17    regs[17]
859436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r16    regs[16]
860436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r15    regs[15]
861436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r14    regs[14]
862436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r13    regs[13]
863436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r12    regs[12]
864436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r11    regs[11]
865436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r10    regs[10]
866436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r9     regs[9]
867436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r8     regs[8]
868436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r7     regs[7]
869436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r6     regs[6]
870436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r5     regs[5]
871436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r4     regs[4]
872436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r3     regs[3]
873436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r2     regs[2]
874436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r1     regs[1]
875436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define MIPS_r0     regs[0]
876436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
877436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
878436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-i386/ptrace.h
879436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
880436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
881436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_GETREGS            12
882436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_SETREGS            13
883436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_GETFPREGS          14
884436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_SETFPREGS          15
885436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_GETFPXREGS         18
886436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_SETFPXREGS         19
887436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
888436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* Calls to trace a 64bit program from a 32bit program.  */
889436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_PEEKTEXT_3264    0xc0
890436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_PEEKDATA_3264    0xc1
891436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_POKETEXT_3264    0xc2
892436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_POKEDATA_3264    0xc3
893436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_GET_THREAD_AREA_3264     0xc4s
894436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
895436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
896436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/include/asm-generic/siginfo.h
897436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
898436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
899436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define HAVE_ARCH_SIGINFO_T
900436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef union vki_sigval {
901436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        int sival_int;
902436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        void __user *sival_ptr;
903436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} vki_sigval_t;
904436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
905436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifndef __VKI_ARCH_SI_PREAMBLE_SIZE
906436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define __VKI_ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
907436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
908436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
909436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SI_MAX_SIZE 128
910436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
911436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifndef VKI_SI_PAD_SIZE
912436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SI_PAD_SIZE ((VKI_SI_MAX_SIZE - __VKI_ARCH_SI_PREAMBLE_SIZE) / sizeof(int))
913436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
914436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
915436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifndef __VKI_ARCH_SI_UID_T
916436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define __VKI_ARCH_SI_UID_T vki_uid_t
917436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
918436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
919436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifndef __VKI_ARCH_SI_BAND_T
920436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define __VKI_ARCH_SI_BAND_T long
921436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
922436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
923436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_siginfo {
924436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        int si_signo;
925436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        int si_code;
926436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        int si_errno;
927436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        int __pad0[VKI_SI_MAX_SIZE / sizeof(int) - VKI_SI_PAD_SIZE - 3];
928436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
929436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        union {
930436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                int _pad[VKI_SI_PAD_SIZE];
931436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
932436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                /* kill() */
933436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                struct {
934436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_pid_t _pid;             /* sender's pid */
935436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        __VKI_ARCH_SI_UID_T _uid;   /* sender's uid */
936436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                } _kill;
937436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
938436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                /* POSIX.1b timers */
939436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                struct {
940436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_timer_t _tid;           /* timer id */
941436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        int _overrun;           /* overrun count */
942436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        char _pad[sizeof( __VKI_ARCH_SI_UID_T) - sizeof(int)];
943436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_sigval_t _sigval;       /* same as below */
944436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        int _sys_private;       /* not to be passed to user */
945436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                } _timer;
946436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
947436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                /* POSIX.1b signals */
948436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                struct {
949436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_pid_t _pid;             /* sender's pid */
950436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        __VKI_ARCH_SI_UID_T _uid;   /* sender's uid */
951436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_sigval_t _sigval;
952436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                } _rt;
953436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
954436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                /* SIGCHLD */
955436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                struct {
956436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_pid_t _pid;             /* which child */
957436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        __VKI_ARCH_SI_UID_T _uid;   /* sender's uid */
958436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        int _status;            /* exit code */
959436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_clock_t _utime;
960436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_clock_t _stime;
961436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                } _sigchld;
962436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
963436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                /* IRIX SIGCHLD */
964436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                struct {
965436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_pid_t _pid;             /* which child */
966436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_clock_t _utime;
967436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        int _status;            /* exit code */
968436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        vki_clock_t _stime;
969436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                } _irix_sigchld;
970436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
971436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
972436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                struct {
973436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        void __user *_addr; /* faulting insn/memory ref. */
974436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifdef __ARCH_SI_TRAPNO
975436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        int _trapno;    /* TRAP # which caused the signal */
976436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
977436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                } _sigfault;
978436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
979436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                /* SIGPOLL, SIGXFSZ (To do ...)  */
980436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                struct {
981436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        __VKI_ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */
982436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                        int _fd;
983436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                } _sigpoll;
984436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        } _sifields;
985436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} vki_siginfo_t;
986436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
987436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
988436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.5/include/asm/break.h
989436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
990436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_BRK_OVERFLOW 6  /* Overflow check */
991436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_BRK_DIVZERO  7  /* Divide by zero check */
992436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
993436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
994436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.6.35.5/arch/mips/include/socket.h
995436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
996436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovenum vki_sock_type {
997436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        VKI_SOCK_STREAM = 2,
998436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        // [[others omitted]]
999436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
1000436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define ARCH_HAS_SOCKET_TYPES 1
1001436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
1002436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
1003436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.13.0/include/asm/errno.h
1004436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
1005436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
1006436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define	VKI_ENOSYS       89  /* Function not implemented */
1007436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define	VKI_EOVERFLOW    79  /* Value too large for defined data type */
1008436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
1009436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif // __VKI_MIPS64_LINUX_H
1010436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
1011436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/
1012436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--- end                                       vki-mips64-linux.h ---*/
1013436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/
1014