1663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
2663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*--------------------------------------------------------------------*/
3663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*--- mips/Linux-specific kernel interface.     vki-mips32-linux.h ---*/
4663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*--------------------------------------------------------------------*/
5663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
6663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*
7663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   This file is part of Valgrind, a dynamic binary instrumentation
8663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   framework.
9663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   Copyright (C) 2010-2013 RT-RK
11663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng      mips-valgrind@rt-rk.com
12663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
13663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   This program is free software; you can redistribute it and/or
14663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   modify it under the terms of the GNU General Public License as
15663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   published by the Free Software Foundation; either version 2 of the
16663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   License, or (at your option) any later version.
17663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
18663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   This program is distributed in the hope that it will be useful, but
19663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   WITHOUT ANY WARRANTY; without even the implied warranty of
20663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   General Public License for more details.
22663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
23663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   You should have received a copy of the GNU General Public License
24663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   along with this program; if not, write to the Free Software
25663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
26663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   02111-1307, USA.
27663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
28663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   The GNU General Public License is contained in the file COPYING.
29663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng*/
30663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
31663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifndef __VKI_MIPS32_LINUX_H
32663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define __VKI_MIPS32_LINUX_H
33663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
34663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include <config.h>
35663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
36663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// mips endian
37663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#if defined (_MIPSEL)
38663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_LITTLE_ENDIAN  1
39663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#elif defined (_MIPSEB)
40663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_BIG_ENDIAN  1
41663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
42436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
43663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
44663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
45663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-generic/int-ll64.h
46663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
47663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
48663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef __signed__ char __vki_s8;
49663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned char __vki_u8;
50663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
51663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef __signed__ short __vki_s16;
52663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned short __vki_u16;
53663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
54663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef __signed__ int __vki_s32;
55663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned int __vki_u32;
56663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
57663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef __signed char vki_s8;
58663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned char vki_u8;
59663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
60663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef __signed short vki_s16;
61663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned short vki_u16;
62663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
63663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef __signed int vki_s32;
64663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned int vki_u32;
65663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
66663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef __signed__ long long __vki_s64;
67663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned long long __vki_u64;
68663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
69663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
70663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
71663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/page.h
72663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
73663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
74663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* PAGE_SHIFT determines the page size */
75663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PAGE_SHIFT          MIPS_PAGE_SHIFT
76663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PAGE_SIZE           (1UL << VKI_PAGE_SHIFT)
77663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PAGE_MASK           (~(VKI_PAGE_SIZE-1))
78663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAX_PAGE_SHIFT      VKI_PAGE_SHIFT
79663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAX_PAGE_SIZE       VKI_PAGE_SIZE
80663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
81663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
82436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.35.9/arch/mips/include/bits/shm.h
83663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
84663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
85436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SHMLBA  0x40000
86663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
87663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
88663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm/signal.h
89663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
90663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
91663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MINSIGSTKSZ     2048
92663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
93663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIG_BLOCK       1    /* for blocking signals */
94663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIG_UNBLOCK     2    /* for unblocking signals */
95663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIG_SETMASK     3    /* for setting the signal mask */
96663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
97663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* Type of a signal handler.  */
98663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef void __vki_signalfn_t(int);
99663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef __vki_signalfn_t __user *__vki_sighandler_t;
100663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
101663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef void __vki_restorefn_t(void);
102663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef __vki_restorefn_t __user *__vki_sigrestore_t;
103663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
104663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIG_DFL	((__vki_sighandler_t)0)	/* default signal handling */
105663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIG_IGN	((__vki_sighandler_t)1)	/* ignore signal */
106663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
107663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_NSIG		128
108663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_NSIG_BPW	32
109663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_NSIG_WORDS	(_VKI_NSIG / _VKI_NSIG_BPW)
110663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
111663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned long vki_old_sigset_t;		/* at least 32 bits */
112663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
113663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef struct {
114663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long sig[_VKI_NSIG_WORDS];
115663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} vki_sigset_t;
116663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
117663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGHUP		 1	/* Hangup (POSIX).  */
118663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGINT		 2	/* Interrupt (ANSI).  */
119663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGQUIT		 3	/* Quit (POSIX).  */
120663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGILL		 4	/* Illegal instruction (ANSI).  */
121663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGTRAP		 5	/* Trace trap (POSIX).  */
122663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGIOT		 6	/* IOT trap (4.2 BSD).  */
123663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGABRT		 VKI_SIGIOT	/* Abort (ANSI).  */
124663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGEMT		 7
125663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGFPE		 8	/* Floating-point exception (ANSI).  */
126663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGKILL		 9	/* Kill, unblockable (POSIX).  */
127663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGBUS		10	/* BUS error (4.2 BSD).  */
128663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGSEGV		11	/* Segmentation violation (ANSI).  */
129663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGSYS		12
130663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGPIPE		13	/* Broken pipe (POSIX).  */
131663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGALRM		14	/* Alarm clock (POSIX).  */
132663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGTERM		15	/* Termination (ANSI).  */
133663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGUSR1		16	/* User-defined signal 1 (POSIX).  */
134663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGUSR2		17	/* User-defined signal 2 (POSIX).  */
135663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGCHLD		18	/* Child status has changed (POSIX).  */
136663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGCLD		VKI_SIGCHLD	/* Same as SIGCHLD (System V).  */
137663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGPWR		19	/* Power failure restart (System V).  */
138663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGWINCH	20	/* Window size change (4.3 BSD, Sun).  */
139663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGURG		21	/* Urgent condition on socket (4.2 BSD).  */
140663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGIO		22	/* I/O now possible (4.2 BSD).  */
141663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGPOLL		VKI_SIGIO	/* Pollable event occurred (System V).  */
142663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGSTOP		23	/* Stop, unblockable (POSIX).  */
143663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGTSTP		24	/* Keyboard stop (POSIX).  */
144663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGCONT		25	/* Continue (POSIX).  */
145663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGTTIN		26	/* Background read from tty (POSIX).  */
146663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGTTOU		27	/* Background write to tty (POSIX).  */
147663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGVTALRM	28	/* Virtual alarm clock (4.2 BSD).  */
148663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGPROF		29	/* Profiling alarm clock (4.2 BSD).  */
149663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGXCPU		30	/* CPU limit exceeded (4.2 BSD).  */
150663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGXFSZ		31	/* File size limit exceeded (4.2 BSD).  */
151663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
152663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* These should not be considered constants from userland.  */
153663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGRTMIN    32
154663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// [[This was (_NSIG-1) in 2.4.X... not sure if it matters.]]
155663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIGRTMAX    _VKI_NSIG
156663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
157663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_ONSTACK		0x08000000
158663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_RESETHAND	0x80000000
159663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_RESTART		0x10000000
160663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_SIGINFO		0x00000008
161663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_NODEFER		0x40000000
162663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_NOCLDWAIT	0x00010000
163663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_NOCLDSTOP	0x00000001
164663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
165663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_NOMASK		VKI_SA_NODEFER
166663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_ONESHOT		VKI_SA_RESETHAND
167663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//#define VKI_SA_INTERRUPT	0x20000000 /* dummy -- ignored */
168663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
169663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SA_RESTORER		0x04000000
170663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
171663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SS_ONSTACK		1
172663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SS_DISABLE		2
173663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
174663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_old_sigaction {
175663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        // [[Nb: a 'k' prefix is added to "sa_handler" because
176663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        // bits/sigaction.h (which gets dragged in somehow via signal.h)
177663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        // #defines it as something else.  Since that is done for glibc's
178663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        // purposes, which we don't care about here, we use our own name.]]
179663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    unsigned long sa_flags;
180663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_sighandler_t ksa_handler;
181663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        vki_old_sigset_t sa_mask;
182663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_sigrestore_t sa_restorer;
183663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
184663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
185663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_sigaction {
186663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned int    sa_flags;
187663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_sighandler_t  sa_handler;
188663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        vki_sigset_t        sa_mask;
189663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
190663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
191663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
192663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_sigaction_base {
193663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        // [[See comment about extra 'k' above]]
194663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long sa_flags;
195663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_sighandler_t ksa_handler;
196663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
197663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_sigset_t sa_mask;		/* mask last for extensibility */
198663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_sigrestore_t sa_restorer;
199663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
200663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
201663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* On Linux we use the same type for passing sigactions to
202663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   and from the kernel.  Hence: */
203663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef  struct vki_sigaction_base  vki_sigaction_toK_t;
204663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef  struct vki_sigaction_base  vki_sigaction_fromK_t;
205663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
206663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef struct vki_sigaltstack {
207663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	void __user *ss_sp;
208663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_size_t ss_size;
209663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	int ss_flags;
210663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
211663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} vki_stack_t;
212663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
213663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
214663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
215663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From 2.6.35.5/include/asm-mips/sigcontext.h
216663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
217663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
218663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct _vki_fpreg {
219663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short significand[4];
220663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short exponent;
221663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
222663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
223663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct _vki_fpxreg {
224663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short significand[4];
225663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short exponent;
226663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short padding[3];
227663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
228663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
229663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct _vki_xmmreg {
230663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long element[4];
231663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
232663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
233663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct _vki_fpstate {
234663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	/* Regular FPU environment */
235663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long 	cw;
236663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	sw;
237663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	tag;
238663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	ipoff;
239663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	cssel;
240663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	dataoff;
241663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	datasel;
242663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	struct _vki_fpreg	_st[8];
243663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short	status;
244663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short	magic;		/* 0xffff = regular FPU data only */
245663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
246663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	/* FXSR FPU environment */
247663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	_fxsr_env[6];	/* FXSR FPU env is ignored */
248663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	mxcsr;
249663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	reserved;
250663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	struct _vki_fpxreg	_fxsr_st[8];	/* FXSR FPU reg data is ignored */
251663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	struct _vki_xmmreg	_xmm[8];
252663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	padding[56];
253663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
254663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
255663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
256663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/sigcontext.h
257663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
258663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
259663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_sigcontext {
260663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned int            sc_regmask;     /* Unused */
261663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned int            sc_status;      /* Unused */
262663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long long      sc_pc;
263663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long long      sc_regs[32];
264663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long long      sc_fpregs[32];
265663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned int            sc_acx;         /* Was sc_ownedfp */
266663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned int            sc_fpc_csr;
267663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned int            sc_fpc_eir;     /* Unused */
268663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned int            sc_used_math;
269663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned int            sc_dsp;         /* dsp status, was sc_ssflags */
270663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long long      sc_mdhi;
271663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long long      sc_mdlo;
272663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           sc_hi1;         /* Was sc_cause */
273663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           sc_lo1;         /* Was sc_badvaddr */
274663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           sc_hi2;         /* Was sc_sigset[4] */
275663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           sc_lo2;
276663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           sc_hi3;
277663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           sc_lo3;
278663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
279663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
280663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
281663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/mman.h
282663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
283663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
284663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PROT_NONE		0x0      /* No page permissions */
285663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PROT_READ		0x1      /* page can be read */
286663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PROT_WRITE		0x2      /* page can be written */
287663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PROT_EXEC		0x4      /* page can be executed */
288663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PROT_GROWSDOWN	0x01000000	/* mprotect flag: extend change to start of growsdown vma */
289663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PROT_GROWSUP	0x02000000	/* mprotect flag: extend change to end of growsup vma */
290663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
291663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_SHARED		0x001     /* Share changes */
292663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_PRIVATE		0x002     /* Changes are private */
293663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_FIXED		0x010     /* Interpret addr exactly */
294663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
295663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_NORESERVE	0x0400   /* don't reserve swap pages */
296663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
297663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* These are linux-specific */
298663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_NORESERVE   0x0400          /* don't check for reservations */
299663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_ANONYMOUS   0x0800          /* don't use a file */
300663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_GROWSDOWN   0x1000          /* stack-like segment */
301663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_DENYWRITE   0x2000          /* ETXTBSY */
302663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_EXECUTABLE  0x4000          /* mark it as an executable */
303663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_LOCKED      0x8000          /* pages are locked */
304663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_POPULATE    0x10000         /* populate (prefault) pagetables */
305663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MAP_NONBLOCK    0x20000         /* do not block on IO */
306663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
307663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
308663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
309663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/fcntl.h
310663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
311663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
312436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_ACCMODE		   03
313663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_RDONLY		   00
314663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_WRONLY		   01
315663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_RDWR		   02
316663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
317663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_CREAT		0x0100		/* not fcntl */
318663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_EXCL		0x0400		/* not fcntl */
319663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
320663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_TRUNC		0x0200	/* not fcntl */
321663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
322663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_APPEND		0x0008
323663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_NONBLOCK		0x0080
324663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_LARGEFILE     	0x2000
325663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
326663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_AT_FDCWD            -100
327663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
328663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_DUPFD		 0			/* dup */
329663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETFD		 1			/* get close_on_exec */
330663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETFD		 2			/* set/clear close_on_exec */
331663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETFL		 3			/* get file->f_flags */
332663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETFL		 4			/* set file->f_flags */
333663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
334663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETLK		 14
335663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETLK		 6
336663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETLKW		 7
337663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
338663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETOWN		 24			/*  for sockets. */
339663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETOWN		 23			/*  for sockets. */
340663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETSIG		 10			/*  for sockets. */
341663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETSIG		 11			/*  for sockets. */
342663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
343663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETOWN_EX		15
344663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETOWN_EX		16
345663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
346663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETLK64		33			/*  using 'struct flock64' */
347663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETLK64		34
348663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETLKW64		35
349663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
350663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* for F_[GET|SET]FL */
351663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FD_CLOEXEC	 1		/* actually anything with low bit set goes */
352663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
353663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_LINUX_SPECIFIC_BASE	1024
354663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
355663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_f_owner_ex {
356663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	int	type;
357663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_pid_t	pid;
358663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
359663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
360663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
361663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/resource.h
362663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
363663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
364663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_RLIMIT_DATA		2   /* max data size */
365663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_RLIMIT_STACK	3   /* max stack size */
366663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_RLIMIT_CORE		4   /* max core file size */
367663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_RLIMIT_NOFILE	5   /* max number of open files */
368663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
369663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
370663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/socket.h
371663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
372663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
373663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SOL_SOCKET	0xffff
374436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
375663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SO_TYPE	0x1008
376663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
377436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SO_ATTACH_FILTER	26
378436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
379663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
380663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-i386/sockios.h
381663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
382663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
383663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIOCSPGRP           0x8902
384663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIOCGPGRP           0x8904
385663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIOCGSTAMP          0x8906      /* Get stamp (timeval) */
386663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIOCGSTAMPNS        0x8907      /* Get stamp (timespec) */
387663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
388663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
389663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/stat.h
390663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
391663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
392663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_stat {
393663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned	st_dev;
394663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_pad1[3];		/* Reserved for network id */
395663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_ino;
396663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_mode;
397663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_nlink;
398663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_uid;
399663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_gid;
400663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned 	st_rdev;
401663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_pad2[2];
402663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_size;
403663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_pad3;
404663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	/*
405663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
406663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 * but we don't have it under Linux.
407663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 */
408663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_atime;
409663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_atime_nsec;
410663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_mtime;
411663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_mtime_nsec;
412663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_ctime;
413663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_ctime_nsec;
414663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_blksize;
415663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_blocks;
416663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_pad4[14];
417663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
418663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
419663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*
420663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * This matches struct stat64 in glibc2.1, hence the absolutely insane
421663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * amounts of padding around dev_t's.  The memory layout is the same as of
422663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * struct stat of the 64-bit kernel.
423663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng */
424663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
425663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_stat64 {
426663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_dev;
427663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_pad0[3];	/* Reserved for st_dev expansion  */
428663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
429663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long long	st_ino;
430663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
431663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_mode;
432663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_nlink;
433663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
434663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_uid;
435663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_gid;
436663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
437663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_rdev;
438663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_pad1[3];	/* Reserved for st_rdev expansion  */
439663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
440663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long long	st_size;
441663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
442663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	/*
443663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
444663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 * but we don't have it under Linux.
445663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 */
446663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_atime;
447663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_atime_nsec;	/* Reserved for st_atime expansion  */
448663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
449663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_mtime;
450663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_mtime_nsec;	/* Reserved for st_mtime expansion  */
451663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
452663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_ctime;
453663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_ctime_nsec;	/* Reserved for st_ctime expansion  */
454663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
455663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_blksize;
456663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_pad2;
457663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
458663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long long	st_blocks;
459663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
460663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
461663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
462663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/statfs.h
463663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
464663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
465663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_statfs {
466663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_type;
467663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_bsize;
468663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_frsize;	/* Fragment size - unsupported */
469663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_blocks;
470663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_bfree;
471663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_files;
472663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_ffree;
473663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_bavail;
474663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
475663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	/* Linux specials */
476663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_fsid_t	f_fsid;
477663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_namelen;
478663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_spare[6];
479663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
480663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
481663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
482663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/termios.h
483663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
484663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
485663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_winsize {
486663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short ws_row;
487663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short ws_col;
488663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short ws_xpixel;
489663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short ws_ypixel;
490663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
491663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
492663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define NCC	8
493663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define NCCS	23
494663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_termio {
495663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short c_iflag;		/* input mode flags */
496663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short c_oflag;		/* output mode flags */
497663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short c_cflag;		/* control mode flags */
498663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short c_lflag;		/* local mode flags */
499663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	char c_line;			/* line discipline */
500663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned char c_cc[NCCS];	/* control characters */
501663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
502663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
503663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
504663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
505663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/termbits.h
506663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
507663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
508663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned char   vki_cc_t;
509663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned long   vki_speed_t;
510663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned long   vki_tcflag_t;
511663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
512663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_termios {
513663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_tcflag_t c_iflag;		/* input mode flags */
514663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_tcflag_t c_oflag;		/* output mode flags */
515663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_tcflag_t c_cflag;		/* control mode flags */
516663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_tcflag_t c_lflag;		/* local mode flags */
517663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_cc_t c_line;			/* line discipline */
518663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_cc_t c_cc[NCCS];		/* control characters */
519663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
520663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
521663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
522663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ioctl.h
523663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
524663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
525663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NRBITS		8
526663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_TYPEBITS	8
5272ca80a6a6fc069acdb73186e8e578dbf8f46af80Dmitriy Ivanov#define _VKI_IOC_SIZEBITS	13
5282ca80a6a6fc069acdb73186e8e578dbf8f46af80Dmitriy Ivanov#define _VKI_IOC_DIRBITS	3
529663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
530663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NRMASK		((1 << _VKI_IOC_NRBITS)-1)
531663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_TYPEMASK	((1 << _VKI_IOC_TYPEBITS)-1)
532663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_SIZEMASK	((1 << _VKI_IOC_SIZEBITS)-1)
533663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_DIRMASK	((1 << _VKI_IOC_DIRBITS)-1)
534663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
535663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NRSHIFT	0
536663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_TYPESHIFT	(_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
537663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_SIZESHIFT	(_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
538663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_DIRSHIFT	(_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
539663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
540663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NONE	1U
5412ca80a6a6fc069acdb73186e8e578dbf8f46af80Dmitriy Ivanov#define _VKI_IOC_READ	2U
5422ca80a6a6fc069acdb73186e8e578dbf8f46af80Dmitriy Ivanov#define _VKI_IOC_WRITE	4U
543663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
544663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC(dir,type,nr,size) \
545663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	(((dir)  << _VKI_IOC_DIRSHIFT) | \
546663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ((type) << _VKI_IOC_TYPESHIFT) | \
547663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ((nr)   << _VKI_IOC_NRSHIFT) | \
548663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ((size) << _VKI_IOC_SIZESHIFT))
549663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
550663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* provoke compile error for invalid uses of size argument */
551663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengextern unsigned int __VKI_invalid_size_argument_for_IOC;
552663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* used to create numbers */
553663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IO(type,nr)	_VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
554663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
555663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOW(type,nr,size)	_VKI_IOC(_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
556663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOWR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
557663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
558663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* used to decode ioctl numbers.. */
559663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_DIR(nr)	(((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
560663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_TYPE(nr)	(((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK)
561663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NR(nr)		(((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK)
562663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_SIZE(nr)	(((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
563663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
564663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
565663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ioctls.h
566663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
567663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
568663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCGETA		0x5401
569663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETA		0x5402	/* Clashes with SNDCTL_TMR_START sound ioctl */
570663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETAW		0x5403
571663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETAF		0x5404
572663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
573663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSBRK		0x5405
574663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCXONC		0x5406
575663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCFLSH		0x5407
576663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
577663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCGETS		0x540d
578663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETS		0x540e
579663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETSW		0x540f
580663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETSF		0x5410
581663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
582663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCEXCL		0x740d		/* set exclusive use of tty */
583663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCNXCL		0x740e		/* reset exclusive use of tty */
584663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCOUTQ		0x7472		/* output queue size */
585663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSTI		0x5472		/* simulate terminal input */
586663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMGET		0x741d		/* get all modem bits */
587663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMBIS		0x741b		/* bis modem bits */
588663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMBIC		0x741c		/* bic modem bits */
589663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMSET		0x741a		/* set all modem bits */
590663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCPKT		0x5470		/* pty: set/clear packet mode */
591663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_DATA		0x00	/* data packet */
592663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_FLUSHREAD		0x01	/* flush packet */
593663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_FLUSHWRITE		0x02	/* flush packet */
594663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_STOP		0x04	/* stop output */
595663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_START		0x08	/* start output */
596663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_NOSTOP		0x10	/* no more ^S, ^Q */
597663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_DOSTOP		0x20	/* now do ^S ^Q */
598663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* #define  TIOCPKT_IOCTL		0x40	state change of pty driver */
599663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSWINSZ	_VKI_IOW('t', 103, struct vki_winsize)	/* set window size */
600663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGWINSZ	_VKI_IOR('t', 104, struct vki_winsize)	/* get window size */
601663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCNOTTY	0x5471		/* void tty association */
602663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSETD	0x7401
603663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGETD	0x7400
604663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
605663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIOCLEX		0x6601
606663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIONCLEX		0x6602
607663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIOASYNC		0x667d
608663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIONBIO		0x667e
609663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIOQSIZE		0x667f
610663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
611663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGLTC		0x7474			/* get special local chars */
612663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSLTC		0x7475			/* set special local chars */
613663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSPGRP		_VKI_IOW('t', 118, int)	/* set pgrp of tty */
614663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGPGRP		_VKI_IOR('t', 119, int)	/* get pgrp of tty */
615663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCCONS		_VKI_IOW('t', 120, int)	/* become virtual console */
616663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
617663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIONREAD		0x467f
618663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCINQ		FIONREAD
619663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
620663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGETP        	0x7408
621663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSETP        	0x7409
622663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSETN        	0x740a			/* TIOCSETP wo flush */
623663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
624663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSBRK	0x5427  /* BSD compatibility */
625663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCCBRK	0x5428  /* BSD compatibility */
626663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGSID	0x7416  /* Return the session ID of FD */
627663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGPTN	_VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
628663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSPTLCK	_VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
629663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
630663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* I hope the range from 0x5480 on is free ... */
631663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSCTTY		0x5480		/* become controlling tty */
632663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGSOFTCAR	0x5481
633663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSSOFTCAR	0x5482
634663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCLINUX		0x5483
635663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGSERIAL		0x5484
636663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSSERIAL		0x5485
637663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSBRKP		0x5486	/* Needed for POSIX tcsendbreak() */
638663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERCONFIG	0x5488
639663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERGWILD	0x5489
640663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERSWILD	0x548a
641663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGLCKTRMIOS	0x548b
642663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSLCKTRMIOS	0x548c
643663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERGSTRUCT	0x548d /* For debugging only */
644663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERGETLSR   	0x548e /* Get line status register */
645663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERGETMULTI 	0x548f /* Get multiport config  */
646663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERSETMULTI 	0x5490 /* Set multiport config */
647663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMIWAIT      	0x5491 /* wait for a change on serial input line(s) */
648663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGICOUNT     	0x5492 /* read serial port inline interrupt counts */
649663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGHAYESESP	0x5493 /* Get Hayes ESP configuration */
650663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSHAYESESP	0x5494 /* Set Hayes ESP configuration */
651663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
652663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
653663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From asm-generic/poll.h
654663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
655663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
656663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* These are specified by iBCS2 */
657663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_POLLIN		0x0001
658663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
659663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_pollfd {
660663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	int fd;
661663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	short events;
662663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	short revents;
663663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
664663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
665663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ucontext.h
666663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
667663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
668663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_ucontext {
669663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long		uc_flags;
670663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	struct vki_ucontext    *uc_link;
671663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_stack_t		uc_stack;
672663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	struct vki_sigcontext	uc_mcontext;
673663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_sigset_t		uc_sigmask;	/* mask last for extensibility */
674663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
675663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
676663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// CAB: TODO
677663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef void vki_modify_ldt_t;
678663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
679663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
680663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ipcbuf.h
681663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
682663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
683663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_ipc64_perm
684663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{
685663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_key_t  key;
686663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_uid_t  uid;
687663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_gid_t  gid;
688663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_uid_t  cuid;
689663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_gid_t  cgid;
690663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_mode_t mode;
691663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned short  seq;
692663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned short  __pad1;
693663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused1;
694663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused2;
695663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
696663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
697663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
698663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/sembuf.h
699663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
700663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
701663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_semid64_ds {
702663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        struct vki_ipc64_perm sem_perm;             /* permissions .. see ipc.h */
703663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t sem_otime;              /* last semop time */
704663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t sem_ctime;              /* last change time */
705663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   sem_nsems;              /* no. of semaphores in array */
706663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused1;
707663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused2;
708663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
709663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
710663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
711663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
712663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/msgbuf.h
713663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
714663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
715663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_msqid64_ds {
716663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	struct vki_ipc64_perm msg_perm;
717663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_time_t msg_stime;	/* last msgsnd time */
718663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	__unused1;
719663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_time_t msg_rtime;	/* last msgrcv time */
720663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	__unused2;
721663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_time_t msg_ctime;	/* last change time */
722663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	__unused3;
723663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  msg_cbytes;	/* current number of bytes on queue */
724663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  msg_qnum;	/* number of messages in queue */
725663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  msg_qbytes;	/* max number of bytes on queue */
726663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_pid_t msg_lspid;	/* pid of last msgsnd */
727663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_pid_t msg_lrpid;	/* last receive pid */
728663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  __unused4;
729663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  __unused5;
730663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
731663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
732663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
733663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ipc.h
734663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
735663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
736663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_ipc_kludge {
737663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        struct vki_msgbuf __user *msgp;
738663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        long msgtyp;
739663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
740663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
741663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SEMOP            1
742663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SEMGET           2
743663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SEMCTL           3
744663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SEMTIMEDOP       4
745663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MSGSND          11
746663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MSGRCV          12
747663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MSGGET          13
748663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MSGCTL          14
749663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SHMAT           21
750663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SHMDT           22
751663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SHMGET          23
752663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SHMCTL          24
753663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
754663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
755663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/shmbuf.h
756663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
757663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
758663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_shmid64_ds {
759663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        struct vki_ipc64_perm       shm_perm;       /* operation perms */
760663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        vki_size_t                  shm_segsz;      /* size of segment (bytes) */
761663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t         shm_atime;      /* last attach time */
762663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t         shm_dtime;      /* last detach time */
763663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t         shm_ctime;      /* last change time */
764663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_pid_t          shm_cpid;       /* pid of creator */
765663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_pid_t          shm_lpid;       /* pid of last operator */
766663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           shm_nattch;     /* no. of current attaches */
767663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           __unused1;
768663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           __unused2;
769663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
770663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
771663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_shminfo64 {
772663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmmax;
773663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmmin;
774663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmmni;
775663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmseg;
776663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmall;
777663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused1;
778663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused2;
779663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused3;
780663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused4;
781663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
782663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
783663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ptrace.h
784663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
785663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
786663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_pt_regs {
787663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef CONFIG_32BIT
788663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        /* Pad bytes for argument save space on the stack. */
789663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long pad0[6];
790663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
791663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        /* Saved main processor registers. */
792663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long regs[32];
793663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
794663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        /* Saved special registers. */
795663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_status;
796663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long hi;
797663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long lo;
798663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef CONFIG_CPU_HAS_SMARTMIPS
799663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long acx;
800663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
801663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_badvaddr;
802663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_cause;
803663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_epc;
804663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef CONFIG_MIPS_MT_SMTC
805663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_tcstatus;
806663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif /* CONFIG_MIPS_MT_SMTC */
807663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef CONFIG_CPU_CAVIUM_OCTEON
808663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long long mpl[3];        /* MTM{0,1,2} */
809663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long long mtp[3];        /* MTP{0,1,2} */
810663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
811663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} __attribute__ ((aligned (8)));
812663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
813663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
814663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define vki_user_regs_struct vki_pt_regs
815663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
816663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_lo  	lo
817663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_hi  	hi
818663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//#define MIPS_pc		regs[32]
819663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r31		regs[31]
820663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r30		regs[30]
821663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r29		regs[29]
822663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r28		regs[28]
823663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r27		regs[27]
824663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r26		regs[26]
825663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r25		regs[25]
826663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r24		regs[24]
827663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r23		regs[23]
828663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r22		regs[22]
829663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r21		regs[21]
830663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r20		regs[20]
831663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r19		regs[19]
832663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r18		regs[18]
833663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r17		regs[17]
834663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r16		regs[16]
835663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r15		regs[15]
836663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r14		regs[14]
837663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r13		regs[13]
838663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r12		regs[12]
839663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r11		regs[11]
840663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r10		regs[10]
841663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r9		regs[9]
842663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r8		regs[8]
843663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r7		regs[7]
844663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r6		regs[6]
845663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r5		regs[5]
846663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r4		regs[4]
847663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r3		regs[3]
848663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r2		regs[2]
849663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r1		regs[1]
850663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r0		regs[0]
851663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
852663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PTRACE_GETREGS            12
853663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PTRACE_SETREGS            13
854663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PTRACE_GETFPREGS          14
855663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PTRACE_SETFPREGS          15
856663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
857663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/elf.h
858663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
859663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned long vki_elf_greg_t;
860663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
861663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t))
862663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_ELF_NFPREG			33	/* includes fpscr */
863663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
864663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG];
865663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
866663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef double vki_elf_fpreg_t;
867663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef vki_elf_fpreg_t vki_elf_fpregset_t[VKI_ELF_NFPREG];
868663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
869663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef struct vki_user_fxsr_struct vki_elf_fpxregset_t;
870663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
871663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_AT_SYSINFO		32
872663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
873663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-generic/siginfo.h
874663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
875663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define HAVE_ARCH_SIGINFO_T
876663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
877663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef union vki_sigval {
878663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	int sival_int;
879663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	void __user *sival_ptr;
880663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} vki_sigval_t;
881663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
882663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifndef __VKI_ARCH_SI_PREAMBLE_SIZE
883663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define __VKI_ARCH_SI_PREAMBLE_SIZE	(3 * sizeof(int))
884663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
885663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
886663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SI_MAX_SIZE	128
887663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
888663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifndef VKI_SI_PAD_SIZE
889663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SI_PAD_SIZE	((VKI_SI_MAX_SIZE - __VKI_ARCH_SI_PREAMBLE_SIZE) / sizeof(int))
890663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
891663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
892663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifndef __VKI_ARCH_SI_UID_T
893663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define __VKI_ARCH_SI_UID_T	vki_uid_t
894663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
895663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
896663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifndef __VKI_ARCH_SI_BAND_T
897663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define __VKI_ARCH_SI_BAND_T long
898663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
899663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
900663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef struct vki_siginfo {
901663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        int si_signo;
902663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        int si_code;
903663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        int si_errno;
904663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        int __pad0[VKI_SI_MAX_SIZE / sizeof(int) - VKI_SI_PAD_SIZE - 3];
905663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
906663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        union {
907663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                int _pad[VKI_SI_PAD_SIZE];
908663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
909663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* kill() */
910663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
911663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_pid_t _pid;             /* sender's pid */
912663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        __VKI_ARCH_SI_UID_T _uid;   /* sender's uid */
913663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _kill;
914663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
915663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* POSIX.1b timers */
916663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
917663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_timer_t _tid;           /* timer id */
918663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _overrun;           /* overrun count */
919663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        char _pad[sizeof( __VKI_ARCH_SI_UID_T) - sizeof(int)];
920663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_sigval_t _sigval;       /* same as below */
921663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _sys_private;       /* not to be passed to user */
922663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _timer;
923663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
924663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* POSIX.1b signals */
925663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
926663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_pid_t _pid;             /* sender's pid */
927663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        __VKI_ARCH_SI_UID_T _uid;   /* sender's uid */
928663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_sigval_t _sigval;
929663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _rt;
930663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
931663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* SIGCHLD */
932663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
933663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_pid_t _pid;             /* which child */
934663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        __VKI_ARCH_SI_UID_T _uid;   /* sender's uid */
935663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _status;            /* exit code */
936663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_clock_t _utime;
937663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_clock_t _stime;
938663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _sigchld;
939663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
940663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* IRIX SIGCHLD */
941663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
942663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_pid_t _pid;             /* which child */
943663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_clock_t _utime;
944663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _status;            /* exit code */
945663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_clock_t _stime;
946663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _irix_sigchld;
947663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
948663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
949663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
950663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        void __user *_addr; /* faulting insn/memory ref. */
951663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef __ARCH_SI_TRAPNO
952663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _trapno;    /* TRAP # which caused the signal */
953663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
954663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _sigfault;
955663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
956663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* SIGPOLL, SIGXFSZ (To do ...)  */
957663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
958663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        __VKI_ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */
959663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _fd;
960663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _sigpoll;
961663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        } _sifields;
962663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} vki_siginfo_t;
963663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
964663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
965663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm/break.h
966663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
967663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_BRK_OVERFLOW         6    /* Overflow check */
968663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_BRK_DIVZERO          7    /* Divide by zero check */
969663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
970436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
971436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.6.35.5/arch/mips/include/socket.h
972436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
973436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovenum vki_sock_type {
974436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        VKI_SOCK_STREAM = 2,
975436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov        // [[others omitted]]
976436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
977436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define ARCH_HAS_SOCKET_TYPES 1
978436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
979436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
980436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.13.0/include/asm/errno.h
981436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//----------------------------------------------------------------------
982436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
983436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define	VKI_ENOSYS       89  /* Function not implemented */
984436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define	VKI_EOVERFLOW    79  /* Value too large for defined data type */
985663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
986436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif // __VKI_MIPS32_LINUX_H
987663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
988663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*--------------------------------------------------------------------*/
989663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*--- end                                       vki-mips32-linux.h ---*/
990663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*--------------------------------------------------------------------*/
991