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
10663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   Copyright (C) 2010-2012 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
42663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
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//----------------------------------------------------------------------
82663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/arch/mips/include/asm-generic/shmparam.h
83663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
84663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
85663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SHMLBA  SHM_ALIGNMENT
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
312663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_RDONLY		   00
313663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_WRONLY		   01
314663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_RDWR		   02
315663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
316663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_CREAT		0x0100		/* not fcntl */
317663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_EXCL		0x0400		/* not fcntl */
318663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
319663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_TRUNC		0x0200	/* not fcntl */
320663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
321663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_APPEND		0x0008
322663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_NONBLOCK		0x0080
323663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_O_LARGEFILE     	0x2000
324663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
325663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_AT_FDCWD            -100
326663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
327663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_DUPFD		 0			/* dup */
328663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETFD		 1			/* get close_on_exec */
329663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETFD		 2			/* set/clear close_on_exec */
330663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETFL		 3			/* get file->f_flags */
331663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETFL		 4			/* set file->f_flags */
332663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
333663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETLK		 14
334663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETLK		 6
335663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETLKW		 7
336663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
337663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETOWN		 24			/*  for sockets. */
338663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETOWN		 23			/*  for sockets. */
339663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETSIG		 10			/*  for sockets. */
340663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETSIG		 11			/*  for sockets. */
341663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
342663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETOWN_EX		15
343663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETOWN_EX		16
344663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
345663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETLK64		33			/*  using 'struct flock64' */
346663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETLK64		34
347663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETLKW64		35
348663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
349663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* for F_[GET|SET]FL */
350663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FD_CLOEXEC	 1		/* actually anything with low bit set goes */
351663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
352663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_LINUX_SPECIFIC_BASE	1024
353663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
354663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_f_owner_ex {
355663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	int	type;
356663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_pid_t	pid;
357663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
358663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
359663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
360663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/resource.h
361663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
362663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
363663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_RLIMIT_DATA		2   /* max data size */
364663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_RLIMIT_STACK	3   /* max stack size */
365663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_RLIMIT_CORE		4   /* max core file size */
366663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_RLIMIT_NOFILE	5   /* max number of open files */
367663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
368663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
369663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/socket.h
370663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
371663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
372663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SOL_SOCKET	0xffff
373663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SO_TYPE	0x1008
374663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
375663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
376663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-i386/sockios.h
377663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
378663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
379663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIOCSPGRP           0x8902
380663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIOCGPGRP           0x8904
381663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIOCGSTAMP          0x8906      /* Get stamp (timeval) */
382663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SIOCGSTAMPNS        0x8907      /* Get stamp (timespec) */
383663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
384663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
385663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/stat.h
386663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
387663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
388663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_stat {
389663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned	st_dev;
390663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_pad1[3];		/* Reserved for network id */
391663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_ino;
392663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_mode;
393663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_nlink;
394663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_uid;
395663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_gid;
396663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned 	st_rdev;
397663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_pad2[2];
398663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_size;
399663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_pad3;
400663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	/*
401663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
402663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 * but we don't have it under Linux.
403663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 */
404663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_atime;
405663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_atime_nsec;
406663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_mtime;
407663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_mtime_nsec;
408663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_ctime;
409663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_ctime_nsec;
410663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_blksize;
411663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_blocks;
412663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_pad4[14];
413663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
414663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
415663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*
416663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * This matches struct stat64 in glibc2.1, hence the absolutely insane
417663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * amounts of padding around dev_t's.  The memory layout is the same as of
418663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * struct stat of the 64-bit kernel.
419663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng */
420663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
421663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_stat64 {
422663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_dev;
423663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_pad0[3];	/* Reserved for st_dev expansion  */
424663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
425663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long long	st_ino;
426663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
427663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_mode;
428663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_nlink;
429663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
430663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_uid;
431663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned int	st_gid;
432663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
433663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_rdev;
434663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_pad1[3];	/* Reserved for st_rdev expansion  */
435663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
436663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long long	st_size;
437663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
438663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	/*
439663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
440663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 * but we don't have it under Linux.
441663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 */
442663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_atime;
443663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_atime_nsec;	/* Reserved for st_atime expansion  */
444663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
445663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_mtime;
446663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_mtime_nsec;	/* Reserved for st_mtime expansion  */
447663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
448663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		st_ctime;
449663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_ctime_nsec;	/* Reserved for st_ctime expansion  */
450663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
451663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_blksize;
452663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	st_pad2;
453663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
454663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long long	st_blocks;
455663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
456663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
457663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
458663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/statfs.h
459663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
460663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
461663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_statfs {
462663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_type;
463663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_bsize;
464663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_frsize;	/* Fragment size - unsupported */
465663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_blocks;
466663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_bfree;
467663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_files;
468663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_ffree;
469663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_bavail;
470663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
471663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	/* Linux specials */
472663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_fsid_t	f_fsid;
473663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_namelen;
474663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	long		f_spare[6];
475663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
476663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
477663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
478663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/termios.h
479663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
480663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
481663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_winsize {
482663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short ws_row;
483663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short ws_col;
484663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short ws_xpixel;
485663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short ws_ypixel;
486663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
487663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
488663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define NCC	8
489663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define NCCS	23
490663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_termio {
491663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short c_iflag;		/* input mode flags */
492663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short c_oflag;		/* output mode flags */
493663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short c_cflag;		/* control mode flags */
494663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned short c_lflag;		/* local mode flags */
495663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	char c_line;			/* line discipline */
496663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned char c_cc[NCCS];	/* control characters */
497663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
498663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
499663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
500663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
501663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/termbits.h
502663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
503663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
504663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned char   vki_cc_t;
505663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned long   vki_speed_t;
506663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned long   vki_tcflag_t;
507663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
508663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_termios {
509663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_tcflag_t c_iflag;		/* input mode flags */
510663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_tcflag_t c_oflag;		/* output mode flags */
511663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_tcflag_t c_cflag;		/* control mode flags */
512663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_tcflag_t c_lflag;		/* local mode flags */
513663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_cc_t c_line;			/* line discipline */
514663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_cc_t c_cc[NCCS];		/* control characters */
515663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
516663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
517663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
518663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ioctl.h
519663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
520663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
521663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NRBITS		8
522663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_TYPEBITS	8
523663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_SIZEBITS	14
524663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_DIRBITS	2
525663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
526663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NRMASK		((1 << _VKI_IOC_NRBITS)-1)
527663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_TYPEMASK	((1 << _VKI_IOC_TYPEBITS)-1)
528663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_SIZEMASK	((1 << _VKI_IOC_SIZEBITS)-1)
529663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_DIRMASK	((1 << _VKI_IOC_DIRBITS)-1)
530663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
531663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NRSHIFT	0
532663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_TYPESHIFT	(_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
533663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_SIZESHIFT	(_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
534663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_DIRSHIFT	(_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
535663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
536663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NONE	1U
537663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_WRITE	2U
538663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_READ	4U
539663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
540663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC(dir,type,nr,size) \
541663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	(((dir)  << _VKI_IOC_DIRSHIFT) | \
542663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ((type) << _VKI_IOC_TYPESHIFT) | \
543663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ((nr)   << _VKI_IOC_NRSHIFT) | \
544663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ((size) << _VKI_IOC_SIZESHIFT))
545663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
546663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* provoke compile error for invalid uses of size argument */
547663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengextern unsigned int __VKI_invalid_size_argument_for_IOC;
548663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* used to create numbers */
549663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IO(type,nr)	_VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
550663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
551663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOW(type,nr,size)	_VKI_IOC(_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
552663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOWR(type,nr,size)	_VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
553663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
554663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* used to decode ioctl numbers.. */
555663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_DIR(nr)	(((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
556663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_TYPE(nr)	(((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK)
557663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_NR(nr)		(((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK)
558663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define _VKI_IOC_SIZE(nr)	(((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
559663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
560663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
561663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ioctls.h
562663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
563663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
564663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCGETA		0x5401
565663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETA		0x5402	/* Clashes with SNDCTL_TMR_START sound ioctl */
566663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETAW		0x5403
567663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETAF		0x5404
568663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
569663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSBRK		0x5405
570663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCXONC		0x5406
571663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCFLSH		0x5407
572663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
573663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCGETS		0x540d
574663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETS		0x540e
575663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETSW		0x540f
576663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSETSF		0x5410
577663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
578663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCEXCL		0x740d		/* set exclusive use of tty */
579663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCNXCL		0x740e		/* reset exclusive use of tty */
580663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCOUTQ		0x7472		/* output queue size */
581663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSTI		0x5472		/* simulate terminal input */
582663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMGET		0x741d		/* get all modem bits */
583663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMBIS		0x741b		/* bis modem bits */
584663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMBIC		0x741c		/* bic modem bits */
585663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMSET		0x741a		/* set all modem bits */
586663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCPKT		0x5470		/* pty: set/clear packet mode */
587663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_DATA		0x00	/* data packet */
588663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_FLUSHREAD		0x01	/* flush packet */
589663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_FLUSHWRITE		0x02	/* flush packet */
590663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_STOP		0x04	/* stop output */
591663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_START		0x08	/* start output */
592663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_NOSTOP		0x10	/* no more ^S, ^Q */
593663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define	 VKI_TIOCPKT_DOSTOP		0x20	/* now do ^S ^Q */
594663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* #define  TIOCPKT_IOCTL		0x40	state change of pty driver */
595663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSWINSZ	_VKI_IOW('t', 103, struct vki_winsize)	/* set window size */
596663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGWINSZ	_VKI_IOR('t', 104, struct vki_winsize)	/* get window size */
597663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCNOTTY	0x5471		/* void tty association */
598663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSETD	0x7401
599663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGETD	0x7400
600663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
601663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIOCLEX		0x6601
602663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIONCLEX		0x6602
603663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIOASYNC		0x667d
604663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIONBIO		0x667e
605663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIOQSIZE		0x667f
606663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
607663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGLTC		0x7474			/* get special local chars */
608663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSLTC		0x7475			/* set special local chars */
609663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSPGRP		_VKI_IOW('t', 118, int)	/* set pgrp of tty */
610663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGPGRP		_VKI_IOR('t', 119, int)	/* get pgrp of tty */
611663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCCONS		_VKI_IOW('t', 120, int)	/* become virtual console */
612663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
613663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_FIONREAD		0x467f
614663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCINQ		FIONREAD
615663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
616663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGETP        	0x7408
617663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSETP        	0x7409
618663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSETN        	0x740a			/* TIOCSETP wo flush */
619663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
620663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSBRK	0x5427  /* BSD compatibility */
621663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCCBRK	0x5428  /* BSD compatibility */
622663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGSID	0x7416  /* Return the session ID of FD */
623663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGPTN	_VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
624663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSPTLCK	_VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
625663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
626663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* I hope the range from 0x5480 on is free ... */
627663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSCTTY		0x5480		/* become controlling tty */
628663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGSOFTCAR	0x5481
629663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSSOFTCAR	0x5482
630663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCLINUX		0x5483
631663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGSERIAL		0x5484
632663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSSERIAL		0x5485
633663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TCSBRKP		0x5486	/* Needed for POSIX tcsendbreak() */
634663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERCONFIG	0x5488
635663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERGWILD	0x5489
636663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERSWILD	0x548a
637663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGLCKTRMIOS	0x548b
638663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSLCKTRMIOS	0x548c
639663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERGSTRUCT	0x548d /* For debugging only */
640663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERGETLSR   	0x548e /* Get line status register */
641663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERGETMULTI 	0x548f /* Get multiport config  */
642663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSERSETMULTI 	0x5490 /* Set multiport config */
643663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCMIWAIT      	0x5491 /* wait for a change on serial input line(s) */
644663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGICOUNT     	0x5492 /* read serial port inline interrupt counts */
645663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCGHAYESESP	0x5493 /* Get Hayes ESP configuration */
646663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_TIOCSHAYESESP	0x5494 /* Set Hayes ESP configuration */
647663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
648663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
649663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From asm-generic/poll.h
650663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
651663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
652663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* These are specified by iBCS2 */
653663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_POLLIN		0x0001
654663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
655663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_pollfd {
656663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	int fd;
657663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	short events;
658663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	short revents;
659663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
660663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
661663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ucontext.h
662663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
663663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
664663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_ucontext {
665663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long		uc_flags;
666663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	struct vki_ucontext    *uc_link;
667663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_stack_t		uc_stack;
668663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	struct vki_sigcontext	uc_mcontext;
669663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	vki_sigset_t		uc_sigmask;	/* mask last for extensibility */
670663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
671663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
672663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// CAB: TODO
673663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef void vki_modify_ldt_t;
674663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
675663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
676663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ipcbuf.h
677663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
678663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
679663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_ipc64_perm
680663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{
681663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_key_t  key;
682663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_uid_t  uid;
683663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_gid_t  gid;
684663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_uid_t  cuid;
685663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_gid_t  cgid;
686663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_mode_t mode;
687663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned short  seq;
688663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned short  __pad1;
689663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused1;
690663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused2;
691663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
692663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
693663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
694663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/sembuf.h
695663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
696663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
697663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_semid64_ds {
698663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        struct vki_ipc64_perm sem_perm;             /* permissions .. see ipc.h */
699663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t sem_otime;              /* last semop time */
700663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t sem_ctime;              /* last change time */
701663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   sem_nsems;              /* no. of semaphores in array */
702663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused1;
703663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused2;
704663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
705663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
706663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
707663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
708663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/msgbuf.h
709663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
710663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
711663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_msqid64_ds {
712663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	struct vki_ipc64_perm msg_perm;
713663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_time_t msg_stime;	/* last msgsnd time */
714663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	__unused1;
715663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_time_t msg_rtime;	/* last msgrcv time */
716663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	__unused2;
717663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_time_t msg_ctime;	/* last change time */
718663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long	__unused3;
719663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  msg_cbytes;	/* current number of bytes on queue */
720663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  msg_qnum;	/* number of messages in queue */
721663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  msg_qbytes;	/* max number of bytes on queue */
722663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_pid_t msg_lspid;	/* pid of last msgsnd */
723663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	__vki_kernel_pid_t msg_lrpid;	/* last receive pid */
724663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  __unused4;
725663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	unsigned long  __unused5;
726663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
727663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
728663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
729663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ipc.h
730663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
731663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
732663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_ipc_kludge {
733663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        struct vki_msgbuf __user *msgp;
734663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        long msgtyp;
735663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
736663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
737663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SEMOP            1
738663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SEMGET           2
739663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SEMCTL           3
740663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SEMTIMEDOP       4
741663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MSGSND          11
742663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MSGRCV          12
743663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MSGGET          13
744663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_MSGCTL          14
745663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SHMAT           21
746663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SHMDT           22
747663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SHMGET          23
748663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SHMCTL          24
749663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
750663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
751663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/shmbuf.h
752663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
753663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
754663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_shmid64_ds {
755663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        struct vki_ipc64_perm       shm_perm;       /* operation perms */
756663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        vki_size_t                  shm_segsz;      /* size of segment (bytes) */
757663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t         shm_atime;      /* last attach time */
758663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t         shm_dtime;      /* last detach time */
759663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_time_t         shm_ctime;      /* last change time */
760663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_pid_t          shm_cpid;       /* pid of creator */
761663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        __vki_kernel_pid_t          shm_lpid;       /* pid of last operator */
762663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           shm_nattch;     /* no. of current attaches */
763663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           __unused1;
764663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long           __unused2;
765663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
766663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
767663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_shminfo64 {
768663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmmax;
769663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmmin;
770663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmmni;
771663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmseg;
772663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   shmall;
773663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused1;
774663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused2;
775663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused3;
776663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long   __unused4;
777663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
778663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
779663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/ptrace.h
780663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
781663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
782663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_pt_regs {
783663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef CONFIG_32BIT
784663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        /* Pad bytes for argument save space on the stack. */
785663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long pad0[6];
786663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
787663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        /* Saved main processor registers. */
788663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long regs[32];
789663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
790663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        /* Saved special registers. */
791663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_status;
792663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long hi;
793663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long lo;
794663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef CONFIG_CPU_HAS_SMARTMIPS
795663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long acx;
796663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
797663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_badvaddr;
798663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_cause;
799663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_epc;
800663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef CONFIG_MIPS_MT_SMTC
801663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long cp0_tcstatus;
802663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif /* CONFIG_MIPS_MT_SMTC */
803663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef CONFIG_CPU_CAVIUM_OCTEON
804663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long long mpl[3];        /* MTM{0,1,2} */
805663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        unsigned long long mtp[3];        /* MTP{0,1,2} */
806663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
807663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} __attribute__ ((aligned (8)));
808663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
809663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
810663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define vki_user_regs_struct vki_pt_regs
811663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
812663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_lo  	lo
813663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_hi  	hi
814663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//#define MIPS_pc		regs[32]
815663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r31		regs[31]
816663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r30		regs[30]
817663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r29		regs[29]
818663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r28		regs[28]
819663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r27		regs[27]
820663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r26		regs[26]
821663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r25		regs[25]
822663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r24		regs[24]
823663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r23		regs[23]
824663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r22		regs[22]
825663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r21		regs[21]
826663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r20		regs[20]
827663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r19		regs[19]
828663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r18		regs[18]
829663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r17		regs[17]
830663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r16		regs[16]
831663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r15		regs[15]
832663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r14		regs[14]
833663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r13		regs[13]
834663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r12		regs[12]
835663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r11		regs[11]
836663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r10		regs[10]
837663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r9		regs[9]
838663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r8		regs[8]
839663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r7		regs[7]
840663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r6		regs[6]
841663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r5		regs[5]
842663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r4		regs[4]
843663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r3		regs[3]
844663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r2		regs[2]
845663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r1		regs[1]
846663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define MIPS_r0		regs[0]
847663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
848663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PTRACE_GETREGS            12
849663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PTRACE_SETREGS            13
850663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PTRACE_GETFPREGS          14
851663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_PTRACE_SETFPREGS          15
852663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
853663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-mips/elf.h
854663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
855663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef unsigned long vki_elf_greg_t;
856663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
857663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t))
858663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_ELF_NFPREG			33	/* includes fpscr */
859663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
860663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG];
861663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
862663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef double vki_elf_fpreg_t;
863663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef vki_elf_fpreg_t vki_elf_fpregset_t[VKI_ELF_NFPREG];
864663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
865663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef struct vki_user_fxsr_struct vki_elf_fpxregset_t;
866663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
867663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_AT_SYSINFO		32
868663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
869663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm-generic/siginfo.h
870663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
871663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define HAVE_ARCH_SIGINFO_T
872663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
873663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef union vki_sigval {
874663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	int sival_int;
875663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	void __user *sival_ptr;
876663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} vki_sigval_t;
877663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
878663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifndef __VKI_ARCH_SI_PREAMBLE_SIZE
879663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define __VKI_ARCH_SI_PREAMBLE_SIZE	(3 * sizeof(int))
880663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
881663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
882663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SI_MAX_SIZE	128
883663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
884663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifndef VKI_SI_PAD_SIZE
885663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_SI_PAD_SIZE	((VKI_SI_MAX_SIZE - __VKI_ARCH_SI_PREAMBLE_SIZE) / sizeof(int))
886663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
887663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
888663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifndef __VKI_ARCH_SI_UID_T
889663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define __VKI_ARCH_SI_UID_T	vki_uid_t
890663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
891663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
892663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifndef __VKI_ARCH_SI_BAND_T
893663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define __VKI_ARCH_SI_BAND_T long
894663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
895663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
896663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengtypedef struct vki_siginfo {
897663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        int si_signo;
898663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        int si_code;
899663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        int si_errno;
900663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        int __pad0[VKI_SI_MAX_SIZE / sizeof(int) - VKI_SI_PAD_SIZE - 3];
901663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
902663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        union {
903663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                int _pad[VKI_SI_PAD_SIZE];
904663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
905663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* kill() */
906663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
907663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_pid_t _pid;             /* sender's pid */
908663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        __VKI_ARCH_SI_UID_T _uid;   /* sender's uid */
909663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _kill;
910663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
911663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* POSIX.1b timers */
912663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
913663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_timer_t _tid;           /* timer id */
914663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _overrun;           /* overrun count */
915663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        char _pad[sizeof( __VKI_ARCH_SI_UID_T) - sizeof(int)];
916663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_sigval_t _sigval;       /* same as below */
917663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _sys_private;       /* not to be passed to user */
918663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _timer;
919663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
920663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* POSIX.1b signals */
921663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
922663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_pid_t _pid;             /* sender's pid */
923663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        __VKI_ARCH_SI_UID_T _uid;   /* sender's uid */
924663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_sigval_t _sigval;
925663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _rt;
926663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
927663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* SIGCHLD */
928663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
929663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_pid_t _pid;             /* which child */
930663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        __VKI_ARCH_SI_UID_T _uid;   /* sender's uid */
931663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _status;            /* exit code */
932663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_clock_t _utime;
933663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_clock_t _stime;
934663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _sigchld;
935663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
936663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* IRIX SIGCHLD */
937663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
938663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_pid_t _pid;             /* which child */
939663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_clock_t _utime;
940663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _status;            /* exit code */
941663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        vki_clock_t _stime;
942663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _irix_sigchld;
943663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
944663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
945663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
946663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        void __user *_addr; /* faulting insn/memory ref. */
947663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#ifdef __ARCH_SI_TRAPNO
948663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _trapno;    /* TRAP # which caused the signal */
949663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif
950663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _sigfault;
951663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
952663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                /* SIGPOLL, SIGXFSZ (To do ...)  */
953663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                struct {
954663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        __VKI_ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */
955663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                        int _fd;
956663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng                } _sigpoll;
957663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng        } _sifields;
958663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} vki_siginfo_t;
959663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
960663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
961663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// From linux-2.6.35.5/include/asm/break.h
962663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng//----------------------------------------------------------------------
963663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_BRK_OVERFLOW         6    /* Overflow check */
964663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_BRK_DIVZERO          7    /* Divide by zero check */
965663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
966663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#endif // __VKI_MIPS32_LINUX_H
967663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
968663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
969663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*--------------------------------------------------------------------*/
970663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*--- end                                       vki-mips32-linux.h ---*/
971663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/*--------------------------------------------------------------------*/
972