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