diff options
Diffstat (limited to 'arch/mips/include/uapi/asm')
37 files changed, 4201 insertions, 0 deletions
diff --git a/arch/mips/include/uapi/asm/Kbuild b/arch/mips/include/uapi/asm/Kbuild new file mode 100644 index 00000000000..96fe7395ed8 --- /dev/null +++ b/arch/mips/include/uapi/asm/Kbuild @@ -0,0 +1,41 @@ +# UAPI Header export list +include include/uapi/asm-generic/Kbuild.asm + +generic-y += auxvec.h +generic-y += ipcbuf.h + +header-y += bitfield.h +header-y += bitsperlong.h +header-y += break.h +header-y += byteorder.h +header-y += cachectl.h +header-y += errno.h +header-y += fcntl.h +header-y += inst.h +header-y += ioctl.h +header-y += ioctls.h +header-y += kvm_para.h +header-y += mman.h +header-y += msgbuf.h +header-y += param.h +header-y += poll.h +header-y += posix_types.h +header-y += ptrace.h +header-y += resource.h +header-y += sembuf.h +header-y += setup.h +header-y += sgidefs.h +header-y += shmbuf.h +header-y += sigcontext.h +header-y += siginfo.h +header-y += signal.h +header-y += socket.h +header-y += sockios.h +header-y += stat.h +header-y += statfs.h +header-y += swab.h +header-y += sysmips.h +header-y += termbits.h +header-y += termios.h +header-y += types.h +header-y += unistd.h diff --git a/arch/mips/include/uapi/asm/bitfield.h b/arch/mips/include/uapi/asm/bitfield.h new file mode 100644 index 00000000000..ad9861359ce --- /dev/null +++ b/arch/mips/include/uapi/asm/bitfield.h @@ -0,0 +1,29 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2014 by Ralf Baechle <ralf@linux-mips.org> + */ +#ifndef __UAPI_ASM_BITFIELD_H +#define __UAPI_ASM_BITFIELD_H + +/* + *  * Damn ...  bitfields depend from byteorder :-( + *   */ +#ifdef __MIPSEB__ +#define __BITFIELD_FIELD(field, more)					\ +	field;								\ +	more + +#elif defined(__MIPSEL__) + +#define __BITFIELD_FIELD(field, more)					\ +	more								\ +	field; + +#else /* !defined (__MIPSEB__) && !defined (__MIPSEL__) */ +#error "MIPS but neither __MIPSEL__ nor __MIPSEB__?" +#endif + +#endif /* __UAPI_ASM_BITFIELD_H */ diff --git a/arch/mips/include/uapi/asm/bitsperlong.h b/arch/mips/include/uapi/asm/bitsperlong.h new file mode 100644 index 00000000000..3e4c10a8e78 --- /dev/null +++ b/arch/mips/include/uapi/asm/bitsperlong.h @@ -0,0 +1,8 @@ +#ifndef __ASM_MIPS_BITSPERLONG_H +#define __ASM_MIPS_BITSPERLONG_H + +#define __BITS_PER_LONG _MIPS_SZLONG + +#include <asm-generic/bitsperlong.h> + +#endif /* __ASM_MIPS_BITSPERLONG_H */ diff --git a/arch/mips/include/uapi/asm/break.h b/arch/mips/include/uapi/asm/break.h new file mode 100644 index 00000000000..002c39ea20c --- /dev/null +++ b/arch/mips/include/uapi/asm/break.h @@ -0,0 +1,29 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 2003 by Ralf Baechle + * Copyright (C) 1999 Silicon Graphics, Inc. + */ +#ifndef __UAPI_ASM_BREAK_H +#define __UAPI_ASM_BREAK_H + +/* + * The following break codes are or were in use for specific purposes in + * other MIPS operating systems.  Linux/MIPS doesn't use all of them.  The + * unused ones are here as placeholders; we might encounter them in + * non-Linux/MIPS object files or make use of them in the future. + */ +#define BRK_USERBP	0	/* User bp (used by debuggers) */ +#define BRK_SSTEPBP	5	/* User bp (used by debuggers) */ +#define BRK_OVERFLOW	6	/* Overflow check */ +#define BRK_DIVZERO	7	/* Divide by zero check */ +#define BRK_RANGE	8	/* Range error check */ +#define BRK_BUG		12	/* Used by BUG() */ +#define BRK_MEMU	514	/* Used by FPU emulator */ +#define BRK_KPROBE_BP	515	/* Kprobe break */ +#define BRK_KPROBE_SSTEPBP 516	/* Kprobe single step software implementation */ +#define BRK_MULOVF	1023	/* Multiply overflow */ + +#endif /* __UAPI_ASM_BREAK_H */ diff --git a/arch/mips/include/uapi/asm/byteorder.h b/arch/mips/include/uapi/asm/byteorder.h new file mode 100644 index 00000000000..9579051ff1c --- /dev/null +++ b/arch/mips/include/uapi/asm/byteorder.h @@ -0,0 +1,19 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1996, 99, 2003 by Ralf Baechle + */ +#ifndef _ASM_BYTEORDER_H +#define _ASM_BYTEORDER_H + +#if defined(__MIPSEB__) +#include <linux/byteorder/big_endian.h> +#elif defined(__MIPSEL__) +#include <linux/byteorder/little_endian.h> +#else +# error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???" +#endif + +#endif /* _ASM_BYTEORDER_H */ diff --git a/arch/mips/include/uapi/asm/cachectl.h b/arch/mips/include/uapi/asm/cachectl.h new file mode 100644 index 00000000000..23039090877 --- /dev/null +++ b/arch/mips/include/uapi/asm/cachectl.h @@ -0,0 +1,26 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1994, 1995, 1996 by Ralf Baechle + */ +#ifndef _ASM_CACHECTL +#define _ASM_CACHECTL + +/* + * Options for cacheflush system call + */ +#define ICACHE	(1<<0)		/* flush instruction cache	  */ +#define DCACHE	(1<<1)		/* writeback and flush data cache */ +#define BCACHE	(ICACHE|DCACHE) /* flush both caches		  */ + +/* + * Caching modes for the cachectl(2) call + * + * cachectl(2) is currently not supported and returns ENOSYS. + */ +#define CACHEABLE	0	/* make pages cacheable */ +#define UNCACHEABLE	1	/* make pages uncacheable */ + +#endif	/* _ASM_CACHECTL */ diff --git a/arch/mips/include/uapi/asm/errno.h b/arch/mips/include/uapi/asm/errno.h new file mode 100644 index 00000000000..02d645d7aa9 --- /dev/null +++ b/arch/mips/include/uapi/asm/errno.h @@ -0,0 +1,129 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 1999, 2001, 2002 by Ralf Baechle + */ +#ifndef _UAPI_ASM_ERRNO_H +#define _UAPI_ASM_ERRNO_H + +/* + * These error numbers are intended to be MIPS ABI compatible + */ + +#include <asm-generic/errno-base.h> + +#define ENOMSG		35	/* No message of desired type */ +#define EIDRM		36	/* Identifier removed */ +#define ECHRNG		37	/* Channel number out of range */ +#define EL2NSYNC	38	/* Level 2 not synchronized */ +#define EL3HLT		39	/* Level 3 halted */ +#define EL3RST		40	/* Level 3 reset */ +#define ELNRNG		41	/* Link number out of range */ +#define EUNATCH		42	/* Protocol driver not attached */ +#define ENOCSI		43	/* No CSI structure available */ +#define EL2HLT		44	/* Level 2 halted */ +#define EDEADLK		45	/* Resource deadlock would occur */ +#define ENOLCK		46	/* No record locks available */ +#define EBADE		50	/* Invalid exchange */ +#define EBADR		51	/* Invalid request descriptor */ +#define EXFULL		52	/* Exchange full */ +#define ENOANO		53	/* No anode */ +#define EBADRQC		54	/* Invalid request code */ +#define EBADSLT		55	/* Invalid slot */ +#define EDEADLOCK	56	/* File locking deadlock error */ +#define EBFONT		59	/* Bad font file format */ +#define ENOSTR		60	/* Device not a stream */ +#define ENODATA		61	/* No data available */ +#define ETIME		62	/* Timer expired */ +#define ENOSR		63	/* Out of streams resources */ +#define ENONET		64	/* Machine is not on the network */ +#define ENOPKG		65	/* Package not installed */ +#define EREMOTE		66	/* Object is remote */ +#define ENOLINK		67	/* Link has been severed */ +#define EADV		68	/* Advertise error */ +#define ESRMNT		69	/* Srmount error */ +#define ECOMM		70	/* Communication error on send */ +#define EPROTO		71	/* Protocol error */ +#define EDOTDOT		73	/* RFS specific error */ +#define EMULTIHOP	74	/* Multihop attempted */ +#define EBADMSG		77	/* Not a data message */ +#define ENAMETOOLONG	78	/* File name too long */ +#define EOVERFLOW	79	/* Value too large for defined data type */ +#define ENOTUNIQ	80	/* Name not unique on network */ +#define EBADFD		81	/* File descriptor in bad state */ +#define EREMCHG		82	/* Remote address changed */ +#define ELIBACC		83	/* Can not access a needed shared library */ +#define ELIBBAD		84	/* Accessing a corrupted shared library */ +#define ELIBSCN		85	/* .lib section in a.out corrupted */ +#define ELIBMAX		86	/* Attempting to link in too many shared libraries */ +#define ELIBEXEC	87	/* Cannot exec a shared library directly */ +#define EILSEQ		88	/* Illegal byte sequence */ +#define ENOSYS		89	/* Function not implemented */ +#define ELOOP		90	/* Too many symbolic links encountered */ +#define ERESTART	91	/* Interrupted system call should be restarted */ +#define ESTRPIPE	92	/* Streams pipe error */ +#define ENOTEMPTY	93	/* Directory not empty */ +#define EUSERS		94	/* Too many users */ +#define ENOTSOCK	95	/* Socket operation on non-socket */ +#define EDESTADDRREQ	96	/* Destination address required */ +#define EMSGSIZE	97	/* Message too long */ +#define EPROTOTYPE	98	/* Protocol wrong type for socket */ +#define ENOPROTOOPT	99	/* Protocol not available */ +#define EPROTONOSUPPORT 120	/* Protocol not supported */ +#define ESOCKTNOSUPPORT 121	/* Socket type not supported */ +#define EOPNOTSUPP	122	/* Operation not supported on transport endpoint */ +#define EPFNOSUPPORT	123	/* Protocol family not supported */ +#define EAFNOSUPPORT	124	/* Address family not supported by protocol */ +#define EADDRINUSE	125	/* Address already in use */ +#define EADDRNOTAVAIL	126	/* Cannot assign requested address */ +#define ENETDOWN	127	/* Network is down */ +#define ENETUNREACH	128	/* Network is unreachable */ +#define ENETRESET	129	/* Network dropped connection because of reset */ +#define ECONNABORTED	130	/* Software caused connection abort */ +#define ECONNRESET	131	/* Connection reset by peer */ +#define ENOBUFS		132	/* No buffer space available */ +#define EISCONN		133	/* Transport endpoint is already connected */ +#define ENOTCONN	134	/* Transport endpoint is not connected */ +#define EUCLEAN		135	/* Structure needs cleaning */ +#define ENOTNAM		137	/* Not a XENIX named type file */ +#define ENAVAIL		138	/* No XENIX semaphores available */ +#define EISNAM		139	/* Is a named type file */ +#define EREMOTEIO	140	/* Remote I/O error */ +#define EINIT		141	/* Reserved */ +#define EREMDEV		142	/* Error 142 */ +#define ESHUTDOWN	143	/* Cannot send after transport endpoint shutdown */ +#define ETOOMANYREFS	144	/* Too many references: cannot splice */ +#define ETIMEDOUT	145	/* Connection timed out */ +#define ECONNREFUSED	146	/* Connection refused */ +#define EHOSTDOWN	147	/* Host is down */ +#define EHOSTUNREACH	148	/* No route to host */ +#define EWOULDBLOCK	EAGAIN	/* Operation would block */ +#define EALREADY	149	/* Operation already in progress */ +#define EINPROGRESS	150	/* Operation now in progress */ +#define ESTALE		151	/* Stale file handle */ +#define ECANCELED	158	/* AIO operation canceled */ + +/* + * These error are Linux extensions. + */ +#define ENOMEDIUM	159	/* No medium found */ +#define EMEDIUMTYPE	160	/* Wrong medium type */ +#define ENOKEY		161	/* Required key not available */ +#define EKEYEXPIRED	162	/* Key has expired */ +#define EKEYREVOKED	163	/* Key has been revoked */ +#define EKEYREJECTED	164	/* Key was rejected by service */ + +/* for robust mutexes */ +#define EOWNERDEAD	165	/* Owner died */ +#define ENOTRECOVERABLE 166	/* State not recoverable */ + +#define ERFKILL		167	/* Operation not possible due to RF-kill */ + +#define EHWPOISON	168	/* Memory page has hardware error */ + +#define EDQUOT		1133	/* Quota exceeded */ + + +#endif /* _UAPI_ASM_ERRNO_H */ diff --git a/arch/mips/include/uapi/asm/fcntl.h b/arch/mips/include/uapi/asm/fcntl.h new file mode 100644 index 00000000000..6ca432f0086 --- /dev/null +++ b/arch/mips/include/uapi/asm/fcntl.h @@ -0,0 +1,79 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 96, 97, 98, 99, 2003, 05 Ralf Baechle + */ +#ifndef _UAPI_ASM_FCNTL_H +#define _UAPI_ASM_FCNTL_H + +#include <asm/sgidefs.h> + +#define O_APPEND	0x0008 +#define O_DSYNC		0x0010	/* used to be O_SYNC, see below */ +#define O_NONBLOCK	0x0080 +#define O_CREAT		0x0100	/* not fcntl */ +#define O_TRUNC		0x0200	/* not fcntl */ +#define O_EXCL		0x0400	/* not fcntl */ +#define O_NOCTTY	0x0800	/* not fcntl */ +#define FASYNC		0x1000	/* fcntl, for BSD compatibility */ +#define O_LARGEFILE	0x2000	/* allow large file opens */ +/* + * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using + * the O_SYNC flag.  We continue to use the existing numerical value + * for O_DSYNC semantics now, but using the correct symbolic name for it. + * This new value is used to request true Posix O_SYNC semantics.  It is + * defined in this strange way to make sure applications compiled against + * new headers get at least O_DSYNC semantics on older kernels. + * + * This has the nice side-effect that we can simply test for O_DSYNC + * wherever we do not care if O_DSYNC or O_SYNC is used. + * + * Note: __O_SYNC must never be used directly. + */ +#define __O_SYNC	0x4000 +#define O_SYNC		(__O_SYNC|O_DSYNC) +#define O_DIRECT	0x8000	/* direct disk access hint */ + +#define F_GETLK		14 +#define F_SETLK		6 +#define F_SETLKW	7 + +#define F_SETOWN	24	/*  for sockets. */ +#define F_GETOWN	23	/*  for sockets. */ + +#ifndef __mips64 +#define F_GETLK64	33	/*  using 'struct flock64' */ +#define F_SETLK64	34 +#define F_SETLKW64	35 +#endif + +/* + * The flavours of struct flock.  "struct flock" is the ABI compliant + * variant.  Finally struct flock64 is the LFS variant of struct flock.	 As + * a historic accident and inconsistence with the ABI definition it doesn't + * contain all the same fields as struct flock. + */ + +#if _MIPS_SIM != _MIPS_SIM_ABI64 + +#include <linux/types.h> + +struct flock { +	short	l_type; +	short	l_whence; +	__kernel_off_t	l_start; +	__kernel_off_t	l_len; +	long	l_sysid; +	__kernel_pid_t l_pid; +	long	pad[4]; +}; + +#define HAVE_ARCH_STRUCT_FLOCK + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ + +#include <asm-generic/fcntl.h> + +#endif /* _UAPI_ASM_FCNTL_H */ diff --git a/arch/mips/include/uapi/asm/inst.h b/arch/mips/include/uapi/asm/inst.h new file mode 100644 index 00000000000..4bfdb9d4c18 --- /dev/null +++ b/arch/mips/include/uapi/asm/inst.h @@ -0,0 +1,923 @@ +/* + * Format of an instruction in memory. + * + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1996, 2000 by Ralf Baechle + * Copyright (C) 2006 by Thiemo Seufer + * Copyright (C) 2012 MIPS Technologies, Inc.  All rights reserved. + * Copyright (C) 2014 Imagination Technologies Ltd. + */ +#ifndef _UAPI_ASM_INST_H +#define _UAPI_ASM_INST_H + +#include <asm/bitfield.h> + +/* + * Major opcodes; before MIPS IV cop1x was called cop3. + */ +enum major_op { +	spec_op, bcond_op, j_op, jal_op, +	beq_op, bne_op, blez_op, bgtz_op, +	addi_op, addiu_op, slti_op, sltiu_op, +	andi_op, ori_op, xori_op, lui_op, +	cop0_op, cop1_op, cop2_op, cop1x_op, +	beql_op, bnel_op, blezl_op, bgtzl_op, +	daddi_op, daddiu_op, ldl_op, ldr_op, +	spec2_op, jalx_op, mdmx_op, spec3_op, +	lb_op, lh_op, lwl_op, lw_op, +	lbu_op, lhu_op, lwr_op, lwu_op, +	sb_op, sh_op, swl_op, sw_op, +	sdl_op, sdr_op, swr_op, cache_op, +	ll_op, lwc1_op, lwc2_op, pref_op, +	lld_op, ldc1_op, ldc2_op, ld_op, +	sc_op, swc1_op, swc2_op, major_3b_op, +	scd_op, sdc1_op, sdc2_op, sd_op +}; + +/* + * func field of spec opcode. + */ +enum spec_op { +	sll_op, movc_op, srl_op, sra_op, +	sllv_op, pmon_op, srlv_op, srav_op, +	jr_op, jalr_op, movz_op, movn_op, +	syscall_op, break_op, spim_op, sync_op, +	mfhi_op, mthi_op, mflo_op, mtlo_op, +	dsllv_op, spec2_unused_op, dsrlv_op, dsrav_op, +	mult_op, multu_op, div_op, divu_op, +	dmult_op, dmultu_op, ddiv_op, ddivu_op, +	add_op, addu_op, sub_op, subu_op, +	and_op, or_op, xor_op, nor_op, +	spec3_unused_op, spec4_unused_op, slt_op, sltu_op, +	dadd_op, daddu_op, dsub_op, dsubu_op, +	tge_op, tgeu_op, tlt_op, tltu_op, +	teq_op, spec5_unused_op, tne_op, spec6_unused_op, +	dsll_op, spec7_unused_op, dsrl_op, dsra_op, +	dsll32_op, spec8_unused_op, dsrl32_op, dsra32_op +}; + +/* + * func field of spec2 opcode. + */ +enum spec2_op { +	madd_op, maddu_op, mul_op, spec2_3_unused_op, +	msub_op, msubu_op, /* more unused ops */ +	clz_op = 0x20, clo_op, +	dclz_op = 0x24, dclo_op, +	sdbpp_op = 0x3f +}; + +/* + * func field of spec3 opcode. + */ +enum spec3_op { +	ext_op, dextm_op, dextu_op, dext_op, +	ins_op, dinsm_op, dinsu_op, dins_op, +	yield_op  = 0x09, lx_op     = 0x0a, +	lwle_op   = 0x19, lwre_op   = 0x1a, +	cachee_op = 0x1b, sbe_op    = 0x1c, +	she_op    = 0x1d, sce_op    = 0x1e, +	swe_op    = 0x1f, bshfl_op  = 0x20, +	swle_op   = 0x21, swre_op   = 0x22, +	prefe_op  = 0x23, dbshfl_op = 0x24, +	lbue_op   = 0x28, lhue_op   = 0x29, +	lbe_op    = 0x2c, lhe_op    = 0x2d, +	lle_op    = 0x2e, lwe_op    = 0x2f, +	rdhwr_op  = 0x3b +}; + +/* + * rt field of bcond opcodes. + */ +enum rt_op { +	bltz_op, bgez_op, bltzl_op, bgezl_op, +	spimi_op, unused_rt_op_0x05, unused_rt_op_0x06, unused_rt_op_0x07, +	tgei_op, tgeiu_op, tlti_op, tltiu_op, +	teqi_op, unused_0x0d_rt_op, tnei_op, unused_0x0f_rt_op, +	bltzal_op, bgezal_op, bltzall_op, bgezall_op, +	rt_op_0x14, rt_op_0x15, rt_op_0x16, rt_op_0x17, +	rt_op_0x18, rt_op_0x19, rt_op_0x1a, rt_op_0x1b, +	bposge32_op, rt_op_0x1d, rt_op_0x1e, rt_op_0x1f +}; + +/* + * rs field of cop opcodes. + */ +enum cop_op { +	mfc_op	      = 0x00, dmfc_op	    = 0x01, +	cfc_op	      = 0x02, mfhc_op	    = 0x03, +	mtc_op        = 0x04, dmtc_op	    = 0x05, +	ctc_op	      = 0x06, mthc_op	    = 0x07, +	bc_op	      = 0x08, cop_op	    = 0x10, +	copm_op	      = 0x18 +}; + +/* + * rt field of cop.bc_op opcodes + */ +enum bcop_op { +	bcf_op, bct_op, bcfl_op, bctl_op +}; + +/* + * func field of cop0 coi opcodes. + */ +enum cop0_coi_func { +	tlbr_op	      = 0x01, tlbwi_op	    = 0x02, +	tlbwr_op      = 0x06, tlbp_op	    = 0x08, +	rfe_op	      = 0x10, eret_op	    = 0x18, +	wait_op       = 0x20, +}; + +/* + * func field of cop0 com opcodes. + */ +enum cop0_com_func { +	tlbr1_op      = 0x01, tlbw_op	    = 0x02, +	tlbp1_op      = 0x08, dctr_op	    = 0x09, +	dctw_op	      = 0x0a +}; + +/* + * fmt field of cop1 opcodes. + */ +enum cop1_fmt { +	s_fmt, d_fmt, e_fmt, q_fmt, +	w_fmt, l_fmt +}; + +/* + * func field of cop1 instructions using d, s or w format. + */ +enum cop1_sdw_func { +	fadd_op	     =	0x00, fsub_op	   =  0x01, +	fmul_op	     =	0x02, fdiv_op	   =  0x03, +	fsqrt_op     =	0x04, fabs_op	   =  0x05, +	fmov_op	     =	0x06, fneg_op	   =  0x07, +	froundl_op   =	0x08, ftruncl_op   =  0x09, +	fceill_op    =	0x0a, ffloorl_op   =  0x0b, +	fround_op    =	0x0c, ftrunc_op	   =  0x0d, +	fceil_op     =	0x0e, ffloor_op	   =  0x0f, +	fmovc_op     =	0x11, fmovz_op	   =  0x12, +	fmovn_op     =	0x13, frecip_op	   =  0x15, +	frsqrt_op    =	0x16, fcvts_op	   =  0x20, +	fcvtd_op     =	0x21, fcvte_op	   =  0x22, +	fcvtw_op     =	0x24, fcvtl_op	   =  0x25, +	fcmp_op	     =	0x30 +}; + +/* + * func field of cop1x opcodes (MIPS IV). + */ +enum cop1x_func { +	lwxc1_op     =	0x00, ldxc1_op	   =  0x01, +	swxc1_op     =  0x08, sdxc1_op	   =  0x09, +	pfetch_op    =	0x0f, madd_s_op	   =  0x20, +	madd_d_op    =	0x21, madd_e_op	   =  0x22, +	msub_s_op    =	0x28, msub_d_op	   =  0x29, +	msub_e_op    =	0x2a, nmadd_s_op   =  0x30, +	nmadd_d_op   =	0x31, nmadd_e_op   =  0x32, +	nmsub_s_op   =	0x38, nmsub_d_op   =  0x39, +	nmsub_e_op   =	0x3a +}; + +/* + * func field for mad opcodes (MIPS IV). + */ +enum mad_func { +	madd_fp_op	= 0x08, msub_fp_op	= 0x0a, +	nmadd_fp_op	= 0x0c, nmsub_fp_op	= 0x0e +}; + +/* + * func field for special3 lx opcodes (Cavium Octeon). + */ +enum lx_func { +	lwx_op	= 0x00, +	lhx_op	= 0x04, +	lbux_op = 0x06, +	ldx_op	= 0x08, +	lwux_op = 0x10, +	lhux_op = 0x14, +	lbx_op	= 0x16, +}; + +/* + * BSHFL opcodes + */ +enum bshfl_func { +	wsbh_op = 0x2, +	dshd_op = 0x5, +	seb_op  = 0x10, +	seh_op  = 0x18, +}; + +/* + * (microMIPS) Major opcodes. + */ +enum mm_major_op { +	mm_pool32a_op, mm_pool16a_op, mm_lbu16_op, mm_move16_op, +	mm_addi32_op, mm_lbu32_op, mm_sb32_op, mm_lb32_op, +	mm_pool32b_op, mm_pool16b_op, mm_lhu16_op, mm_andi16_op, +	mm_addiu32_op, mm_lhu32_op, mm_sh32_op, mm_lh32_op, +	mm_pool32i_op, mm_pool16c_op, mm_lwsp16_op, mm_pool16d_op, +	mm_ori32_op, mm_pool32f_op, mm_reserved1_op, mm_reserved2_op, +	mm_pool32c_op, mm_lwgp16_op, mm_lw16_op, mm_pool16e_op, +	mm_xori32_op, mm_jals32_op, mm_addiupc_op, mm_reserved3_op, +	mm_reserved4_op, mm_pool16f_op, mm_sb16_op, mm_beqz16_op, +	mm_slti32_op, mm_beq32_op, mm_swc132_op, mm_lwc132_op, +	mm_reserved5_op, mm_reserved6_op, mm_sh16_op, mm_bnez16_op, +	mm_sltiu32_op, mm_bne32_op, mm_sdc132_op, mm_ldc132_op, +	mm_reserved7_op, mm_reserved8_op, mm_swsp16_op, mm_b16_op, +	mm_andi32_op, mm_j32_op, mm_sd32_op, mm_ld32_op, +	mm_reserved11_op, mm_reserved12_op, mm_sw16_op, mm_li16_op, +	mm_jalx32_op, mm_jal32_op, mm_sw32_op, mm_lw32_op, +}; + +/* + * (microMIPS) POOL32I minor opcodes. + */ +enum mm_32i_minor_op { +	mm_bltz_op, mm_bltzal_op, mm_bgez_op, mm_bgezal_op, +	mm_blez_op, mm_bnezc_op, mm_bgtz_op, mm_beqzc_op, +	mm_tlti_op, mm_tgei_op, mm_tltiu_op, mm_tgeiu_op, +	mm_tnei_op, mm_lui_op, mm_teqi_op, mm_reserved13_op, +	mm_synci_op, mm_bltzals_op, mm_reserved14_op, mm_bgezals_op, +	mm_bc2f_op, mm_bc2t_op, mm_reserved15_op, mm_reserved16_op, +	mm_reserved17_op, mm_reserved18_op, mm_bposge64_op, mm_bposge32_op, +	mm_bc1f_op, mm_bc1t_op, mm_reserved19_op, mm_reserved20_op, +	mm_bc1any2f_op, mm_bc1any2t_op, mm_bc1any4f_op, mm_bc1any4t_op, +}; + +/* + * (microMIPS) POOL32A minor opcodes. + */ +enum mm_32a_minor_op { +	mm_sll32_op = 0x000, +	mm_ins_op = 0x00c, +	mm_sllv32_op = 0x010, +	mm_ext_op = 0x02c, +	mm_pool32axf_op = 0x03c, +	mm_srl32_op = 0x040, +	mm_sra_op = 0x080, +	mm_srlv32_op = 0x090, +	mm_rotr_op = 0x0c0, +	mm_lwxs_op = 0x118, +	mm_addu32_op = 0x150, +	mm_subu32_op = 0x1d0, +	mm_wsbh_op = 0x1ec, +	mm_mul_op = 0x210, +	mm_and_op = 0x250, +	mm_or32_op = 0x290, +	mm_xor32_op = 0x310, +	mm_slt_op = 0x350, +	mm_sltu_op = 0x390, +}; + +/* + * (microMIPS) POOL32B functions. + */ +enum mm_32b_func { +	mm_lwc2_func = 0x0, +	mm_lwp_func = 0x1, +	mm_ldc2_func = 0x2, +	mm_ldp_func = 0x4, +	mm_lwm32_func = 0x5, +	mm_cache_func = 0x6, +	mm_ldm_func = 0x7, +	mm_swc2_func = 0x8, +	mm_swp_func = 0x9, +	mm_sdc2_func = 0xa, +	mm_sdp_func = 0xc, +	mm_swm32_func = 0xd, +	mm_sdm_func = 0xf, +}; + +/* + * (microMIPS) POOL32C functions. + */ +enum mm_32c_func { +	mm_pref_func = 0x2, +	mm_ll_func = 0x3, +	mm_swr_func = 0x9, +	mm_sc_func = 0xb, +	mm_lwu_func = 0xe, +}; + +/* + * (microMIPS) POOL32AXF minor opcodes. + */ +enum mm_32axf_minor_op { +	mm_mfc0_op = 0x003, +	mm_mtc0_op = 0x00b, +	mm_tlbp_op = 0x00d, +	mm_mfhi32_op = 0x035, +	mm_jalr_op = 0x03c, +	mm_tlbr_op = 0x04d, +	mm_mflo32_op = 0x075, +	mm_jalrhb_op = 0x07c, +	mm_tlbwi_op = 0x08d, +	mm_tlbwr_op = 0x0cd, +	mm_jalrs_op = 0x13c, +	mm_jalrshb_op = 0x17c, +	mm_sync_op = 0x1ad, +	mm_syscall_op = 0x22d, +	mm_wait_op = 0x24d, +	mm_eret_op = 0x3cd, +	mm_divu_op = 0x5dc, +}; + +/* + * (microMIPS) POOL32F minor opcodes. + */ +enum mm_32f_minor_op { +	mm_32f_00_op = 0x00, +	mm_32f_01_op = 0x01, +	mm_32f_02_op = 0x02, +	mm_32f_10_op = 0x08, +	mm_32f_11_op = 0x09, +	mm_32f_12_op = 0x0a, +	mm_32f_20_op = 0x10, +	mm_32f_30_op = 0x18, +	mm_32f_40_op = 0x20, +	mm_32f_41_op = 0x21, +	mm_32f_42_op = 0x22, +	mm_32f_50_op = 0x28, +	mm_32f_51_op = 0x29, +	mm_32f_52_op = 0x2a, +	mm_32f_60_op = 0x30, +	mm_32f_70_op = 0x38, +	mm_32f_73_op = 0x3b, +	mm_32f_74_op = 0x3c, +}; + +/* + * (microMIPS) POOL32F secondary minor opcodes. + */ +enum mm_32f_10_minor_op { +	mm_lwxc1_op = 0x1, +	mm_swxc1_op, +	mm_ldxc1_op, +	mm_sdxc1_op, +	mm_luxc1_op, +	mm_suxc1_op, +}; + +enum mm_32f_func { +	mm_lwxc1_func = 0x048, +	mm_swxc1_func = 0x088, +	mm_ldxc1_func = 0x0c8, +	mm_sdxc1_func = 0x108, +}; + +/* + * (microMIPS) POOL32F secondary minor opcodes. + */ +enum mm_32f_40_minor_op { +	mm_fmovf_op, +	mm_fmovt_op, +}; + +/* + * (microMIPS) POOL32F secondary minor opcodes. + */ +enum mm_32f_60_minor_op { +	mm_fadd_op, +	mm_fsub_op, +	mm_fmul_op, +	mm_fdiv_op, +}; + +/* + * (microMIPS) POOL32F secondary minor opcodes. + */ +enum mm_32f_70_minor_op { +	mm_fmovn_op, +	mm_fmovz_op, +}; + +/* + * (microMIPS) POOL32FXF secondary minor opcodes for POOL32F. + */ +enum mm_32f_73_minor_op { +	mm_fmov0_op = 0x01, +	mm_fcvtl_op = 0x04, +	mm_movf0_op = 0x05, +	mm_frsqrt_op = 0x08, +	mm_ffloorl_op = 0x0c, +	mm_fabs0_op = 0x0d, +	mm_fcvtw_op = 0x24, +	mm_movt0_op = 0x25, +	mm_fsqrt_op = 0x28, +	mm_ffloorw_op = 0x2c, +	mm_fneg0_op = 0x2d, +	mm_cfc1_op = 0x40, +	mm_frecip_op = 0x48, +	mm_fceill_op = 0x4c, +	mm_fcvtd0_op = 0x4d, +	mm_ctc1_op = 0x60, +	mm_fceilw_op = 0x6c, +	mm_fcvts0_op = 0x6d, +	mm_mfc1_op = 0x80, +	mm_fmov1_op = 0x81, +	mm_movf1_op = 0x85, +	mm_ftruncl_op = 0x8c, +	mm_fabs1_op = 0x8d, +	mm_mtc1_op = 0xa0, +	mm_movt1_op = 0xa5, +	mm_ftruncw_op = 0xac, +	mm_fneg1_op = 0xad, +	mm_mfhc1_op = 0xc0, +	mm_froundl_op = 0xcc, +	mm_fcvtd1_op = 0xcd, +	mm_mthc1_op = 0xe0, +	mm_froundw_op = 0xec, +	mm_fcvts1_op = 0xed, +}; + +/* + * (microMIPS) POOL16C minor opcodes. + */ +enum mm_16c_minor_op { +	mm_lwm16_op = 0x04, +	mm_swm16_op = 0x05, +	mm_jr16_op = 0x0c, +	mm_jrc_op = 0x0d, +	mm_jalr16_op = 0x0e, +	mm_jalrs16_op = 0x0f, +	mm_jraddiusp_op = 0x18, +}; + +/* + * (microMIPS) POOL16D minor opcodes. + */ +enum mm_16d_minor_op { +	mm_addius5_func, +	mm_addiusp_func, +}; + +/* + * (MIPS16e) opcodes. + */ +enum MIPS16e_ops { +	MIPS16e_jal_op = 003, +	MIPS16e_ld_op = 007, +	MIPS16e_i8_op = 014, +	MIPS16e_sd_op = 017, +	MIPS16e_lb_op = 020, +	MIPS16e_lh_op = 021, +	MIPS16e_lwsp_op = 022, +	MIPS16e_lw_op = 023, +	MIPS16e_lbu_op = 024, +	MIPS16e_lhu_op = 025, +	MIPS16e_lwpc_op = 026, +	MIPS16e_lwu_op = 027, +	MIPS16e_sb_op = 030, +	MIPS16e_sh_op = 031, +	MIPS16e_swsp_op = 032, +	MIPS16e_sw_op = 033, +	MIPS16e_rr_op = 035, +	MIPS16e_extend_op = 036, +	MIPS16e_i64_op = 037, +}; + +enum MIPS16e_i64_func { +	MIPS16e_ldsp_func, +	MIPS16e_sdsp_func, +	MIPS16e_sdrasp_func, +	MIPS16e_dadjsp_func, +	MIPS16e_ldpc_func, +}; + +enum MIPS16e_rr_func { +	MIPS16e_jr_func, +}; + +enum MIPS6e_i8_func { +	MIPS16e_swrasp_func = 02, +}; + +/* + * (microMIPS & MIPS16e) NOP instruction. + */ +#define MM_NOP16	0x0c00 + +struct j_format { +	__BITFIELD_FIELD(unsigned int opcode : 6, /* Jump format */ +	__BITFIELD_FIELD(unsigned int target : 26, +	;)) +}; + +struct i_format {			/* signed immediate format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rs : 5, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(signed int simmediate : 16, +	;)))) +}; + +struct u_format {			/* unsigned immediate format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rs : 5, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(unsigned int uimmediate : 16, +	;)))) +}; + +struct c_format {			/* Cache (>= R6000) format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rs : 5, +	__BITFIELD_FIELD(unsigned int c_op : 3, +	__BITFIELD_FIELD(unsigned int cache : 2, +	__BITFIELD_FIELD(unsigned int simmediate : 16, +	;))))) +}; + +struct r_format {			/* Register format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rs : 5, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(unsigned int rd : 5, +	__BITFIELD_FIELD(unsigned int re : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct p_format {		/* Performance counter format (R10000) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rs : 5, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(unsigned int rd : 5, +	__BITFIELD_FIELD(unsigned int re : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct f_format {			/* FPU register format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int : 1, +	__BITFIELD_FIELD(unsigned int fmt : 4, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(unsigned int rd : 5, +	__BITFIELD_FIELD(unsigned int re : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;))))))) +}; + +struct ma_format {		/* FPU multiply and add format (MIPS IV) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int fr : 5, +	__BITFIELD_FIELD(unsigned int ft : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int fd : 5, +	__BITFIELD_FIELD(unsigned int func : 4, +	__BITFIELD_FIELD(unsigned int fmt : 2, +	;))))))) +}; + +struct b_format {			/* BREAK and SYSCALL */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int code : 20, +	__BITFIELD_FIELD(unsigned int func : 6, +	;))) +}; + +struct ps_format {			/* MIPS-3D / paired single format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rs : 5, +	__BITFIELD_FIELD(unsigned int ft : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int fd : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct v_format {				/* MDMX vector format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int sel : 4, +	__BITFIELD_FIELD(unsigned int fmt : 1, +	__BITFIELD_FIELD(unsigned int vt : 5, +	__BITFIELD_FIELD(unsigned int vs : 5, +	__BITFIELD_FIELD(unsigned int vd : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;))))))) +}; + +struct spec3_format {   /* SPEC3 */ +	__BITFIELD_FIELD(unsigned int opcode:6, +	__BITFIELD_FIELD(unsigned int rs:5, +	__BITFIELD_FIELD(unsigned int rt:5, +	__BITFIELD_FIELD(signed int simmediate:9, +	__BITFIELD_FIELD(unsigned int func:7, +	;))))) +}; + +/* + * microMIPS instruction formats (32-bit length) + * + * NOTE: + *	Parenthesis denote whether the format is a microMIPS instruction or + *	if it is MIPS32 instruction re-encoded for use in the microMIPS ASE. + */ +struct fb_format {		/* FPU branch format (MIPS32) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int bc : 5, +	__BITFIELD_FIELD(unsigned int cc : 3, +	__BITFIELD_FIELD(unsigned int flag : 2, +	__BITFIELD_FIELD(signed int simmediate : 16, +	;))))) +}; + +struct fp0_format {		/* FPU multiply and add format (MIPS32) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int fmt : 5, +	__BITFIELD_FIELD(unsigned int ft : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int fd : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct mm_fp0_format {		/* FPU multipy and add format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int ft : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int fd : 5, +	__BITFIELD_FIELD(unsigned int fmt : 3, +	__BITFIELD_FIELD(unsigned int op : 2, +	__BITFIELD_FIELD(unsigned int func : 6, +	;))))))) +}; + +struct fp1_format {		/* FPU mfc1 and cfc1 format (MIPS32) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int op : 5, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int fd : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct mm_fp1_format {		/* FPU mfc1 and cfc1 format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int fmt : 2, +	__BITFIELD_FIELD(unsigned int op : 8, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct mm_fp2_format {		/* FPU movt and movf format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int fd : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int cc : 3, +	__BITFIELD_FIELD(unsigned int zero : 2, +	__BITFIELD_FIELD(unsigned int fmt : 2, +	__BITFIELD_FIELD(unsigned int op : 3, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))))) +}; + +struct mm_fp3_format {		/* FPU abs and neg format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int fmt : 3, +	__BITFIELD_FIELD(unsigned int op : 7, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct mm_fp4_format {		/* FPU c.cond format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int cc : 3, +	__BITFIELD_FIELD(unsigned int fmt : 3, +	__BITFIELD_FIELD(unsigned int cond : 4, +	__BITFIELD_FIELD(unsigned int func : 6, +	;))))))) +}; + +struct mm_fp5_format {		/* FPU lwxc1 and swxc1 format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int index : 5, +	__BITFIELD_FIELD(unsigned int base : 5, +	__BITFIELD_FIELD(unsigned int fd : 5, +	__BITFIELD_FIELD(unsigned int op : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct fp6_format {		/* FPU madd and msub format (MIPS IV) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int fr : 5, +	__BITFIELD_FIELD(unsigned int ft : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int fd : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct mm_fp6_format {		/* FPU madd and msub format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int ft : 5, +	__BITFIELD_FIELD(unsigned int fs : 5, +	__BITFIELD_FIELD(unsigned int fd : 5, +	__BITFIELD_FIELD(unsigned int fr : 5, +	__BITFIELD_FIELD(unsigned int func : 6, +	;)))))) +}; + +struct mm_i_format {		/* Immediate format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(unsigned int rs : 5, +	__BITFIELD_FIELD(signed int simmediate : 16, +	;)))) +}; + +struct mm_m_format {		/* Multi-word load/store format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rd : 5, +	__BITFIELD_FIELD(unsigned int base : 5, +	__BITFIELD_FIELD(unsigned int func : 4, +	__BITFIELD_FIELD(signed int simmediate : 12, +	;))))) +}; + +struct mm_x_format {		/* Scaled indexed load format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int index : 5, +	__BITFIELD_FIELD(unsigned int base : 5, +	__BITFIELD_FIELD(unsigned int rd : 5, +	__BITFIELD_FIELD(unsigned int func : 11, +	;))))) +}; + +/* + * microMIPS instruction formats (16-bit length) + */ +struct mm_b0_format {		/* Unconditional branch format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(signed int simmediate : 10, +	__BITFIELD_FIELD(unsigned int : 16, /* Ignored */ +	;))) +}; + +struct mm_b1_format {		/* Conditional branch format (microMIPS) */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rs : 3, +	__BITFIELD_FIELD(signed int simmediate : 7, +	__BITFIELD_FIELD(unsigned int : 16, /* Ignored */ +	;)))) +}; + +struct mm16_m_format {		/* Multi-word load/store format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int func : 4, +	__BITFIELD_FIELD(unsigned int rlist : 2, +	__BITFIELD_FIELD(unsigned int imm : 4, +	__BITFIELD_FIELD(unsigned int : 16, /* Ignored */ +	;))))) +}; + +struct mm16_rb_format {		/* Signed immediate format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rt : 3, +	__BITFIELD_FIELD(unsigned int base : 3, +	__BITFIELD_FIELD(signed int simmediate : 4, +	__BITFIELD_FIELD(unsigned int : 16, /* Ignored */ +	;))))) +}; + +struct mm16_r3_format {		/* Load from global pointer format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rt : 3, +	__BITFIELD_FIELD(signed int simmediate : 7, +	__BITFIELD_FIELD(unsigned int : 16, /* Ignored */ +	;)))) +}; + +struct mm16_r5_format {		/* Load/store from stack pointer format */ +	__BITFIELD_FIELD(unsigned int opcode : 6, +	__BITFIELD_FIELD(unsigned int rt : 5, +	__BITFIELD_FIELD(signed int simmediate : 5, +	__BITFIELD_FIELD(unsigned int : 16, /* Ignored */ +	;)))) +}; + +/* + * MIPS16e instruction formats (16-bit length) + */ +struct m16e_rr { +	__BITFIELD_FIELD(unsigned int opcode : 5, +	__BITFIELD_FIELD(unsigned int rx : 3, +	__BITFIELD_FIELD(unsigned int nd : 1, +	__BITFIELD_FIELD(unsigned int l : 1, +	__BITFIELD_FIELD(unsigned int ra : 1, +	__BITFIELD_FIELD(unsigned int func : 5, +	;)))))) +}; + +struct m16e_jal { +	__BITFIELD_FIELD(unsigned int opcode : 5, +	__BITFIELD_FIELD(unsigned int x : 1, +	__BITFIELD_FIELD(unsigned int imm20_16 : 5, +	__BITFIELD_FIELD(signed int imm25_21 : 5, +	;)))) +}; + +struct m16e_i64 { +	__BITFIELD_FIELD(unsigned int opcode : 5, +	__BITFIELD_FIELD(unsigned int func : 3, +	__BITFIELD_FIELD(unsigned int imm : 8, +	;))) +}; + +struct m16e_ri64 { +	__BITFIELD_FIELD(unsigned int opcode : 5, +	__BITFIELD_FIELD(unsigned int func : 3, +	__BITFIELD_FIELD(unsigned int ry : 3, +	__BITFIELD_FIELD(unsigned int imm : 5, +	;)))) +}; + +struct m16e_ri { +	__BITFIELD_FIELD(unsigned int opcode : 5, +	__BITFIELD_FIELD(unsigned int rx : 3, +	__BITFIELD_FIELD(unsigned int imm : 8, +	;))) +}; + +struct m16e_rri { +	__BITFIELD_FIELD(unsigned int opcode : 5, +	__BITFIELD_FIELD(unsigned int rx : 3, +	__BITFIELD_FIELD(unsigned int ry : 3, +	__BITFIELD_FIELD(unsigned int imm : 5, +	;)))) +}; + +struct m16e_i8 { +	__BITFIELD_FIELD(unsigned int opcode : 5, +	__BITFIELD_FIELD(unsigned int func : 3, +	__BITFIELD_FIELD(unsigned int imm : 8, +	;))) +}; + +union mips_instruction { +	unsigned int word; +	unsigned short halfword[2]; +	unsigned char byte[4]; +	struct j_format j_format; +	struct i_format i_format; +	struct u_format u_format; +	struct c_format c_format; +	struct r_format r_format; +	struct p_format p_format; +	struct f_format f_format; +	struct ma_format ma_format; +	struct b_format b_format; +	struct ps_format ps_format; +	struct v_format v_format; +	struct spec3_format spec3_format; +	struct fb_format fb_format; +	struct fp0_format fp0_format; +	struct mm_fp0_format mm_fp0_format; +	struct fp1_format fp1_format; +	struct mm_fp1_format mm_fp1_format; +	struct mm_fp2_format mm_fp2_format; +	struct mm_fp3_format mm_fp3_format; +	struct mm_fp4_format mm_fp4_format; +	struct mm_fp5_format mm_fp5_format; +	struct fp6_format fp6_format; +	struct mm_fp6_format mm_fp6_format; +	struct mm_i_format mm_i_format; +	struct mm_m_format mm_m_format; +	struct mm_x_format mm_x_format; +	struct mm_b0_format mm_b0_format; +	struct mm_b1_format mm_b1_format; +	struct mm16_m_format mm16_m_format ; +	struct mm16_rb_format mm16_rb_format; +	struct mm16_r3_format mm16_r3_format; +	struct mm16_r5_format mm16_r5_format; +}; + +union mips16e_instruction { +	unsigned int full : 16; +	struct m16e_rr rr; +	struct m16e_jal jal; +	struct m16e_i64 i64; +	struct m16e_ri64 ri64; +	struct m16e_ri ri; +	struct m16e_rri rri; +	struct m16e_i8 i8; +}; + +#endif /* _UAPI_ASM_INST_H */ diff --git a/arch/mips/include/uapi/asm/ioctl.h b/arch/mips/include/uapi/asm/ioctl.h new file mode 100644 index 00000000000..c515a1a4c47 --- /dev/null +++ b/arch/mips/include/uapi/asm/ioctl.h @@ -0,0 +1,27 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 96, 99, 2001 Ralf Baechle <ralf@linux-mips.org> + * Copyright (C) 2009 Wind River Systems + * Written by Ralf Baechle <ralf@linux-mips.org> + */ +#ifndef __ASM_IOCTL_H +#define __ASM_IOCTL_H + +#define _IOC_SIZEBITS	13 +#define _IOC_DIRBITS	3 + +/* + * Direction bits _IOC_NONE could be 0, but OSF/1 gives it a bit. + * And this turns out useful to catch old ioctl numbers in header + * files for us. + */ +#define _IOC_NONE	1U +#define _IOC_READ	2U +#define _IOC_WRITE	4U + +#include <asm-generic/ioctl.h> + +#endif /* __ASM_IOCTL_H */ diff --git a/arch/mips/include/uapi/asm/ioctls.h b/arch/mips/include/uapi/asm/ioctls.h new file mode 100644 index 00000000000..b1e637757fe --- /dev/null +++ b/arch/mips/include/uapi/asm/ioctls.h @@ -0,0 +1,113 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 1996, 2001 Ralf Baechle + * Copyright (C) 2001 MIPS Technologies, Inc. + */ +#ifndef __ASM_IOCTLS_H +#define __ASM_IOCTLS_H + +#include <asm/ioctl.h> + +#define TCGETA		0x5401 +#define TCSETA		0x5402	/* Clashes with SNDCTL_TMR_START sound ioctl */ +#define TCSETAW		0x5403 +#define TCSETAF		0x5404 + +#define TCSBRK		0x5405 +#define TCXONC		0x5406 +#define TCFLSH		0x5407 + +#define TCGETS		0x540d +#define TCSETS		0x540e +#define TCSETSW		0x540f +#define TCSETSF		0x5410 + +#define TIOCEXCL	0x740d		/* set exclusive use of tty */ +#define TIOCNXCL	0x740e		/* reset exclusive use of tty */ +#define TIOCOUTQ	0x7472		/* output queue size */ +#define TIOCSTI		0x5472		/* simulate terminal input */ +#define TIOCMGET	0x741d		/* get all modem bits */ +#define TIOCMBIS	0x741b		/* bis modem bits */ +#define TIOCMBIC	0x741c		/* bic modem bits */ +#define TIOCMSET	0x741a		/* set all modem bits */ +#define TIOCPKT		0x5470		/* pty: set/clear packet mode */ +#define	 TIOCPKT_DATA		0x00	/* data packet */ +#define	 TIOCPKT_FLUSHREAD	0x01	/* flush packet */ +#define	 TIOCPKT_FLUSHWRITE	0x02	/* flush packet */ +#define	 TIOCPKT_STOP		0x04	/* stop output */ +#define	 TIOCPKT_START		0x08	/* start output */ +#define	 TIOCPKT_NOSTOP		0x10	/* no more ^S, ^Q */ +#define	 TIOCPKT_DOSTOP		0x20	/* now do ^S ^Q */ +#define	 TIOCPKT_IOCTL		0x40	/* state change of pty driver */ +#define TIOCSWINSZ	_IOW('t', 103, struct winsize)	/* set window size */ +#define TIOCGWINSZ	_IOR('t', 104, struct winsize)	/* get window size */ +#define TIOCNOTTY	0x5471		/* void tty association */ +#define TIOCSETD	0x7401 +#define TIOCGETD	0x7400 + +#define FIOCLEX		0x6601 +#define FIONCLEX	0x6602 +#define FIOASYNC	0x667d +#define FIONBIO		0x667e +#define FIOQSIZE	0x667f + +#define TIOCGLTC	0x7474			/* get special local chars */ +#define TIOCSLTC	0x7475			/* set special local chars */ +#define TIOCSPGRP	_IOW('t', 118, int)	/* set pgrp of tty */ +#define TIOCGPGRP	_IOR('t', 119, int)	/* get pgrp of tty */ +#define TIOCCONS	_IOW('t', 120, int)	/* become virtual console */ + +#define FIONREAD	0x467f +#define TIOCINQ		FIONREAD + +#define TIOCGETP	0x7408 +#define TIOCSETP	0x7409 +#define TIOCSETN	0x740a			/* TIOCSETP wo flush */ + +/* #define TIOCSETA	_IOW('t', 20, struct termios) set termios struct */ +/* #define TIOCSETAW	_IOW('t', 21, struct termios) drain output, set */ +/* #define TIOCSETAF	_IOW('t', 22, struct termios) drn out, fls in, set */ +/* #define TIOCGETD	_IOR('t', 26, int)	get line discipline */ +/* #define TIOCSETD	_IOW('t', 27, int)	set line discipline */ +						/* 127-124 compat */ + +#define TIOCSBRK	0x5427	/* BSD compatibility */ +#define TIOCCBRK	0x5428	/* BSD compatibility */ +#define TIOCGSID	0x7416	/* Return the session ID of FD */ +#define TCGETS2		_IOR('T', 0x2A, struct termios2) +#define TCSETS2		_IOW('T', 0x2B, struct termios2) +#define TCSETSW2	_IOW('T', 0x2C, struct termios2) +#define TCSETSF2	_IOW('T', 0x2D, struct termios2) +#define TIOCGPTN	_IOR('T', 0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ +#define TIOCSPTLCK	_IOW('T', 0x31, int)  /* Lock/unlock Pty */ +#define TIOCGDEV	_IOR('T', 0x32, unsigned int) /* Get primary device node of /dev/console */ +#define TIOCSIG		_IOW('T', 0x36, int)  /* Generate signal on Pty slave */ +#define TIOCVHANGUP	0x5437 +#define TIOCGPKT	_IOR('T', 0x38, int) /* Get packet mode state */ +#define TIOCGPTLCK	_IOR('T', 0x39, int) /* Get Pty lock state */ +#define TIOCGEXCL	_IOR('T', 0x40, int) /* Get exclusive mode state */ + +/* I hope the range from 0x5480 on is free ... */ +#define TIOCSCTTY	0x5480		/* become controlling tty */ +#define TIOCGSOFTCAR	0x5481 +#define TIOCSSOFTCAR	0x5482 +#define TIOCLINUX	0x5483 +#define TIOCGSERIAL	0x5484 +#define TIOCSSERIAL	0x5485 +#define TCSBRKP		0x5486	/* Needed for POSIX tcsendbreak() */ +#define TIOCSERCONFIG	0x5488 +#define TIOCSERGWILD	0x5489 +#define TIOCSERSWILD	0x548a +#define TIOCGLCKTRMIOS	0x548b +#define TIOCSLCKTRMIOS	0x548c +#define TIOCSERGSTRUCT	0x548d /* For debugging only */ +#define TIOCSERGETLSR	0x548e /* Get line status register */ +#define TIOCSERGETMULTI 0x548f /* Get multiport config	*/ +#define TIOCSERSETMULTI 0x5490 /* Set multiport config */ +#define TIOCMIWAIT	0x5491 /* wait for a change on serial input line(s) */ +#define TIOCGICOUNT	0x5492 /* read serial port inline interrupt counts */ + +#endif /* __ASM_IOCTLS_H */ diff --git a/arch/mips/include/uapi/asm/kvm.h b/arch/mips/include/uapi/asm/kvm.h new file mode 100644 index 00000000000..2c04b6d9ff8 --- /dev/null +++ b/arch/mips/include/uapi/asm/kvm.h @@ -0,0 +1,170 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2012  MIPS Technologies, Inc.  All rights reserved. + * Copyright (C) 2013 Cavium, Inc. + * Authors: Sanjay Lal <sanjayl@kymasys.com> + */ + +#ifndef __LINUX_KVM_MIPS_H +#define __LINUX_KVM_MIPS_H + +#include <linux/types.h> + +/* + * KVM MIPS specific structures and definitions. + * + * Some parts derived from the x86 version of this file. + */ + +/* + * for KVM_GET_REGS and KVM_SET_REGS + * + * If Config[AT] is zero (32-bit CPU), the register contents are + * stored in the lower 32-bits of the struct kvm_regs fields and sign + * extended to 64-bits. + */ +struct kvm_regs { +	/* out (KVM_GET_REGS) / in (KVM_SET_REGS) */ +	__u64 gpr[32]; +	__u64 hi; +	__u64 lo; +	__u64 pc; +}; + +/* + * for KVM_GET_FPU and KVM_SET_FPU + * + * If Status[FR] is zero (32-bit FPU), the upper 32-bits of the FPRs + * are zero filled. + */ +struct kvm_fpu { +	__u64 fpr[32]; +	__u32 fir; +	__u32 fccr; +	__u32 fexr; +	__u32 fenr; +	__u32 fcsr; +	__u32 pad; +}; + + +/* + * For MIPS, we use KVM_SET_ONE_REG and KVM_GET_ONE_REG to access CP0 + * registers.  The id field is broken down as follows: + * + *  bits[2..0]   - Register 'sel' index. + *  bits[7..3]   - Register 'rd'  index. + *  bits[15..8]  - Must be zero. + *  bits[31..16] - 1 -> CP0 registers. + *  bits[51..32] - Must be zero. + *  bits[63..52] - As per linux/kvm.h + * + * Other sets registers may be added in the future.  Each set would + * have its own identifier in bits[31..16]. + * + * The registers defined in struct kvm_regs are also accessible, the + * id values for these are below. + */ + +#define KVM_REG_MIPS_R0 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 0) +#define KVM_REG_MIPS_R1 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 1) +#define KVM_REG_MIPS_R2 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 2) +#define KVM_REG_MIPS_R3 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 3) +#define KVM_REG_MIPS_R4 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 4) +#define KVM_REG_MIPS_R5 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 5) +#define KVM_REG_MIPS_R6 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 6) +#define KVM_REG_MIPS_R7 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 7) +#define KVM_REG_MIPS_R8 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 8) +#define KVM_REG_MIPS_R9 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 9) +#define KVM_REG_MIPS_R10 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 10) +#define KVM_REG_MIPS_R11 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 11) +#define KVM_REG_MIPS_R12 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 12) +#define KVM_REG_MIPS_R13 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 13) +#define KVM_REG_MIPS_R14 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 14) +#define KVM_REG_MIPS_R15 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 15) +#define KVM_REG_MIPS_R16 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 16) +#define KVM_REG_MIPS_R17 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 17) +#define KVM_REG_MIPS_R18 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 18) +#define KVM_REG_MIPS_R19 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 19) +#define KVM_REG_MIPS_R20 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 20) +#define KVM_REG_MIPS_R21 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 21) +#define KVM_REG_MIPS_R22 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 22) +#define KVM_REG_MIPS_R23 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 23) +#define KVM_REG_MIPS_R24 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 24) +#define KVM_REG_MIPS_R25 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 25) +#define KVM_REG_MIPS_R26 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 26) +#define KVM_REG_MIPS_R27 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 27) +#define KVM_REG_MIPS_R28 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 28) +#define KVM_REG_MIPS_R29 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 29) +#define KVM_REG_MIPS_R30 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 30) +#define KVM_REG_MIPS_R31 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 31) + +#define KVM_REG_MIPS_HI (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 32) +#define KVM_REG_MIPS_LO (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 33) +#define KVM_REG_MIPS_PC (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 34) + +/* KVM specific control registers */ + +/* + * CP0_Count control + * DC:    Set 0: Master disable CP0_Count and set COUNT_RESUME to now + *        Set 1: Master re-enable CP0_Count with unchanged bias, handling timer + *               interrupts since COUNT_RESUME + *        This can be used to freeze the timer to get a consistent snapshot of + *        the CP0_Count and timer interrupt pending state, while also resuming + *        safely without losing time or guest timer interrupts. + * Other: Reserved, do not change. + */ +#define KVM_REG_MIPS_COUNT_CTL		(KVM_REG_MIPS | KVM_REG_SIZE_U64 | \ +					 0x20000 | 0) +#define KVM_REG_MIPS_COUNT_CTL_DC	0x00000001 + +/* + * CP0_Count resume monotonic nanoseconds + * The monotonic nanosecond time of the last set of COUNT_CTL.DC (master + * disable). Any reads and writes of Count related registers while + * COUNT_CTL.DC=1 will appear to occur at this time. When COUNT_CTL.DC is + * cleared again (master enable) any timer interrupts since this time will be + * emulated. + * Modifications to times in the future are rejected. + */ +#define KVM_REG_MIPS_COUNT_RESUME	(KVM_REG_MIPS | KVM_REG_SIZE_U64 | \ +					 0x20000 | 1) +/* + * CP0_Count rate in Hz + * Specifies the rate of the CP0_Count timer in Hz. Modifications occur without + * discontinuities in CP0_Count. + */ +#define KVM_REG_MIPS_COUNT_HZ		(KVM_REG_MIPS | KVM_REG_SIZE_U64 | \ +					 0x20000 | 2) + +/* + * KVM MIPS specific structures and definitions + * + */ +struct kvm_debug_exit_arch { +	__u64 epc; +}; + +/* for KVM_SET_GUEST_DEBUG */ +struct kvm_guest_debug_arch { +}; + +/* definition of registers in kvm_run */ +struct kvm_sync_regs { +}; + +/* dummy definition */ +struct kvm_sregs { +}; + +struct kvm_mips_interrupt { +	/* in */ +	__u32 cpu; +	__u32 irq; +}; + +#endif /* __LINUX_KVM_MIPS_H */ diff --git a/arch/mips/include/uapi/asm/kvm_para.h b/arch/mips/include/uapi/asm/kvm_para.h new file mode 100644 index 00000000000..7e16d7c42e6 --- /dev/null +++ b/arch/mips/include/uapi/asm/kvm_para.h @@ -0,0 +1,5 @@ +#ifndef _UAPI_ASM_MIPS_KVM_PARA_H +#define _UAPI_ASM_MIPS_KVM_PARA_H + + +#endif /* _UAPI_ASM_MIPS_KVM_PARA_H */ diff --git a/arch/mips/include/uapi/asm/mman.h b/arch/mips/include/uapi/asm/mman.h new file mode 100644 index 00000000000..cfcb876cae6 --- /dev/null +++ b/arch/mips/include/uapi/asm/mman.h @@ -0,0 +1,101 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 1999, 2002 by Ralf Baechle + */ +#ifndef _ASM_MMAN_H +#define _ASM_MMAN_H + +/* + * Protections are chosen from these bits, OR'd together.  The + * implementation does not necessarily support PROT_EXEC or PROT_WRITE + * without PROT_READ.  The only guarantees are that no writing will be + * allowed without PROT_WRITE and no access will be allowed for PROT_NONE. + */ +#define PROT_NONE	0x00		/* page can not be accessed */ +#define PROT_READ	0x01		/* page can be read */ +#define PROT_WRITE	0x02		/* page can be written */ +#define PROT_EXEC	0x04		/* page can be executed */ +/*			0x08		   reserved for PROT_EXEC_NOFLUSH */ +#define PROT_SEM	0x10		/* page may be used for atomic ops */ +#define PROT_GROWSDOWN	0x01000000	/* mprotect flag: extend change to start of growsdown vma */ +#define PROT_GROWSUP	0x02000000	/* mprotect flag: extend change to end of growsup vma */ + +/* + * Flags for mmap + */ +#define MAP_SHARED	0x001		/* Share changes */ +#define MAP_PRIVATE	0x002		/* Changes are private */ +#define MAP_TYPE	0x00f		/* Mask for type of mapping */ +#define MAP_FIXED	0x010		/* Interpret addr exactly */ + +/* not used by linux, but here to make sure we don't clash with ABI defines */ +#define MAP_RENAME	0x020		/* Assign page to file */ +#define MAP_AUTOGROW	0x040		/* File may grow by writing */ +#define MAP_LOCAL	0x080		/* Copy on fork/sproc */ +#define MAP_AUTORSRV	0x100		/* Logical swap reserved on demand */ + +/* These are linux-specific */ +#define MAP_NORESERVE	0x0400		/* don't check for reservations */ +#define MAP_ANONYMOUS	0x0800		/* don't use a file */ +#define MAP_GROWSDOWN	0x1000		/* stack-like segment */ +#define MAP_DENYWRITE	0x2000		/* ETXTBSY */ +#define MAP_EXECUTABLE	0x4000		/* mark it as an executable */ +#define MAP_LOCKED	0x8000		/* pages are locked */ +#define MAP_POPULATE	0x10000		/* populate (prefault) pagetables */ +#define MAP_NONBLOCK	0x20000		/* do not block on IO */ +#define MAP_STACK	0x40000		/* give out an address that is best suited for process/thread stacks */ +#define MAP_HUGETLB	0x80000		/* create a huge page mapping */ + +/* + * Flags for msync + */ +#define MS_ASYNC	0x0001		/* sync memory asynchronously */ +#define MS_INVALIDATE	0x0002		/* invalidate mappings & caches */ +#define MS_SYNC		0x0004		/* synchronous memory sync */ + +/* + * Flags for mlockall + */ +#define MCL_CURRENT	1		/* lock all current mappings */ +#define MCL_FUTURE	2		/* lock all future mappings */ + +#define MADV_NORMAL	0		/* no further special treatment */ +#define MADV_RANDOM	1		/* expect random page references */ +#define MADV_SEQUENTIAL 2		/* expect sequential page references */ +#define MADV_WILLNEED	3		/* will need these pages */ +#define MADV_DONTNEED	4		/* don't need these pages */ + +/* common parameters: try to keep these consistent across architectures */ +#define MADV_REMOVE	9		/* remove these pages & resources */ +#define MADV_DONTFORK	10		/* don't inherit across fork */ +#define MADV_DOFORK	11		/* do inherit across fork */ + +#define MADV_MERGEABLE	 12		/* KSM may merge identical pages */ +#define MADV_UNMERGEABLE 13		/* KSM may not merge identical pages */ +#define MADV_HWPOISON	 100		/* poison a page for testing */ + +#define MADV_HUGEPAGE	14		/* Worth backing with hugepages */ +#define MADV_NOHUGEPAGE 15		/* Not worth backing with hugepages */ + +#define MADV_DONTDUMP	16		/* Explicity exclude from the core dump, +					   overrides the coredump filter bits */ +#define MADV_DODUMP	17		/* Clear the MADV_NODUMP flag */ + +/* compatibility flags */ +#define MAP_FILE	0 + +/* + * When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. + * This gives us 6 bits, which is enough until someone invents 128 bit address + * spaces. + * + * Assume these are all power of twos. + * When 0 use the default page size. + */ +#define MAP_HUGE_SHIFT	26 +#define MAP_HUGE_MASK	0x3f + +#endif /* _ASM_MMAN_H */ diff --git a/arch/mips/include/uapi/asm/msgbuf.h b/arch/mips/include/uapi/asm/msgbuf.h new file mode 100644 index 00000000000..df849e87d9a --- /dev/null +++ b/arch/mips/include/uapi/asm/msgbuf.h @@ -0,0 +1,47 @@ +#ifndef _ASM_MSGBUF_H +#define _ASM_MSGBUF_H + + +/* + * The msqid64_ds structure for the MIPS architecture. + * Note extra padding because this structure is passed back and forth + * between kernel and user space. + * + * Pad space is left for: + * - extension of time_t to 64-bit on 32-bitsystem to solve the y2038 problem + * - 2 miscellaneous unsigned long values + */ + +struct msqid64_ds { +	struct ipc64_perm msg_perm; +#if !defined(__mips64) && defined(__MIPSEB__) +	unsigned long	__unused1; +#endif +	__kernel_time_t msg_stime;	/* last msgsnd time */ +#if !defined(__mips64) && defined(__MIPSEL__) +	unsigned long	__unused1; +#endif +#if !defined(__mips64) && defined(__MIPSEB__) +	unsigned long	__unused2; +#endif +	__kernel_time_t msg_rtime;	/* last msgrcv time */ +#if !defined(__mips64) && defined(__MIPSEL__) +	unsigned long	__unused2; +#endif +#if !defined(__mips64) && defined(__MIPSEB__) +	unsigned long	__unused3; +#endif +	__kernel_time_t msg_ctime;	/* last change time */ +#if !defined(__mips64) && defined(__MIPSEL__) +	unsigned long	__unused3; +#endif +	unsigned long  msg_cbytes;	/* current number of bytes on queue */ +	unsigned long  msg_qnum;	/* number of messages in queue */ +	unsigned long  msg_qbytes;	/* max number of bytes on queue */ +	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */ +	__kernel_pid_t msg_lrpid;	/* last receive pid */ +	unsigned long  __unused4; +	unsigned long  __unused5; +}; + +#endif /* _ASM_MSGBUF_H */ diff --git a/arch/mips/include/uapi/asm/param.h b/arch/mips/include/uapi/asm/param.h new file mode 100644 index 00000000000..da3920fce9a --- /dev/null +++ b/arch/mips/include/uapi/asm/param.h @@ -0,0 +1,16 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright 1994 - 2000, 2002 Ralf Baechle (ralf@gnu.org) + * Copyright 2000 Silicon Graphics, Inc. + */ +#ifndef _ASM_PARAM_H +#define _ASM_PARAM_H + +#define EXEC_PAGESIZE	65536 + +#include <asm-generic/param.h> + +#endif /* _ASM_PARAM_H */ diff --git a/arch/mips/include/uapi/asm/poll.h b/arch/mips/include/uapi/asm/poll.h new file mode 100644 index 00000000000..47b95208043 --- /dev/null +++ b/arch/mips/include/uapi/asm/poll.h @@ -0,0 +1,9 @@ +#ifndef __ASM_POLL_H +#define __ASM_POLL_H + +#define POLLWRNORM	POLLOUT +#define POLLWRBAND	0x0100 + +#include <asm-generic/poll.h> + +#endif /* __ASM_POLL_H */ diff --git a/arch/mips/include/uapi/asm/posix_types.h b/arch/mips/include/uapi/asm/posix_types.h new file mode 100644 index 00000000000..fa03ec3fbf8 --- /dev/null +++ b/arch/mips/include/uapi/asm/posix_types.h @@ -0,0 +1,32 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1996, 97, 98, 99, 2000 by Ralf Baechle + * Copyright (C) 1999, 2000 Silicon Graphics, Inc. + */ +#ifndef _ASM_POSIX_TYPES_H +#define _ASM_POSIX_TYPES_H + +#include <asm/sgidefs.h> + +/* + * This file is generally used by user-level software, so you need to + * be a little careful about namespace pollution etc.  Also, we cannot + * assume GCC is being used. + */ + +typedef long		__kernel_daddr_t; +#define __kernel_daddr_t __kernel_daddr_t + +#if (_MIPS_SZLONG == 32) +typedef struct { +	long	val[2]; +} __kernel_fsid_t; +#define __kernel_fsid_t __kernel_fsid_t +#endif + +#include <asm-generic/posix_types.h> + +#endif /* _ASM_POSIX_TYPES_H */ diff --git a/arch/mips/include/uapi/asm/ptrace.h b/arch/mips/include/uapi/asm/ptrace.h new file mode 100644 index 00000000000..b26f7e31727 --- /dev/null +++ b/arch/mips/include/uapi/asm/ptrace.h @@ -0,0 +1,103 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 by Ralf Baechle + * Copyright (C) 1999, 2000 Silicon Graphics, Inc. + */ +#ifndef _UAPI_ASM_PTRACE_H +#define _UAPI_ASM_PTRACE_H + +/* 0 - 31 are integer registers, 32 - 63 are fp registers.  */ +#define FPR_BASE	32 +#define PC		64 +#define CAUSE		65 +#define BADVADDR	66 +#define MMHI		67 +#define MMLO		68 +#define FPC_CSR		69 +#define FPC_EIR		70 +#define DSP_BASE	71		/* 3 more hi / lo register pairs */ +#define DSP_CONTROL	77 +#define ACX		78 + +#ifndef __KERNEL__ +/* + * This struct defines the way the registers are stored on the stack during a + * system call/exception. As usual the registers k0/k1 aren't being saved. + */ +struct pt_regs { +	/* Saved main processor registers. */ +	unsigned long regs[32]; + +	/* Saved special registers. */ +	unsigned long cp0_status; +	unsigned long hi; +	unsigned long lo; +	unsigned long cp0_badvaddr; +	unsigned long cp0_cause; +	unsigned long cp0_epc; +} __attribute__ ((aligned (8))); +#endif /* __KERNEL__ */ + +/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ +#define PTRACE_GETREGS		12 +#define PTRACE_SETREGS		13 +#define PTRACE_GETFPREGS		14 +#define PTRACE_SETFPREGS		15 +/* #define PTRACE_GETFPXREGS		18 */ +/* #define PTRACE_SETFPXREGS		19 */ + +#define PTRACE_OLDSETOPTIONS	21 + +#define PTRACE_GET_THREAD_AREA	25 +#define PTRACE_SET_THREAD_AREA	26 + +/* Calls to trace a 64bit program from a 32bit program.	 */ +#define PTRACE_PEEKTEXT_3264	0xc0 +#define PTRACE_PEEKDATA_3264	0xc1 +#define PTRACE_POKETEXT_3264	0xc2 +#define PTRACE_POKEDATA_3264	0xc3 +#define PTRACE_GET_THREAD_AREA_3264	0xc4 + +/* Read and write watchpoint registers.	 */ +enum pt_watch_style { +	pt_watch_style_mips32, +	pt_watch_style_mips64 +}; +struct mips32_watch_regs { +	unsigned int watchlo[8]; +	/* Lower 16 bits of watchhi. */ +	unsigned short watchhi[8]; +	/* Valid mask and I R W bits. +	 * bit 0 -- 1 if W bit is usable. +	 * bit 1 -- 1 if R bit is usable. +	 * bit 2 -- 1 if I bit is usable. +	 * bits 3 - 11 -- Valid watchhi mask bits. +	 */ +	unsigned short watch_masks[8]; +	/* The number of valid watch register pairs.  */ +	unsigned int num_valid; +} __attribute__((aligned(8))); + +struct mips64_watch_regs { +	unsigned long long watchlo[8]; +	unsigned short watchhi[8]; +	unsigned short watch_masks[8]; +	unsigned int num_valid; +} __attribute__((aligned(8))); + +struct pt_watch_regs { +	enum pt_watch_style style; +	union { +		struct mips32_watch_regs mips32; +		struct mips64_watch_regs mips64; +	}; +}; + +#define PTRACE_GET_WATCH_REGS	0xd0 +#define PTRACE_SET_WATCH_REGS	0xd1 + + +#endif /* _UAPI_ASM_PTRACE_H */ diff --git a/arch/mips/include/uapi/asm/resource.h b/arch/mips/include/uapi/asm/resource.h new file mode 100644 index 00000000000..b26439d4ab0 --- /dev/null +++ b/arch/mips/include/uapi/asm/resource.h @@ -0,0 +1,35 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 96, 98, 99, 2000 by Ralf Baechle + * Copyright (C) 1999 Silicon Graphics, Inc. + */ +#ifndef _ASM_RESOURCE_H +#define _ASM_RESOURCE_H + + +/* + * These five resource limit IDs have a MIPS/Linux-specific ordering, + * the rest comes from the generic header: + */ +#define RLIMIT_NOFILE		5	/* max number of open files */ +#define RLIMIT_AS		6	/* address space limit */ +#define RLIMIT_RSS		7	/* max resident set size */ +#define RLIMIT_NPROC		8	/* max number of processes */ +#define RLIMIT_MEMLOCK		9	/* max locked-in-memory address space */ + +/* + * SuS says limits have to be unsigned. + * Which makes a ton more sense anyway, + * but we keep the old value on MIPS32, + * for compatibility: + */ +#ifndef __mips64 +# define RLIM_INFINITY		0x7fffffffUL +#endif + +#include <asm-generic/resource.h> + +#endif /* _ASM_RESOURCE_H */ diff --git a/arch/mips/include/uapi/asm/sembuf.h b/arch/mips/include/uapi/asm/sembuf.h new file mode 100644 index 00000000000..e1085ac880f --- /dev/null +++ b/arch/mips/include/uapi/asm/sembuf.h @@ -0,0 +1,22 @@ +#ifndef _ASM_SEMBUF_H +#define _ASM_SEMBUF_H + +/* + * The semid64_ds structure for the MIPS architecture. + * Note extra padding because this structure is passed back and forth + * between kernel and user space. + * + * Pad space is left for: + * - 2 miscellaneous 64-bit values + */ + +struct semid64_ds { +	struct ipc64_perm sem_perm;		/* permissions .. see ipc.h */ +	__kernel_time_t sem_otime;		/* last semop time */ +	__kernel_time_t sem_ctime;		/* last change time */ +	unsigned long	sem_nsems;		/* no. of semaphores in array */ +	unsigned long	__unused1; +	unsigned long	__unused2; +}; + +#endif /* _ASM_SEMBUF_H */ diff --git a/arch/mips/include/uapi/asm/setup.h b/arch/mips/include/uapi/asm/setup.h new file mode 100644 index 00000000000..93f237bb135 --- /dev/null +++ b/arch/mips/include/uapi/asm/setup.h @@ -0,0 +1,7 @@ +#ifndef _UAPI_MIPS_SETUP_H +#define _UAPI_MIPS_SETUP_H + +#define COMMAND_LINE_SIZE	4096 + + +#endif /* _UAPI_MIPS_SETUP_H */ diff --git a/arch/mips/include/uapi/asm/sgidefs.h b/arch/mips/include/uapi/asm/sgidefs.h new file mode 100644 index 00000000000..876442fcfb3 --- /dev/null +++ b/arch/mips/include/uapi/asm/sgidefs.h @@ -0,0 +1,44 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1996, 1999, 2001 Ralf Baechle + * Copyright (C) 1999 Silicon Graphics, Inc. + * Copyright (C) 2001 MIPS Technologies, Inc. + */ +#ifndef __ASM_SGIDEFS_H +#define __ASM_SGIDEFS_H + +/* + * Using a Linux compiler for building Linux seems logic but not to + * everybody. + */ +#ifndef __linux__ +#error Use a Linux compiler or give up. +#endif + +/* + * Definitions for the ISA levels + * + * With the introduction of MIPS32 / MIPS64 instruction sets definitions + * MIPS ISAs are no longer subsets of each other.  Therefore comparisons + * on these symbols except with == may result in unexpected results and + * are forbidden! + */ +#define _MIPS_ISA_MIPS1		1 +#define _MIPS_ISA_MIPS2		2 +#define _MIPS_ISA_MIPS3		3 +#define _MIPS_ISA_MIPS4		4 +#define _MIPS_ISA_MIPS5		5 +#define _MIPS_ISA_MIPS32	6 +#define _MIPS_ISA_MIPS64	7 + +/* + * Subprogram calling convention + */ +#define _MIPS_SIM_ABI32		1 +#define _MIPS_SIM_NABI32	2 +#define _MIPS_SIM_ABI64		3 + +#endif /* __ASM_SGIDEFS_H */ diff --git a/arch/mips/include/uapi/asm/shmbuf.h b/arch/mips/include/uapi/asm/shmbuf.h new file mode 100644 index 00000000000..f994438277b --- /dev/null +++ b/arch/mips/include/uapi/asm/shmbuf.h @@ -0,0 +1,38 @@ +#ifndef _ASM_SHMBUF_H +#define _ASM_SHMBUF_H + +/* + * The shmid64_ds structure for the MIPS architecture. + * Note extra padding because this structure is passed back and forth + * between kernel and user space. + * + * Pad space is left for: + * - 2 miscellaneous 32-bit rsp. 64-bit values + */ + +struct shmid64_ds { +	struct ipc64_perm	shm_perm;	/* operation perms */ +	size_t			shm_segsz;	/* size of segment (bytes) */ +	__kernel_time_t		shm_atime;	/* last attach time */ +	__kernel_time_t		shm_dtime;	/* last detach time */ +	__kernel_time_t		shm_ctime;	/* last change time */ +	__kernel_pid_t		shm_cpid;	/* pid of creator */ +	__kernel_pid_t		shm_lpid;	/* pid of last operator */ +	unsigned long		shm_nattch;	/* no. of current attaches */ +	unsigned long		__unused1; +	unsigned long		__unused2; +}; + +struct shminfo64 { +	unsigned long	shmmax; +	unsigned long	shmmin; +	unsigned long	shmmni; +	unsigned long	shmseg; +	unsigned long	shmall; +	unsigned long	__unused1; +	unsigned long	__unused2; +	unsigned long	__unused3; +	unsigned long	__unused4; +}; + +#endif /* _ASM_SHMBUF_H */ diff --git a/arch/mips/include/uapi/asm/sigcontext.h b/arch/mips/include/uapi/asm/sigcontext.h new file mode 100644 index 00000000000..6c9906f59c6 --- /dev/null +++ b/arch/mips/include/uapi/asm/sigcontext.h @@ -0,0 +1,78 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1996, 1997, 1999 by Ralf Baechle + * Copyright (C) 1999 Silicon Graphics, Inc. + */ +#ifndef _UAPI_ASM_SIGCONTEXT_H +#define _UAPI_ASM_SIGCONTEXT_H + +#include <linux/types.h> +#include <asm/sgidefs.h> + +#if _MIPS_SIM == _MIPS_SIM_ABI32 + +/* + * Keep this struct definition in sync with the sigcontext fragment + * in arch/mips/tools/offset.c + */ +struct sigcontext { +	unsigned int		sc_regmask;	/* Unused */ +	unsigned int		sc_status;	/* Unused */ +	unsigned long long	sc_pc; +	unsigned long long	sc_regs[32]; +	unsigned long long	sc_fpregs[32]; +	unsigned int		sc_acx;		/* Was sc_ownedfp */ +	unsigned int		sc_fpc_csr; +	unsigned int		sc_fpc_eir;	/* Unused */ +	unsigned int		sc_used_math; +	unsigned int		sc_dsp;		/* dsp status, was sc_ssflags */ +	unsigned long long	sc_mdhi; +	unsigned long long	sc_mdlo; +	unsigned long		sc_hi1;		/* Was sc_cause */ +	unsigned long		sc_lo1;		/* Was sc_badvaddr */ +	unsigned long		sc_hi2;		/* Was sc_sigset[4] */ +	unsigned long		sc_lo2; +	unsigned long		sc_hi3; +	unsigned long		sc_lo3; +}; + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ + +#if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 + +#include <linux/posix_types.h> +/* + * Keep this struct definition in sync with the sigcontext fragment + * in arch/mips/tools/offset.c + * + * Warning: this structure illdefined with sc_badvaddr being just an unsigned + * int so it was changed to unsigned long in 2.6.0-test1.  This may break + * binary compatibility - no prisoners. + * DSP ASE in 2.6.12-rc4.  Turn sc_mdhi and sc_mdlo into an array of four + * entries, add sc_dsp and sc_reserved for padding.  No prisoners. + */ +struct sigcontext { +	__u64	sc_regs[32]; +	__u64	sc_fpregs[32]; +	__u64	sc_mdhi; +	__u64	sc_hi1; +	__u64	sc_hi2; +	__u64	sc_hi3; +	__u64	sc_mdlo; +	__u64	sc_lo1; +	__u64	sc_lo2; +	__u64	sc_lo3; +	__u64	sc_pc; +	__u32	sc_fpc_csr; +	__u32	sc_used_math; +	__u32	sc_dsp; +	__u32	sc_reserved; +}; + + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 */ + +#endif /* _UAPI_ASM_SIGCONTEXT_H */ diff --git a/arch/mips/include/uapi/asm/siginfo.h b/arch/mips/include/uapi/asm/siginfo.h new file mode 100644 index 00000000000..e81174432ba --- /dev/null +++ b/arch/mips/include/uapi/asm/siginfo.h @@ -0,0 +1,124 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1998, 1999, 2001, 2003 Ralf Baechle + * Copyright (C) 2000, 2001 Silicon Graphics, Inc. + */ +#ifndef _UAPI_ASM_SIGINFO_H +#define _UAPI_ASM_SIGINFO_H + + +#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int)) +#undef __ARCH_SI_TRAPNO /* exception code needs to fill this ...  */ + +#define HAVE_ARCH_SIGINFO_T + +/* + * We duplicate the generic versions - <asm-generic/siginfo.h> is just borked + * by design ... + */ +#define HAVE_ARCH_COPY_SIGINFO +struct siginfo; + +/* + * Careful to keep union _sifields from shifting ... + */ +#if _MIPS_SZLONG == 32 +#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) +#elif _MIPS_SZLONG == 64 +#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) +#else +#error _MIPS_SZLONG neither 32 nor 64 +#endif + +#define __ARCH_SIGSYS + +#include <asm-generic/siginfo.h> + +typedef struct siginfo { +	int si_signo; +	int si_code; +	int si_errno; +	int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3]; + +	union { +		int _pad[SI_PAD_SIZE]; + +		/* kill() */ +		struct { +			pid_t _pid;		/* sender's pid */ +			__ARCH_SI_UID_T _uid;	/* sender's uid */ +		} _kill; + +		/* POSIX.1b timers */ +		struct { +			timer_t _tid;		/* timer id */ +			int _overrun;		/* overrun count */ +			char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; +			sigval_t _sigval;	/* same as below */ +			int _sys_private;	/* not to be passed to user */ +		} _timer; + +		/* POSIX.1b signals */ +		struct { +			pid_t _pid;		/* sender's pid */ +			__ARCH_SI_UID_T _uid;	/* sender's uid */ +			sigval_t _sigval; +		} _rt; + +		/* SIGCHLD */ +		struct { +			pid_t _pid;		/* which child */ +			__ARCH_SI_UID_T _uid;	/* sender's uid */ +			int _status;		/* exit code */ +			clock_t _utime; +			clock_t _stime; +		} _sigchld; + +		/* IRIX SIGCHLD */ +		struct { +			pid_t _pid;		/* which child */ +			clock_t _utime; +			int _status;		/* exit code */ +			clock_t _stime; +		} _irix_sigchld; + +		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ +		struct { +			void __user *_addr; /* faulting insn/memory ref. */ +#ifdef __ARCH_SI_TRAPNO +			int _trapno;	/* TRAP # which caused the signal */ +#endif +			short _addr_lsb; +		} _sigfault; + +		/* SIGPOLL, SIGXFSZ (To do ...)	 */ +		struct { +			__ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */ +			int _fd; +		} _sigpoll; + +		/* SIGSYS */ +		struct { +			void __user *_call_addr; /* calling user insn */ +			int _syscall;	/* triggering system call number */ +			unsigned int _arch;	/* AUDIT_ARCH_* of syscall */ +		} _sigsys; +	} _sifields; +} siginfo_t; + +/* + * si_code values + * Again these have been chosen to be IRIX compatible. + */ +#undef SI_ASYNCIO +#undef SI_TIMER +#undef SI_MESGQ +#define SI_ASYNCIO	-2	/* sent by AIO completion */ +#define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */ +#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */ + + +#endif /* _UAPI_ASM_SIGINFO_H */ diff --git a/arch/mips/include/uapi/asm/signal.h b/arch/mips/include/uapi/asm/signal.h new file mode 100644 index 00000000000..addb9f556b7 --- /dev/null +++ b/arch/mips/include/uapi/asm/signal.h @@ -0,0 +1,119 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 96, 97, 98, 99, 2003 by Ralf Baechle + * Copyright (C) 1999 Silicon Graphics, Inc. + */ +#ifndef _UAPI_ASM_SIGNAL_H +#define _UAPI_ASM_SIGNAL_H + +#include <linux/types.h> + +#define _NSIG		128 +#define _NSIG_BPW	(sizeof(unsigned long) * 8) +#define _NSIG_WORDS	(_NSIG / _NSIG_BPW) + +typedef struct { +	unsigned long sig[_NSIG_WORDS]; +} sigset_t; + +typedef unsigned long old_sigset_t;		/* at least 32 bits */ + +#define SIGHUP		 1	/* Hangup (POSIX).  */ +#define SIGINT		 2	/* Interrupt (ANSI).  */ +#define SIGQUIT		 3	/* Quit (POSIX).  */ +#define SIGILL		 4	/* Illegal instruction (ANSI).	*/ +#define SIGTRAP		 5	/* Trace trap (POSIX).	*/ +#define SIGIOT		 6	/* IOT trap (4.2 BSD).	*/ +#define SIGABRT		 SIGIOT /* Abort (ANSI).  */ +#define SIGEMT		 7 +#define SIGFPE		 8	/* Floating-point exception (ANSI).  */ +#define SIGKILL		 9	/* Kill, unblockable (POSIX).  */ +#define SIGBUS		10	/* BUS error (4.2 BSD).	 */ +#define SIGSEGV		11	/* Segmentation violation (ANSI).  */ +#define SIGSYS		12 +#define SIGPIPE		13	/* Broken pipe (POSIX).	 */ +#define SIGALRM		14	/* Alarm clock (POSIX).	 */ +#define SIGTERM		15	/* Termination (ANSI).	*/ +#define SIGUSR1		16	/* User-defined signal 1 (POSIX).  */ +#define SIGUSR2		17	/* User-defined signal 2 (POSIX).  */ +#define SIGCHLD		18	/* Child status has changed (POSIX).  */ +#define SIGCLD		SIGCHLD /* Same as SIGCHLD (System V).	*/ +#define SIGPWR		19	/* Power failure restart (System V).  */ +#define SIGWINCH	20	/* Window size change (4.3 BSD, Sun).  */ +#define SIGURG		21	/* Urgent condition on socket (4.2 BSD).  */ +#define SIGIO		22	/* I/O now possible (4.2 BSD).	*/ +#define SIGPOLL		SIGIO	/* Pollable event occurred (System V).	*/ +#define SIGSTOP		23	/* Stop, unblockable (POSIX).  */ +#define SIGTSTP		24	/* Keyboard stop (POSIX).  */ +#define SIGCONT		25	/* Continue (POSIX).  */ +#define SIGTTIN		26	/* Background read from tty (POSIX).  */ +#define SIGTTOU		27	/* Background write to tty (POSIX).  */ +#define SIGVTALRM	28	/* Virtual alarm clock (4.2 BSD).  */ +#define SIGPROF		29	/* Profiling alarm clock (4.2 BSD).  */ +#define SIGXCPU		30	/* CPU limit exceeded (4.2 BSD).  */ +#define SIGXFSZ		31	/* File size limit exceeded (4.2 BSD).	*/ + +/* These should not be considered constants from userland.  */ +#define SIGRTMIN	32 +#define SIGRTMAX	_NSIG + +/* + * SA_FLAGS values: + * + * SA_ONSTACK indicates that a registered stack_t will be used. + * SA_RESTART flag to get restarting signals (which were the default long ago) + * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. + * SA_RESETHAND clears the handler when the signal is delivered. + * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. + * SA_NODEFER prevents the current signal from being masked in the handler. + * + * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single + * Unix names RESETHAND and NODEFER respectively. + * + * SA_RESTORER used to be defined as 0x04000000 but only the O32 ABI ever + * supported its use and no libc was using it, so the entire sa-restorer + * functionality was removed with lmo commit 39bffc12c3580ab for 2.5.48 + * retaining only the SA_RESTORER definition as a reminder to avoid + * accidental reuse of the mask bit. + */ +#define SA_ONSTACK	0x08000000 +#define SA_RESETHAND	0x80000000 +#define SA_RESTART	0x10000000 +#define SA_SIGINFO	0x00000008 +#define SA_NODEFER	0x40000000 +#define SA_NOCLDWAIT	0x00010000 +#define SA_NOCLDSTOP	0x00000001 + +#define SA_NOMASK	SA_NODEFER +#define SA_ONESHOT	SA_RESETHAND + +#define MINSIGSTKSZ    2048 +#define SIGSTKSZ       8192 + + +#define SIG_BLOCK	1	/* for blocking signals */ +#define SIG_UNBLOCK	2	/* for unblocking signals */ +#define SIG_SETMASK	3	/* for setting the signal mask */ + +#include <asm-generic/signal-defs.h> + +#ifndef __KERNEL__ +struct sigaction { +	unsigned int	sa_flags; +	__sighandler_t	sa_handler; +	sigset_t	sa_mask; +}; +#endif + +/* IRIX compatible stack_t  */ +typedef struct sigaltstack { +	void __user *ss_sp; +	size_t ss_size; +	int ss_flags; +} stack_t; + + +#endif /* _UAPI_ASM_SIGNAL_H */ diff --git a/arch/mips/include/uapi/asm/socket.h b/arch/mips/include/uapi/asm/socket.h new file mode 100644 index 00000000000..a14baa218c7 --- /dev/null +++ b/arch/mips/include/uapi/asm/socket.h @@ -0,0 +1,101 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1997, 1999, 2000, 2001 Ralf Baechle + * Copyright (C) 2000, 2001 Silicon Graphics, Inc. + */ +#ifndef _UAPI_ASM_SOCKET_H +#define _UAPI_ASM_SOCKET_H + +#include <asm/sockios.h> + +/* + * For setsockopt(2) + * + * This defines are ABI conformant as far as Linux supports these ... + */ +#define SOL_SOCKET	0xffff + +#define SO_DEBUG	0x0001	/* Record debugging information.  */ +#define SO_REUSEADDR	0x0004	/* Allow reuse of local addresses.  */ +#define SO_KEEPALIVE	0x0008	/* Keep connections alive and send +				   SIGPIPE when they die.  */ +#define SO_DONTROUTE	0x0010	/* Don't do local routing.  */ +#define SO_BROADCAST	0x0020	/* Allow transmission of +				   broadcast messages.	*/ +#define SO_LINGER	0x0080	/* Block on close of a reliable +				   socket to transmit pending data.  */ +#define SO_OOBINLINE 0x0100	/* Receive out-of-band data in-band.  */ +#define SO_REUSEPORT 0x0200	/* Allow local address and port reuse.  */ + +#define SO_TYPE		0x1008	/* Compatible name for SO_STYLE.  */ +#define SO_STYLE	SO_TYPE /* Synonym */ +#define SO_ERROR	0x1007	/* get error status and clear */ +#define SO_SNDBUF	0x1001	/* Send buffer size. */ +#define SO_RCVBUF	0x1002	/* Receive buffer. */ +#define SO_SNDLOWAT	0x1003	/* send low-water mark */ +#define SO_RCVLOWAT	0x1004	/* receive low-water mark */ +#define SO_SNDTIMEO	0x1005	/* send timeout */ +#define SO_RCVTIMEO	0x1006	/* receive timeout */ +#define SO_ACCEPTCONN	0x1009 +#define SO_PROTOCOL	0x1028	/* protocol type */ +#define SO_DOMAIN	0x1029	/* domain/socket family */ + +/* linux-specific, might as well be the same as on i386 */ +#define SO_NO_CHECK	11 +#define SO_PRIORITY	12 +#define SO_BSDCOMPAT	14 + +#define SO_PASSCRED	17 +#define SO_PEERCRED	18 + +/* Security levels - as per NRL IPv6 - don't actually do anything */ +#define SO_SECURITY_AUTHENTICATION		22 +#define SO_SECURITY_ENCRYPTION_TRANSPORT	23 +#define SO_SECURITY_ENCRYPTION_NETWORK		24 + +#define SO_BINDTODEVICE		25 + +/* Socket filtering */ +#define SO_ATTACH_FILTER	26 +#define SO_DETACH_FILTER	27 +#define SO_GET_FILTER		SO_ATTACH_FILTER + +#define SO_PEERNAME		28 +#define SO_TIMESTAMP		29 +#define SCM_TIMESTAMP		SO_TIMESTAMP + +#define SO_PEERSEC		30 +#define SO_SNDBUFFORCE		31 +#define SO_RCVBUFFORCE		33 +#define SO_PASSSEC		34 +#define SO_TIMESTAMPNS		35 +#define SCM_TIMESTAMPNS		SO_TIMESTAMPNS + +#define SO_MARK			36 + +#define SO_TIMESTAMPING		37 +#define SCM_TIMESTAMPING	SO_TIMESTAMPING + +#define SO_RXQ_OVFL		40 + +#define SO_WIFI_STATUS		41 +#define SCM_WIFI_STATUS		SO_WIFI_STATUS +#define SO_PEEK_OFF		42 + +/* Instruct lower device to use last 4-bytes of skb data as FCS */ +#define SO_NOFCS		43 + +#define SO_LOCK_FILTER		44 + +#define SO_SELECT_ERR_QUEUE	45 + +#define SO_BUSY_POLL		46 + +#define SO_MAX_PACING_RATE	47 + +#define SO_BPF_EXTENSIONS	48 + +#endif /* _UAPI_ASM_SOCKET_H */ diff --git a/arch/mips/include/uapi/asm/sockios.h b/arch/mips/include/uapi/asm/sockios.h new file mode 100644 index 00000000000..419fbe661da --- /dev/null +++ b/arch/mips/include/uapi/asm/sockios.h @@ -0,0 +1,26 @@ +/* + * Socket-level I/O control calls. + * + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995 by Ralf Baechle + */ +#ifndef _ASM_SOCKIOS_H +#define _ASM_SOCKIOS_H + +#include <asm/ioctl.h> + +/* Socket-level I/O control calls. */ +#define FIOGETOWN	_IOR('f', 123, int) +#define FIOSETOWN	_IOW('f', 124, int) + +#define SIOCATMARK	_IOR('s', 7, int) +#define SIOCSPGRP	_IOW('s', 8, pid_t) +#define SIOCGPGRP	_IOR('s', 9, pid_t) + +#define SIOCGSTAMP	0x8906		/* Get stamp (timeval) */ +#define SIOCGSTAMPNS	0x8907		/* Get stamp (timespec) */ + +#endif /* _ASM_SOCKIOS_H */ diff --git a/arch/mips/include/uapi/asm/stat.h b/arch/mips/include/uapi/asm/stat.h new file mode 100644 index 00000000000..b47bc541bbc --- /dev/null +++ b/arch/mips/include/uapi/asm/stat.h @@ -0,0 +1,132 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 1999, 2000 Ralf Baechle + * Copyright (C) 2000 Silicon Graphics, Inc. + */ +#ifndef _ASM_STAT_H +#define _ASM_STAT_H + +#include <linux/types.h> + +#include <asm/sgidefs.h> + +#if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32) + +struct stat { +	unsigned	st_dev; +	long		st_pad1[3];		/* Reserved for network id */ +	ino_t		st_ino; +	mode_t		st_mode; +	__u32		st_nlink; +	uid_t		st_uid; +	gid_t		st_gid; +	unsigned	st_rdev; +	long		st_pad2[2]; +	off_t		st_size; +	long		st_pad3; +	/* +	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime +	 * but we don't have it under Linux. +	 */ +	time_t		st_atime; +	long		st_atime_nsec; +	time_t		st_mtime; +	long		st_mtime_nsec; +	time_t		st_ctime; +	long		st_ctime_nsec; +	long		st_blksize; +	long		st_blocks; +	long		st_pad4[14]; +}; + +/* + * This matches struct stat64 in glibc2.1, hence the absolutely insane + * amounts of padding around dev_t's.  The memory layout is the same as of + * struct stat of the 64-bit kernel. + */ + +struct stat64 { +	unsigned long	st_dev; +	unsigned long	st_pad0[3];	/* Reserved for st_dev expansion  */ + +	unsigned long long	st_ino; + +	mode_t		st_mode; +	__u32		st_nlink; + +	uid_t		st_uid; +	gid_t		st_gid; + +	unsigned long	st_rdev; +	unsigned long	st_pad1[3];	/* Reserved for st_rdev expansion  */ + +	long long	st_size; + +	/* +	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime +	 * but we don't have it under Linux. +	 */ +	time_t		st_atime; +	unsigned long	st_atime_nsec;	/* Reserved for st_atime expansion  */ + +	time_t		st_mtime; +	unsigned long	st_mtime_nsec;	/* Reserved for st_mtime expansion  */ + +	time_t		st_ctime; +	unsigned long	st_ctime_nsec;	/* Reserved for st_ctime expansion  */ + +	unsigned long	st_blksize; +	unsigned long	st_pad2; + +	long long	st_blocks; +}; + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ + +#if _MIPS_SIM == _MIPS_SIM_ABI64 + +/* The memory layout is the same as of struct stat64 of the 32-bit kernel.  */ +struct stat { +	unsigned int		st_dev; +	unsigned int		st_pad0[3]; /* Reserved for st_dev expansion */ + +	unsigned long		st_ino; + +	mode_t			st_mode; +	__u32			st_nlink; + +	uid_t			st_uid; +	gid_t			st_gid; + +	unsigned int		st_rdev; +	unsigned int		st_pad1[3]; /* Reserved for st_rdev expansion */ + +	off_t			st_size; + +	/* +	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime +	 * but we don't have it under Linux. +	 */ +	unsigned int		st_atime; +	unsigned int		st_atime_nsec; + +	unsigned int		st_mtime; +	unsigned int		st_mtime_nsec; + +	unsigned int		st_ctime; +	unsigned int		st_ctime_nsec; + +	unsigned int		st_blksize; +	unsigned int		st_pad2; + +	unsigned long		st_blocks; +}; + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ + +#define STAT_HAVE_NSEC 1 + +#endif /* _ASM_STAT_H */ diff --git a/arch/mips/include/uapi/asm/statfs.h b/arch/mips/include/uapi/asm/statfs.h new file mode 100644 index 00000000000..3305c834fc1 --- /dev/null +++ b/arch/mips/include/uapi/asm/statfs.h @@ -0,0 +1,100 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 1999 by Ralf Baechle + */ +#ifndef _ASM_STATFS_H +#define _ASM_STATFS_H + +#include <linux/posix_types.h> +#include <asm/sgidefs.h> + +#ifndef __KERNEL_STRICT_NAMES + +#include <linux/types.h> + +typedef __kernel_fsid_t	       fsid_t; + +#endif + +struct statfs { +	long		f_type; +#define f_fstyp f_type +	long		f_bsize; +	long		f_frsize;	/* Fragment size - unsupported */ +	long		f_blocks; +	long		f_bfree; +	long		f_files; +	long		f_ffree; +	long		f_bavail; + +	/* Linux specials */ +	__kernel_fsid_t f_fsid; +	long		f_namelen; +	long		f_flags; +	long		f_spare[5]; +}; + +#if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32) + +/* + * Unlike the traditional version the LFAPI version has none of the ABI junk + */ +struct statfs64 { +	__u32	f_type; +	__u32	f_bsize; +	__u32	f_frsize;	/* Fragment size - unsupported */ +	__u32	__pad; +	__u64	f_blocks; +	__u64	f_bfree; +	__u64	f_files; +	__u64	f_ffree; +	__u64	f_bavail; +	__kernel_fsid_t f_fsid; +	__u32	f_namelen; +	__u32	f_flags; +	__u32	f_spare[5]; +}; + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ + +#if _MIPS_SIM == _MIPS_SIM_ABI64 + +struct statfs64 {			/* Same as struct statfs */ +	long		f_type; +	long		f_bsize; +	long		f_frsize;	/* Fragment size - unsupported */ +	long		f_blocks; +	long		f_bfree; +	long		f_files; +	long		f_ffree; +	long		f_bavail; + +	/* Linux specials */ +	__kernel_fsid_t f_fsid; +	long		f_namelen; +	long		f_flags; +	long		f_spare[5]; +}; + +struct compat_statfs64 { +	__u32	f_type; +	__u32	f_bsize; +	__u32	f_frsize;	/* Fragment size - unsupported */ +	__u32	__pad; +	__u64	f_blocks; +	__u64	f_bfree; +	__u64	f_files; +	__u64	f_ffree; +	__u64	f_bavail; +	__kernel_fsid_t f_fsid; +	__u32	f_namelen; +	__u32	f_flags; +	__u32	f_spare[5]; +}; + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ + +#endif /* _ASM_STATFS_H */ diff --git a/arch/mips/include/uapi/asm/swab.h b/arch/mips/include/uapi/asm/swab.h new file mode 100644 index 00000000000..ac9a8f9cd1f --- /dev/null +++ b/arch/mips/include/uapi/asm/swab.h @@ -0,0 +1,59 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1996, 99, 2003 by Ralf Baechle + */ +#ifndef _ASM_SWAB_H +#define _ASM_SWAB_H + +#include <linux/compiler.h> +#include <linux/types.h> + +#define __SWAB_64_THRU_32__ + +#if defined(__mips_isa_rev) && (__mips_isa_rev >= 2) + +static inline __attribute_const__ __u16 __arch_swab16(__u16 x) +{ +	__asm__( +	"	wsbh	%0, %1			\n" +	: "=r" (x) +	: "r" (x)); + +	return x; +} +#define __arch_swab16 __arch_swab16 + +static inline __attribute_const__ __u32 __arch_swab32(__u32 x) +{ +	__asm__( +	"	wsbh	%0, %1			\n" +	"	rotr	%0, %0, 16		\n" +	: "=r" (x) +	: "r" (x)); + +	return x; +} +#define __arch_swab32 __arch_swab32 + +/* + * Having already checked for MIPS R2, enable the optimized version for + * 64-bit kernel on r2 CPUs. + */ +#ifdef __mips64 +static inline __attribute_const__ __u64 __arch_swab64(__u64 x) +{ +	__asm__( +	"	dsbh	%0, %1\n" +	"	dshd	%0, %0" +	: "=r" (x) +	: "r" (x)); + +	return x; +} +#define __arch_swab64 __arch_swab64 +#endif /* __mips64 */ +#endif /* MIPS R2 or newer  */ +#endif /* _ASM_SWAB_H */ diff --git a/arch/mips/include/uapi/asm/sysmips.h b/arch/mips/include/uapi/asm/sysmips.h new file mode 100644 index 00000000000..ae637e90785 --- /dev/null +++ b/arch/mips/include/uapi/asm/sysmips.h @@ -0,0 +1,25 @@ +/* + * Definitions for the MIPS sysmips(2) call + * + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995 by Ralf Baechle + */ +#ifndef _ASM_SYSMIPS_H +#define _ASM_SYSMIPS_H + +/* + * Commands for the sysmips(2) call + * + * sysmips(2) is deprecated - though some existing software uses it. + * We only support the following commands. + */ +#define SETNAME			   1	/* set hostname			 */ +#define FLUSH_CACHE		   3	/* writeback and invalidate caches */ +#define MIPS_FIXADE		   7	/* control address error fixing	 */ +#define MIPS_RDNVRAM		  10	/* read NVRAM */ +#define MIPS_ATOMIC_SET		2001	/* atomically set variable	 */ + +#endif /* _ASM_SYSMIPS_H */ diff --git a/arch/mips/include/uapi/asm/termbits.h b/arch/mips/include/uapi/asm/termbits.h new file mode 100644 index 00000000000..2750203e1e7 --- /dev/null +++ b/arch/mips/include/uapi/asm/termbits.h @@ -0,0 +1,227 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 96, 99, 2001, 06 Ralf Baechle + * Copyright (C) 1999 Silicon Graphics, Inc. + * Copyright (C) 2001 MIPS Technologies, Inc. + */ +#ifndef _ASM_TERMBITS_H +#define _ASM_TERMBITS_H + +#include <linux/posix_types.h> + +typedef unsigned char cc_t; +typedef unsigned int speed_t; +typedef unsigned int tcflag_t; + +/* + * The ABI says nothing about NCC but seems to use NCCS as + * replacement for it in struct termio + */ +#define NCCS	23 +struct termios { +	tcflag_t c_iflag;		/* input mode flags */ +	tcflag_t c_oflag;		/* output mode flags */ +	tcflag_t c_cflag;		/* control mode flags */ +	tcflag_t c_lflag;		/* local mode flags */ +	cc_t c_line;			/* line discipline */ +	cc_t c_cc[NCCS];		/* control characters */ +}; + +struct termios2 { +	tcflag_t c_iflag;		/* input mode flags */ +	tcflag_t c_oflag;		/* output mode flags */ +	tcflag_t c_cflag;		/* control mode flags */ +	tcflag_t c_lflag;		/* local mode flags */ +	cc_t c_line;			/* line discipline */ +	cc_t c_cc[NCCS];		/* control characters */ +	speed_t c_ispeed;		/* input speed */ +	speed_t c_ospeed;		/* output speed */ +}; + +struct ktermios { +	tcflag_t c_iflag;		/* input mode flags */ +	tcflag_t c_oflag;		/* output mode flags */ +	tcflag_t c_cflag;		/* control mode flags */ +	tcflag_t c_lflag;		/* local mode flags */ +	cc_t c_line;			/* line discipline */ +	cc_t c_cc[NCCS];		/* control characters */ +	speed_t c_ispeed;		/* input speed */ +	speed_t c_ospeed;		/* output speed */ +}; + +/* c_cc characters */ +#define VINTR		 0		/* Interrupt character [ISIG].	*/ +#define VQUIT		 1		/* Quit character [ISIG].  */ +#define VERASE		 2		/* Erase character [ICANON].  */ +#define VKILL		 3		/* Kill-line character [ICANON].  */ +#define VMIN		 4		/* Minimum number of bytes read at once [!ICANON].  */ +#define VTIME		 5		/* Time-out value (tenths of a second) [!ICANON].  */ +#define VEOL2		 6		/* Second EOL character [ICANON].  */ +#define VSWTC		 7		/* ??? */ +#define VSWTCH		VSWTC +#define VSTART		 8		/* Start (X-ON) character [IXON, IXOFF].  */ +#define VSTOP		 9		/* Stop (X-OFF) character [IXON, IXOFF].  */ +#define VSUSP		10		/* Suspend character [ISIG].  */ +#if 0 +/* + * VDSUSP is not supported + */ +#define VDSUSP		11		/* Delayed suspend character [ISIG].  */ +#endif +#define VREPRINT	12		/* Reprint-line character [ICANON].  */ +#define VDISCARD	13		/* Discard character [IEXTEN].	*/ +#define VWERASE		14		/* Word-erase character [ICANON].  */ +#define VLNEXT		15		/* Literal-next character [IEXTEN].  */ +#define VEOF		16		/* End-of-file character [ICANON].  */ +#define VEOL		17		/* End-of-line character [ICANON].  */ + +/* c_iflag bits */ +#define IGNBRK	0000001		/* Ignore break condition.  */ +#define BRKINT	0000002		/* Signal interrupt on break.  */ +#define IGNPAR	0000004		/* Ignore characters with parity errors.  */ +#define PARMRK	0000010		/* Mark parity and framing errors.  */ +#define INPCK	0000020		/* Enable input parity check.  */ +#define ISTRIP	0000040		/* Strip 8th bit off characters.  */ +#define INLCR	0000100		/* Map NL to CR on input.  */ +#define IGNCR	0000200		/* Ignore CR.  */ +#define ICRNL	0000400		/* Map CR to NL on input.  */ +#define IUCLC	0001000		/* Map upper case to lower case on input.  */ +#define IXON	0002000		/* Enable start/stop output control.  */ +#define IXANY	0004000		/* Any character will restart after stop.  */ +#define IXOFF	0010000		/* Enable start/stop input control.  */ +#define IMAXBEL 0020000		/* Ring bell when input queue is full.	*/ +#define IUTF8	0040000		/* Input is UTF-8 */ + +/* c_oflag bits */ +#define OPOST	0000001		/* Perform output processing.  */ +#define OLCUC	0000002		/* Map lower case to upper case on output.  */ +#define ONLCR	0000004		/* Map NL to CR-NL on output.  */ +#define OCRNL	0000010 +#define ONOCR	0000020 +#define ONLRET	0000040 +#define OFILL	0000100 +#define OFDEL	0000200 +#define NLDLY	0000400 +#define	  NL0	0000000 +#define	  NL1	0000400 +#define CRDLY	0003000 +#define	  CR0	0000000 +#define	  CR1	0001000 +#define	  CR2	0002000 +#define	  CR3	0003000 +#define TABDLY	0014000 +#define	  TAB0	0000000 +#define	  TAB1	0004000 +#define	  TAB2	0010000 +#define	  TAB3	0014000 +#define	  XTABS 0014000 +#define BSDLY	0020000 +#define	  BS0	0000000 +#define	  BS1	0020000 +#define VTDLY	0040000 +#define	  VT0	0000000 +#define	  VT1	0040000 +#define FFDLY	0100000 +#define	  FF0	0000000 +#define	  FF1	0100000 +/* +#define PAGEOUT ??? +#define WRAP	??? + */ + +/* c_cflag bit meaning */ +#define CBAUD	0010017 +#define	 B0	0000000		/* hang up */ +#define	 B50	0000001 +#define	 B75	0000002 +#define	 B110	0000003 +#define	 B134	0000004 +#define	 B150	0000005 +#define	 B200	0000006 +#define	 B300	0000007 +#define	 B600	0000010 +#define	 B1200	0000011 +#define	 B1800	0000012 +#define	 B2400	0000013 +#define	 B4800	0000014 +#define	 B9600	0000015 +#define	 B19200 0000016 +#define	 B38400 0000017 +#define EXTA B19200 +#define EXTB B38400 +#define CSIZE	0000060		/* Number of bits per byte (mask).  */ +#define	  CS5	0000000		/* 5 bits per byte.  */ +#define	  CS6	0000020		/* 6 bits per byte.  */ +#define	  CS7	0000040		/* 7 bits per byte.  */ +#define	  CS8	0000060		/* 8 bits per byte.  */ +#define CSTOPB	0000100		/* Two stop bits instead of one.  */ +#define CREAD	0000200		/* Enable receiver.  */ +#define PARENB	0000400		/* Parity enable.  */ +#define PARODD	0001000		/* Odd parity instead of even.	*/ +#define HUPCL	0002000		/* Hang up on last close.  */ +#define CLOCAL	0004000		/* Ignore modem status lines.  */ +#define CBAUDEX 0010000 +#define	   BOTHER 0010000 +#define	   B57600 0010001 +#define	  B115200 0010002 +#define	  B230400 0010003 +#define	  B460800 0010004 +#define	  B500000 0010005 +#define	  B576000 0010006 +#define	  B921600 0010007 +#define	 B1000000 0010010 +#define	 B1152000 0010011 +#define	 B1500000 0010012 +#define	 B2000000 0010013 +#define	 B2500000 0010014 +#define	 B3000000 0010015 +#define	 B3500000 0010016 +#define	 B4000000 0010017 +#define CIBAUD	  002003600000	/* input baud rate */ +#define CMSPAR	  010000000000	/* mark or space (stick) parity */ +#define CRTSCTS	  020000000000	/* flow control */ + +#define IBSHIFT 16		/* Shift from CBAUD to CIBAUD */ + +/* c_lflag bits */ +#define ISIG	0000001		/* Enable signals.  */ +#define ICANON	0000002		/* Do erase and kill processing.  */ +#define XCASE	0000004 +#define ECHO	0000010		/* Enable echo.	 */ +#define ECHOE	0000020		/* Visual erase for ERASE.  */ +#define ECHOK	0000040		/* Echo NL after KILL.	*/ +#define ECHONL	0000100		/* Echo NL even if ECHO is off.	 */ +#define NOFLSH	0000200		/* Disable flush after interrupt.  */ +#define IEXTEN	0000400		/* Enable DISCARD and LNEXT.  */ +#define ECHOCTL 0001000		/* Echo control characters as ^X.  */ +#define ECHOPRT 0002000		/* Hardcopy visual erase.  */ +#define ECHOKE	0004000		/* Visual erase for KILL.  */ +#define FLUSHO	0020000 +#define PENDIN	0040000		/* Retype pending input (state).  */ +#define TOSTOP	0100000		/* Send SIGTTOU for background output.	*/ +#define ITOSTOP TOSTOP +#define EXTPROC 0200000		/* External processing on pty */ + +/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ +#define TIOCSER_TEMT	0x01	/* Transmitter physically empty */ + +/* tcflow() and TCXONC use these */ +#define TCOOFF		0	/* Suspend output.  */ +#define TCOON		1	/* Restart suspended output.  */ +#define TCIOFF		2	/* Send a STOP character.  */ +#define TCION		3	/* Send a START character.  */ + +/* tcflush() and TCFLSH use these */ +#define TCIFLUSH	0	/* Discard data received but not yet read.  */ +#define TCOFLUSH	1	/* Discard data written but not yet sent.  */ +#define TCIOFLUSH	2	/* Discard all pending data.  */ + +/* tcsetattr uses these */ +#define TCSANOW		TCSETS	/* Change immediately.	*/ +#define TCSADRAIN	TCSETSW /* Change when pending output is written.  */ +#define TCSAFLUSH	TCSETSF /* Flush pending input before changing.	 */ + +#endif /* _ASM_TERMBITS_H */ diff --git a/arch/mips/include/uapi/asm/termios.h b/arch/mips/include/uapi/asm/termios.h new file mode 100644 index 00000000000..baeb2fa8745 --- /dev/null +++ b/arch/mips/include/uapi/asm/termios.h @@ -0,0 +1,80 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 1996, 2000, 2001 by Ralf Baechle + * Copyright (C) 2000, 2001 Silicon Graphics, Inc. + */ +#ifndef _UAPI_ASM_TERMIOS_H +#define _UAPI_ASM_TERMIOS_H + +#include <linux/errno.h> +#include <asm/termbits.h> +#include <asm/ioctls.h> + +struct sgttyb { +	char	sg_ispeed; +	char	sg_ospeed; +	char	sg_erase; +	char	sg_kill; +	int	sg_flags;	/* SGI special - int, not short */ +}; + +struct tchars { +	char	t_intrc; +	char	t_quitc; +	char	t_startc; +	char	t_stopc; +	char	t_eofc; +	char	t_brkc; +}; + +struct ltchars { +	char	t_suspc;	/* stop process signal */ +	char	t_dsuspc;	/* delayed stop process signal */ +	char	t_rprntc;	/* reprint line */ +	char	t_flushc;	/* flush output (toggles) */ +	char	t_werasc;	/* word erase */ +	char	t_lnextc;	/* literal next character */ +}; + +/* TIOCGSIZE, TIOCSSIZE not defined yet.  Only needed for SunOS source +   compatibility anyway ... */ + +struct winsize { +	unsigned short ws_row; +	unsigned short ws_col; +	unsigned short ws_xpixel; +	unsigned short ws_ypixel; +}; + +#define NCC	8 +struct termio { +	unsigned short c_iflag;		/* input mode flags */ +	unsigned short c_oflag;		/* output mode flags */ +	unsigned short c_cflag;		/* control mode flags */ +	unsigned short c_lflag;		/* local mode flags */ +	char c_line;			/* line discipline */ +	unsigned char c_cc[NCCS];	/* control characters */ +}; + + +/* modem lines */ +#define TIOCM_LE	0x001		/* line enable */ +#define TIOCM_DTR	0x002		/* data terminal ready */ +#define TIOCM_RTS	0x004		/* request to send */ +#define TIOCM_ST	0x010		/* secondary transmit */ +#define TIOCM_SR	0x020		/* secondary receive */ +#define TIOCM_CTS	0x040		/* clear to send */ +#define TIOCM_CAR	0x100		/* carrier detect */ +#define TIOCM_CD	TIOCM_CAR +#define TIOCM_RNG	0x200		/* ring */ +#define TIOCM_RI	TIOCM_RNG +#define TIOCM_DSR	0x400		/* data set ready */ +#define TIOCM_OUT1	0x2000 +#define TIOCM_OUT2	0x4000 +#define TIOCM_LOOP	0x8000 + + +#endif /* _UAPI_ASM_TERMIOS_H */ diff --git a/arch/mips/include/uapi/asm/types.h b/arch/mips/include/uapi/asm/types.h new file mode 100644 index 00000000000..f3dd9ff0cc0 --- /dev/null +++ b/arch/mips/include/uapi/asm/types.h @@ -0,0 +1,30 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1994, 1995, 1996, 1999 by Ralf Baechle + * Copyright (C) 2008 Wind River Systems, + *   written by Ralf Baechle + * Copyright (C) 1999 Silicon Graphics, Inc. + */ +#ifndef _UAPI_ASM_TYPES_H +#define _UAPI_ASM_TYPES_H + +/* + * We don't use int-l64.h for the kernel anymore but still use it for + * userspace to avoid code changes. + * + * However, some user programs (e.g. perf) may not want this. They can + * flag __SANE_USERSPACE_TYPES__ to get int-ll64.h here. + */ +#ifndef __KERNEL__ +# if _MIPS_SZLONG == 64 && !defined(__SANE_USERSPACE_TYPES__) +#  include <asm-generic/int-l64.h> +# else +#  include <asm-generic/int-ll64.h> +# endif +#endif + + +#endif /* _UAPI_ASM_TYPES_H */ diff --git a/arch/mips/include/uapi/asm/unistd.h b/arch/mips/include/uapi/asm/unistd.h new file mode 100644 index 00000000000..5805414777e --- /dev/null +++ b/arch/mips/include/uapi/asm/unistd.h @@ -0,0 +1,1048 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1995, 96, 97, 98, 99, 2000 by Ralf Baechle + * Copyright (C) 1999, 2000 Silicon Graphics, Inc. + * + * Changed system calls macros _syscall5 - _syscall7 to push args 5 to 7 onto + * the stack. Robin Farine for ACN S.A, Copyright (C) 1996 by ACN S.A + */ +#ifndef _UAPI_ASM_UNISTD_H +#define _UAPI_ASM_UNISTD_H + +#include <asm/sgidefs.h> + +#if _MIPS_SIM == _MIPS_SIM_ABI32 + +/* + * Linux o32 style syscalls are in the range from 4000 to 4999. + */ +#define __NR_Linux			4000 +#define __NR_syscall			(__NR_Linux +	0) +#define __NR_exit			(__NR_Linux +	1) +#define __NR_fork			(__NR_Linux +	2) +#define __NR_read			(__NR_Linux +	3) +#define __NR_write			(__NR_Linux +	4) +#define __NR_open			(__NR_Linux +	5) +#define __NR_close			(__NR_Linux +	6) +#define __NR_waitpid			(__NR_Linux +	7) +#define __NR_creat			(__NR_Linux +	8) +#define __NR_link			(__NR_Linux +	9) +#define __NR_unlink			(__NR_Linux +  10) +#define __NR_execve			(__NR_Linux +  11) +#define __NR_chdir			(__NR_Linux +  12) +#define __NR_time			(__NR_Linux +  13) +#define __NR_mknod			(__NR_Linux +  14) +#define __NR_chmod			(__NR_Linux +  15) +#define __NR_lchown			(__NR_Linux +  16) +#define __NR_break			(__NR_Linux +  17) +#define __NR_unused18			(__NR_Linux +  18) +#define __NR_lseek			(__NR_Linux +  19) +#define __NR_getpid			(__NR_Linux +  20) +#define __NR_mount			(__NR_Linux +  21) +#define __NR_umount			(__NR_Linux +  22) +#define __NR_setuid			(__NR_Linux +  23) +#define __NR_getuid			(__NR_Linux +  24) +#define __NR_stime			(__NR_Linux +  25) +#define __NR_ptrace			(__NR_Linux +  26) +#define __NR_alarm			(__NR_Linux +  27) +#define __NR_unused28			(__NR_Linux +  28) +#define __NR_pause			(__NR_Linux +  29) +#define __NR_utime			(__NR_Linux +  30) +#define __NR_stty			(__NR_Linux +  31) +#define __NR_gtty			(__NR_Linux +  32) +#define __NR_access			(__NR_Linux +  33) +#define __NR_nice			(__NR_Linux +  34) +#define __NR_ftime			(__NR_Linux +  35) +#define __NR_sync			(__NR_Linux +  36) +#define __NR_kill			(__NR_Linux +  37) +#define __NR_rename			(__NR_Linux +  38) +#define __NR_mkdir			(__NR_Linux +  39) +#define __NR_rmdir			(__NR_Linux +  40) +#define __NR_dup			(__NR_Linux +  41) +#define __NR_pipe			(__NR_Linux +  42) +#define __NR_times			(__NR_Linux +  43) +#define __NR_prof			(__NR_Linux +  44) +#define __NR_brk			(__NR_Linux +  45) +#define __NR_setgid			(__NR_Linux +  46) +#define __NR_getgid			(__NR_Linux +  47) +#define __NR_signal			(__NR_Linux +  48) +#define __NR_geteuid			(__NR_Linux +  49) +#define __NR_getegid			(__NR_Linux +  50) +#define __NR_acct			(__NR_Linux +  51) +#define __NR_umount2			(__NR_Linux +  52) +#define __NR_lock			(__NR_Linux +  53) +#define __NR_ioctl			(__NR_Linux +  54) +#define __NR_fcntl			(__NR_Linux +  55) +#define __NR_mpx			(__NR_Linux +  56) +#define __NR_setpgid			(__NR_Linux +  57) +#define __NR_ulimit			(__NR_Linux +  58) +#define __NR_unused59			(__NR_Linux +  59) +#define __NR_umask			(__NR_Linux +  60) +#define __NR_chroot			(__NR_Linux +  61) +#define __NR_ustat			(__NR_Linux +  62) +#define __NR_dup2			(__NR_Linux +  63) +#define __NR_getppid			(__NR_Linux +  64) +#define __NR_getpgrp			(__NR_Linux +  65) +#define __NR_setsid			(__NR_Linux +  66) +#define __NR_sigaction			(__NR_Linux +  67) +#define __NR_sgetmask			(__NR_Linux +  68) +#define __NR_ssetmask			(__NR_Linux +  69) +#define __NR_setreuid			(__NR_Linux +  70) +#define __NR_setregid			(__NR_Linux +  71) +#define __NR_sigsuspend			(__NR_Linux +  72) +#define __NR_sigpending			(__NR_Linux +  73) +#define __NR_sethostname		(__NR_Linux +  74) +#define __NR_setrlimit			(__NR_Linux +  75) +#define __NR_getrlimit			(__NR_Linux +  76) +#define __NR_getrusage			(__NR_Linux +  77) +#define __NR_gettimeofday		(__NR_Linux +  78) +#define __NR_settimeofday		(__NR_Linux +  79) +#define __NR_getgroups			(__NR_Linux +  80) +#define __NR_setgroups			(__NR_Linux +  81) +#define __NR_reserved82			(__NR_Linux +  82) +#define __NR_symlink			(__NR_Linux +  83) +#define __NR_unused84			(__NR_Linux +  84) +#define __NR_readlink			(__NR_Linux +  85) +#define __NR_uselib			(__NR_Linux +  86) +#define __NR_swapon			(__NR_Linux +  87) +#define __NR_reboot			(__NR_Linux +  88) +#define __NR_readdir			(__NR_Linux +  89) +#define __NR_mmap			(__NR_Linux +  90) +#define __NR_munmap			(__NR_Linux +  91) +#define __NR_truncate			(__NR_Linux +  92) +#define __NR_ftruncate			(__NR_Linux +  93) +#define __NR_fchmod			(__NR_Linux +  94) +#define __NR_fchown			(__NR_Linux +  95) +#define __NR_getpriority		(__NR_Linux +  96) +#define __NR_setpriority		(__NR_Linux +  97) +#define __NR_profil			(__NR_Linux +  98) +#define __NR_statfs			(__NR_Linux +  99) +#define __NR_fstatfs			(__NR_Linux + 100) +#define __NR_ioperm			(__NR_Linux + 101) +#define __NR_socketcall			(__NR_Linux + 102) +#define __NR_syslog			(__NR_Linux + 103) +#define __NR_setitimer			(__NR_Linux + 104) +#define __NR_getitimer			(__NR_Linux + 105) +#define __NR_stat			(__NR_Linux + 106) +#define __NR_lstat			(__NR_Linux + 107) +#define __NR_fstat			(__NR_Linux + 108) +#define __NR_unused109			(__NR_Linux + 109) +#define __NR_iopl			(__NR_Linux + 110) +#define __NR_vhangup			(__NR_Linux + 111) +#define __NR_idle			(__NR_Linux + 112) +#define __NR_vm86			(__NR_Linux + 113) +#define __NR_wait4			(__NR_Linux + 114) +#define __NR_swapoff			(__NR_Linux + 115) +#define __NR_sysinfo			(__NR_Linux + 116) +#define __NR_ipc			(__NR_Linux + 117) +#define __NR_fsync			(__NR_Linux + 118) +#define __NR_sigreturn			(__NR_Linux + 119) +#define __NR_clone			(__NR_Linux + 120) +#define __NR_setdomainname		(__NR_Linux + 121) +#define __NR_uname			(__NR_Linux + 122) +#define __NR_modify_ldt			(__NR_Linux + 123) +#define __NR_adjtimex			(__NR_Linux + 124) +#define __NR_mprotect			(__NR_Linux + 125) +#define __NR_sigprocmask		(__NR_Linux + 126) +#define __NR_create_module		(__NR_Linux + 127) +#define __NR_init_module		(__NR_Linux + 128) +#define __NR_delete_module		(__NR_Linux + 129) +#define __NR_get_kernel_syms		(__NR_Linux + 130) +#define __NR_quotactl			(__NR_Linux + 131) +#define __NR_getpgid			(__NR_Linux + 132) +#define __NR_fchdir			(__NR_Linux + 133) +#define __NR_bdflush			(__NR_Linux + 134) +#define __NR_sysfs			(__NR_Linux + 135) +#define __NR_personality		(__NR_Linux + 136) +#define __NR_afs_syscall		(__NR_Linux + 137) /* Syscall for Andrew File System */ +#define __NR_setfsuid			(__NR_Linux + 138) +#define __NR_setfsgid			(__NR_Linux + 139) +#define __NR__llseek			(__NR_Linux + 140) +#define __NR_getdents			(__NR_Linux + 141) +#define __NR__newselect			(__NR_Linux + 142) +#define __NR_flock			(__NR_Linux + 143) +#define __NR_msync			(__NR_Linux + 144) +#define __NR_readv			(__NR_Linux + 145) +#define __NR_writev			(__NR_Linux + 146) +#define __NR_cacheflush			(__NR_Linux + 147) +#define __NR_cachectl			(__NR_Linux + 148) +#define __NR_sysmips			(__NR_Linux + 149) +#define __NR_unused150			(__NR_Linux + 150) +#define __NR_getsid			(__NR_Linux + 151) +#define __NR_fdatasync			(__NR_Linux + 152) +#define __NR__sysctl			(__NR_Linux + 153) +#define __NR_mlock			(__NR_Linux + 154) +#define __NR_munlock			(__NR_Linux + 155) +#define __NR_mlockall			(__NR_Linux + 156) +#define __NR_munlockall			(__NR_Linux + 157) +#define __NR_sched_setparam		(__NR_Linux + 158) +#define __NR_sched_getparam		(__NR_Linux + 159) +#define __NR_sched_setscheduler		(__NR_Linux + 160) +#define __NR_sched_getscheduler		(__NR_Linux + 161) +#define __NR_sched_yield		(__NR_Linux + 162) +#define __NR_sched_get_priority_max	(__NR_Linux + 163) +#define __NR_sched_get_priority_min	(__NR_Linux + 164) +#define __NR_sched_rr_get_interval	(__NR_Linux + 165) +#define __NR_nanosleep			(__NR_Linux + 166) +#define __NR_mremap			(__NR_Linux + 167) +#define __NR_accept			(__NR_Linux + 168) +#define __NR_bind			(__NR_Linux + 169) +#define __NR_connect			(__NR_Linux + 170) +#define __NR_getpeername		(__NR_Linux + 171) +#define __NR_getsockname		(__NR_Linux + 172) +#define __NR_getsockopt			(__NR_Linux + 173) +#define __NR_listen			(__NR_Linux + 174) +#define __NR_recv			(__NR_Linux + 175) +#define __NR_recvfrom			(__NR_Linux + 176) +#define __NR_recvmsg			(__NR_Linux + 177) +#define __NR_send			(__NR_Linux + 178) +#define __NR_sendmsg			(__NR_Linux + 179) +#define __NR_sendto			(__NR_Linux + 180) +#define __NR_setsockopt			(__NR_Linux + 181) +#define __NR_shutdown			(__NR_Linux + 182) +#define __NR_socket			(__NR_Linux + 183) +#define __NR_socketpair			(__NR_Linux + 184) +#define __NR_setresuid			(__NR_Linux + 185) +#define __NR_getresuid			(__NR_Linux + 186) +#define __NR_query_module		(__NR_Linux + 187) +#define __NR_poll			(__NR_Linux + 188) +#define __NR_nfsservctl			(__NR_Linux + 189) +#define __NR_setresgid			(__NR_Linux + 190) +#define __NR_getresgid			(__NR_Linux + 191) +#define __NR_prctl			(__NR_Linux + 192) +#define __NR_rt_sigreturn		(__NR_Linux + 193) +#define __NR_rt_sigaction		(__NR_Linux + 194) +#define __NR_rt_sigprocmask		(__NR_Linux + 195) +#define __NR_rt_sigpending		(__NR_Linux + 196) +#define __NR_rt_sigtimedwait		(__NR_Linux + 197) +#define __NR_rt_sigqueueinfo		(__NR_Linux + 198) +#define __NR_rt_sigsuspend		(__NR_Linux + 199) +#define __NR_pread64			(__NR_Linux + 200) +#define __NR_pwrite64			(__NR_Linux + 201) +#define __NR_chown			(__NR_Linux + 202) +#define __NR_getcwd			(__NR_Linux + 203) +#define __NR_capget			(__NR_Linux + 204) +#define __NR_capset			(__NR_Linux + 205) +#define __NR_sigaltstack		(__NR_Linux + 206) +#define __NR_sendfile			(__NR_Linux + 207) +#define __NR_getpmsg			(__NR_Linux + 208) +#define __NR_putpmsg			(__NR_Linux + 209) +#define __NR_mmap2			(__NR_Linux + 210) +#define __NR_truncate64			(__NR_Linux + 211) +#define __NR_ftruncate64		(__NR_Linux + 212) +#define __NR_stat64			(__NR_Linux + 213) +#define __NR_lstat64			(__NR_Linux + 214) +#define __NR_fstat64			(__NR_Linux + 215) +#define __NR_pivot_root			(__NR_Linux + 216) +#define __NR_mincore			(__NR_Linux + 217) +#define __NR_madvise			(__NR_Linux + 218) +#define __NR_getdents64			(__NR_Linux + 219) +#define __NR_fcntl64			(__NR_Linux + 220) +#define __NR_reserved221		(__NR_Linux + 221) +#define __NR_gettid			(__NR_Linux + 222) +#define __NR_readahead			(__NR_Linux + 223) +#define __NR_setxattr			(__NR_Linux + 224) +#define __NR_lsetxattr			(__NR_Linux + 225) +#define __NR_fsetxattr			(__NR_Linux + 226) +#define __NR_getxattr			(__NR_Linux + 227) +#define __NR_lgetxattr			(__NR_Linux + 228) +#define __NR_fgetxattr			(__NR_Linux + 229) +#define __NR_listxattr			(__NR_Linux + 230) +#define __NR_llistxattr			(__NR_Linux + 231) +#define __NR_flistxattr			(__NR_Linux + 232) +#define __NR_removexattr		(__NR_Linux + 233) +#define __NR_lremovexattr		(__NR_Linux + 234) +#define __NR_fremovexattr		(__NR_Linux + 235) +#define __NR_tkill			(__NR_Linux + 236) +#define __NR_sendfile64			(__NR_Linux + 237) +#define __NR_futex			(__NR_Linux + 238) +#define __NR_sched_setaffinity		(__NR_Linux + 239) +#define __NR_sched_getaffinity		(__NR_Linux + 240) +#define __NR_io_setup			(__NR_Linux + 241) +#define __NR_io_destroy			(__NR_Linux + 242) +#define __NR_io_getevents		(__NR_Linux + 243) +#define __NR_io_submit			(__NR_Linux + 244) +#define __NR_io_cancel			(__NR_Linux + 245) +#define __NR_exit_group			(__NR_Linux + 246) +#define __NR_lookup_dcookie		(__NR_Linux + 247) +#define __NR_epoll_create		(__NR_Linux + 248) +#define __NR_epoll_ctl			(__NR_Linux + 249) +#define __NR_epoll_wait			(__NR_Linux + 250) +#define __NR_remap_file_pages		(__NR_Linux + 251) +#define __NR_set_tid_address		(__NR_Linux + 252) +#define __NR_restart_syscall		(__NR_Linux + 253) +#define __NR_fadvise64			(__NR_Linux + 254) +#define __NR_statfs64			(__NR_Linux + 255) +#define __NR_fstatfs64			(__NR_Linux + 256) +#define __NR_timer_create		(__NR_Linux + 257) +#define __NR_timer_settime		(__NR_Linux + 258) +#define __NR_timer_gettime		(__NR_Linux + 259) +#define __NR_timer_getoverrun		(__NR_Linux + 260) +#define __NR_timer_delete		(__NR_Linux + 261) +#define __NR_clock_settime		(__NR_Linux + 262) +#define __NR_clock_gettime		(__NR_Linux + 263) +#define __NR_clock_getres		(__NR_Linux + 264) +#define __NR_clock_nanosleep		(__NR_Linux + 265) +#define __NR_tgkill			(__NR_Linux + 266) +#define __NR_utimes			(__NR_Linux + 267) +#define __NR_mbind			(__NR_Linux + 268) +#define __NR_get_mempolicy		(__NR_Linux + 269) +#define __NR_set_mempolicy		(__NR_Linux + 270) +#define __NR_mq_open			(__NR_Linux + 271) +#define __NR_mq_unlink			(__NR_Linux + 272) +#define __NR_mq_timedsend		(__NR_Linux + 273) +#define __NR_mq_timedreceive		(__NR_Linux + 274) +#define __NR_mq_notify			(__NR_Linux + 275) +#define __NR_mq_getsetattr		(__NR_Linux + 276) +#define __NR_vserver			(__NR_Linux + 277) +#define __NR_waitid			(__NR_Linux + 278) +/* #define __NR_sys_setaltroot		(__NR_Linux + 279) */ +#define __NR_add_key			(__NR_Linux + 280) +#define __NR_request_key		(__NR_Linux + 281) +#define __NR_keyctl			(__NR_Linux + 282) +#define __NR_set_thread_area		(__NR_Linux + 283) +#define __NR_inotify_init		(__NR_Linux + 284) +#define __NR_inotify_add_watch		(__NR_Linux + 285) +#define __NR_inotify_rm_watch		(__NR_Linux + 286) +#define __NR_migrate_pages		(__NR_Linux + 287) +#define __NR_openat			(__NR_Linux + 288) +#define __NR_mkdirat			(__NR_Linux + 289) +#define __NR_mknodat			(__NR_Linux + 290) +#define __NR_fchownat			(__NR_Linux + 291) +#define __NR_futimesat			(__NR_Linux + 292) +#define __NR_fstatat64			(__NR_Linux + 293) +#define __NR_unlinkat			(__NR_Linux + 294) +#define __NR_renameat			(__NR_Linux + 295) +#define __NR_linkat			(__NR_Linux + 296) +#define __NR_symlinkat			(__NR_Linux + 297) +#define __NR_readlinkat			(__NR_Linux + 298) +#define __NR_fchmodat			(__NR_Linux + 299) +#define __NR_faccessat			(__NR_Linux + 300) +#define __NR_pselect6			(__NR_Linux + 301) +#define __NR_ppoll			(__NR_Linux + 302) +#define __NR_unshare			(__NR_Linux + 303) +#define __NR_splice			(__NR_Linux + 304) +#define __NR_sync_file_range		(__NR_Linux + 305) +#define __NR_tee			(__NR_Linux + 306) +#define __NR_vmsplice			(__NR_Linux + 307) +#define __NR_move_pages			(__NR_Linux + 308) +#define __NR_set_robust_list		(__NR_Linux + 309) +#define __NR_get_robust_list		(__NR_Linux + 310) +#define __NR_kexec_load			(__NR_Linux + 311) +#define __NR_getcpu			(__NR_Linux + 312) +#define __NR_epoll_pwait		(__NR_Linux + 313) +#define __NR_ioprio_set			(__NR_Linux + 314) +#define __NR_ioprio_get			(__NR_Linux + 315) +#define __NR_utimensat			(__NR_Linux + 316) +#define __NR_signalfd			(__NR_Linux + 317) +#define __NR_timerfd			(__NR_Linux + 318) +#define __NR_eventfd			(__NR_Linux + 319) +#define __NR_fallocate			(__NR_Linux + 320) +#define __NR_timerfd_create		(__NR_Linux + 321) +#define __NR_timerfd_gettime		(__NR_Linux + 322) +#define __NR_timerfd_settime		(__NR_Linux + 323) +#define __NR_signalfd4			(__NR_Linux + 324) +#define __NR_eventfd2			(__NR_Linux + 325) +#define __NR_epoll_create1		(__NR_Linux + 326) +#define __NR_dup3			(__NR_Linux + 327) +#define __NR_pipe2			(__NR_Linux + 328) +#define __NR_inotify_init1		(__NR_Linux + 329) +#define __NR_preadv			(__NR_Linux + 330) +#define __NR_pwritev			(__NR_Linux + 331) +#define __NR_rt_tgsigqueueinfo		(__NR_Linux + 332) +#define __NR_perf_event_open		(__NR_Linux + 333) +#define __NR_accept4			(__NR_Linux + 334) +#define __NR_recvmmsg			(__NR_Linux + 335) +#define __NR_fanotify_init		(__NR_Linux + 336) +#define __NR_fanotify_mark		(__NR_Linux + 337) +#define __NR_prlimit64			(__NR_Linux + 338) +#define __NR_name_to_handle_at		(__NR_Linux + 339) +#define __NR_open_by_handle_at		(__NR_Linux + 340) +#define __NR_clock_adjtime		(__NR_Linux + 341) +#define __NR_syncfs			(__NR_Linux + 342) +#define __NR_sendmmsg			(__NR_Linux + 343) +#define __NR_setns			(__NR_Linux + 344) +#define __NR_process_vm_readv		(__NR_Linux + 345) +#define __NR_process_vm_writev		(__NR_Linux + 346) +#define __NR_kcmp			(__NR_Linux + 347) +#define __NR_finit_module		(__NR_Linux + 348) +#define __NR_sched_setattr		(__NR_Linux + 349) +#define __NR_sched_getattr		(__NR_Linux + 350) +#define __NR_renameat2			(__NR_Linux + 351) + +/* + * Offset of the last Linux o32 flavoured syscall + */ +#define __NR_Linux_syscalls		351 + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ + +#define __NR_O32_Linux			4000 +#define __NR_O32_Linux_syscalls		351 + +#if _MIPS_SIM == _MIPS_SIM_ABI64 + +/* + * Linux 64-bit syscalls are in the range from 5000 to 5999. + */ +#define __NR_Linux			5000 +#define __NR_read			(__NR_Linux +	0) +#define __NR_write			(__NR_Linux +	1) +#define __NR_open			(__NR_Linux +	2) +#define __NR_close			(__NR_Linux +	3) +#define __NR_stat			(__NR_Linux +	4) +#define __NR_fstat			(__NR_Linux +	5) +#define __NR_lstat			(__NR_Linux +	6) +#define __NR_poll			(__NR_Linux +	7) +#define __NR_lseek			(__NR_Linux +	8) +#define __NR_mmap			(__NR_Linux +	9) +#define __NR_mprotect			(__NR_Linux +  10) +#define __NR_munmap			(__NR_Linux +  11) +#define __NR_brk			(__NR_Linux +  12) +#define __NR_rt_sigaction		(__NR_Linux +  13) +#define __NR_rt_sigprocmask		(__NR_Linux +  14) +#define __NR_ioctl			(__NR_Linux +  15) +#define __NR_pread64			(__NR_Linux +  16) +#define __NR_pwrite64			(__NR_Linux +  17) +#define __NR_readv			(__NR_Linux +  18) +#define __NR_writev			(__NR_Linux +  19) +#define __NR_access			(__NR_Linux +  20) +#define __NR_pipe			(__NR_Linux +  21) +#define __NR__newselect			(__NR_Linux +  22) +#define __NR_sched_yield		(__NR_Linux +  23) +#define __NR_mremap			(__NR_Linux +  24) +#define __NR_msync			(__NR_Linux +  25) +#define __NR_mincore			(__NR_Linux +  26) +#define __NR_madvise			(__NR_Linux +  27) +#define __NR_shmget			(__NR_Linux +  28) +#define __NR_shmat			(__NR_Linux +  29) +#define __NR_shmctl			(__NR_Linux +  30) +#define __NR_dup			(__NR_Linux +  31) +#define __NR_dup2			(__NR_Linux +  32) +#define __NR_pause			(__NR_Linux +  33) +#define __NR_nanosleep			(__NR_Linux +  34) +#define __NR_getitimer			(__NR_Linux +  35) +#define __NR_setitimer			(__NR_Linux +  36) +#define __NR_alarm			(__NR_Linux +  37) +#define __NR_getpid			(__NR_Linux +  38) +#define __NR_sendfile			(__NR_Linux +  39) +#define __NR_socket			(__NR_Linux +  40) +#define __NR_connect			(__NR_Linux +  41) +#define __NR_accept			(__NR_Linux +  42) +#define __NR_sendto			(__NR_Linux +  43) +#define __NR_recvfrom			(__NR_Linux +  44) +#define __NR_sendmsg			(__NR_Linux +  45) +#define __NR_recvmsg			(__NR_Linux +  46) +#define __NR_shutdown			(__NR_Linux +  47) +#define __NR_bind			(__NR_Linux +  48) +#define __NR_listen			(__NR_Linux +  49) +#define __NR_getsockname		(__NR_Linux +  50) +#define __NR_getpeername		(__NR_Linux +  51) +#define __NR_socketpair			(__NR_Linux +  52) +#define __NR_setsockopt			(__NR_Linux +  53) +#define __NR_getsockopt			(__NR_Linux +  54) +#define __NR_clone			(__NR_Linux +  55) +#define __NR_fork			(__NR_Linux +  56) +#define __NR_execve			(__NR_Linux +  57) +#define __NR_exit			(__NR_Linux +  58) +#define __NR_wait4			(__NR_Linux +  59) +#define __NR_kill			(__NR_Linux +  60) +#define __NR_uname			(__NR_Linux +  61) +#define __NR_semget			(__NR_Linux +  62) +#define __NR_semop			(__NR_Linux +  63) +#define __NR_semctl			(__NR_Linux +  64) +#define __NR_shmdt			(__NR_Linux +  65) +#define __NR_msgget			(__NR_Linux +  66) +#define __NR_msgsnd			(__NR_Linux +  67) +#define __NR_msgrcv			(__NR_Linux +  68) +#define __NR_msgctl			(__NR_Linux +  69) +#define __NR_fcntl			(__NR_Linux +  70) +#define __NR_flock			(__NR_Linux +  71) +#define __NR_fsync			(__NR_Linux +  72) +#define __NR_fdatasync			(__NR_Linux +  73) +#define __NR_truncate			(__NR_Linux +  74) +#define __NR_ftruncate			(__NR_Linux +  75) +#define __NR_getdents			(__NR_Linux +  76) +#define __NR_getcwd			(__NR_Linux +  77) +#define __NR_chdir			(__NR_Linux +  78) +#define __NR_fchdir			(__NR_Linux +  79) +#define __NR_rename			(__NR_Linux +  80) +#define __NR_mkdir			(__NR_Linux +  81) +#define __NR_rmdir			(__NR_Linux +  82) +#define __NR_creat			(__NR_Linux +  83) +#define __NR_link			(__NR_Linux +  84) +#define __NR_unlink			(__NR_Linux +  85) +#define __NR_symlink			(__NR_Linux +  86) +#define __NR_readlink			(__NR_Linux +  87) +#define __NR_chmod			(__NR_Linux +  88) +#define __NR_fchmod			(__NR_Linux +  89) +#define __NR_chown			(__NR_Linux +  90) +#define __NR_fchown			(__NR_Linux +  91) +#define __NR_lchown			(__NR_Linux +  92) +#define __NR_umask			(__NR_Linux +  93) +#define __NR_gettimeofday		(__NR_Linux +  94) +#define __NR_getrlimit			(__NR_Linux +  95) +#define __NR_getrusage			(__NR_Linux +  96) +#define __NR_sysinfo			(__NR_Linux +  97) +#define __NR_times			(__NR_Linux +  98) +#define __NR_ptrace			(__NR_Linux +  99) +#define __NR_getuid			(__NR_Linux + 100) +#define __NR_syslog			(__NR_Linux + 101) +#define __NR_getgid			(__NR_Linux + 102) +#define __NR_setuid			(__NR_Linux + 103) +#define __NR_setgid			(__NR_Linux + 104) +#define __NR_geteuid			(__NR_Linux + 105) +#define __NR_getegid			(__NR_Linux + 106) +#define __NR_setpgid			(__NR_Linux + 107) +#define __NR_getppid			(__NR_Linux + 108) +#define __NR_getpgrp			(__NR_Linux + 109) +#define __NR_setsid			(__NR_Linux + 110) +#define __NR_setreuid			(__NR_Linux + 111) +#define __NR_setregid			(__NR_Linux + 112) +#define __NR_getgroups			(__NR_Linux + 113) +#define __NR_setgroups			(__NR_Linux + 114) +#define __NR_setresuid			(__NR_Linux + 115) +#define __NR_getresuid			(__NR_Linux + 116) +#define __NR_setresgid			(__NR_Linux + 117) +#define __NR_getresgid			(__NR_Linux + 118) +#define __NR_getpgid			(__NR_Linux + 119) +#define __NR_setfsuid			(__NR_Linux + 120) +#define __NR_setfsgid			(__NR_Linux + 121) +#define __NR_getsid			(__NR_Linux + 122) +#define __NR_capget			(__NR_Linux + 123) +#define __NR_capset			(__NR_Linux + 124) +#define __NR_rt_sigpending		(__NR_Linux + 125) +#define __NR_rt_sigtimedwait		(__NR_Linux + 126) +#define __NR_rt_sigqueueinfo		(__NR_Linux + 127) +#define __NR_rt_sigsuspend		(__NR_Linux + 128) +#define __NR_sigaltstack		(__NR_Linux + 129) +#define __NR_utime			(__NR_Linux + 130) +#define __NR_mknod			(__NR_Linux + 131) +#define __NR_personality		(__NR_Linux + 132) +#define __NR_ustat			(__NR_Linux + 133) +#define __NR_statfs			(__NR_Linux + 134) +#define __NR_fstatfs			(__NR_Linux + 135) +#define __NR_sysfs			(__NR_Linux + 136) +#define __NR_getpriority		(__NR_Linux + 137) +#define __NR_setpriority		(__NR_Linux + 138) +#define __NR_sched_setparam		(__NR_Linux + 139) +#define __NR_sched_getparam		(__NR_Linux + 140) +#define __NR_sched_setscheduler		(__NR_Linux + 141) +#define __NR_sched_getscheduler		(__NR_Linux + 142) +#define __NR_sched_get_priority_max	(__NR_Linux + 143) +#define __NR_sched_get_priority_min	(__NR_Linux + 144) +#define __NR_sched_rr_get_interval	(__NR_Linux + 145) +#define __NR_mlock			(__NR_Linux + 146) +#define __NR_munlock			(__NR_Linux + 147) +#define __NR_mlockall			(__NR_Linux + 148) +#define __NR_munlockall			(__NR_Linux + 149) +#define __NR_vhangup			(__NR_Linux + 150) +#define __NR_pivot_root			(__NR_Linux + 151) +#define __NR__sysctl			(__NR_Linux + 152) +#define __NR_prctl			(__NR_Linux + 153) +#define __NR_adjtimex			(__NR_Linux + 154) +#define __NR_setrlimit			(__NR_Linux + 155) +#define __NR_chroot			(__NR_Linux + 156) +#define __NR_sync			(__NR_Linux + 157) +#define __NR_acct			(__NR_Linux + 158) +#define __NR_settimeofday		(__NR_Linux + 159) +#define __NR_mount			(__NR_Linux + 160) +#define __NR_umount2			(__NR_Linux + 161) +#define __NR_swapon			(__NR_Linux + 162) +#define __NR_swapoff			(__NR_Linux + 163) +#define __NR_reboot			(__NR_Linux + 164) +#define __NR_sethostname		(__NR_Linux + 165) +#define __NR_setdomainname		(__NR_Linux + 166) +#define __NR_create_module		(__NR_Linux + 167) +#define __NR_init_module		(__NR_Linux + 168) +#define __NR_delete_module		(__NR_Linux + 169) +#define __NR_get_kernel_syms		(__NR_Linux + 170) +#define __NR_query_module		(__NR_Linux + 171) +#define __NR_quotactl			(__NR_Linux + 172) +#define __NR_nfsservctl			(__NR_Linux + 173) +#define __NR_getpmsg			(__NR_Linux + 174) +#define __NR_putpmsg			(__NR_Linux + 175) +#define __NR_afs_syscall		(__NR_Linux + 176) +#define __NR_reserved177		(__NR_Linux + 177) +#define __NR_gettid			(__NR_Linux + 178) +#define __NR_readahead			(__NR_Linux + 179) +#define __NR_setxattr			(__NR_Linux + 180) +#define __NR_lsetxattr			(__NR_Linux + 181) +#define __NR_fsetxattr			(__NR_Linux + 182) +#define __NR_getxattr			(__NR_Linux + 183) +#define __NR_lgetxattr			(__NR_Linux + 184) +#define __NR_fgetxattr			(__NR_Linux + 185) +#define __NR_listxattr			(__NR_Linux + 186) +#define __NR_llistxattr			(__NR_Linux + 187) +#define __NR_flistxattr			(__NR_Linux + 188) +#define __NR_removexattr		(__NR_Linux + 189) +#define __NR_lremovexattr		(__NR_Linux + 190) +#define __NR_fremovexattr		(__NR_Linux + 191) +#define __NR_tkill			(__NR_Linux + 192) +#define __NR_reserved193		(__NR_Linux + 193) +#define __NR_futex			(__NR_Linux + 194) +#define __NR_sched_setaffinity		(__NR_Linux + 195) +#define __NR_sched_getaffinity		(__NR_Linux + 196) +#define __NR_cacheflush			(__NR_Linux + 197) +#define __NR_cachectl			(__NR_Linux + 198) +#define __NR_sysmips			(__NR_Linux + 199) +#define __NR_io_setup			(__NR_Linux + 200) +#define __NR_io_destroy			(__NR_Linux + 201) +#define __NR_io_getevents		(__NR_Linux + 202) +#define __NR_io_submit			(__NR_Linux + 203) +#define __NR_io_cancel			(__NR_Linux + 204) +#define __NR_exit_group			(__NR_Linux + 205) +#define __NR_lookup_dcookie		(__NR_Linux + 206) +#define __NR_epoll_create		(__NR_Linux + 207) +#define __NR_epoll_ctl			(__NR_Linux + 208) +#define __NR_epoll_wait			(__NR_Linux + 209) +#define __NR_remap_file_pages		(__NR_Linux + 210) +#define __NR_rt_sigreturn		(__NR_Linux + 211) +#define __NR_set_tid_address		(__NR_Linux + 212) +#define __NR_restart_syscall		(__NR_Linux + 213) +#define __NR_semtimedop			(__NR_Linux + 214) +#define __NR_fadvise64			(__NR_Linux + 215) +#define __NR_timer_create		(__NR_Linux + 216) +#define __NR_timer_settime		(__NR_Linux + 217) +#define __NR_timer_gettime		(__NR_Linux + 218) +#define __NR_timer_getoverrun		(__NR_Linux + 219) +#define __NR_timer_delete		(__NR_Linux + 220) +#define __NR_clock_settime		(__NR_Linux + 221) +#define __NR_clock_gettime		(__NR_Linux + 222) +#define __NR_clock_getres		(__NR_Linux + 223) +#define __NR_clock_nanosleep		(__NR_Linux + 224) +#define __NR_tgkill			(__NR_Linux + 225) +#define __NR_utimes			(__NR_Linux + 226) +#define __NR_mbind			(__NR_Linux + 227) +#define __NR_get_mempolicy		(__NR_Linux + 228) +#define __NR_set_mempolicy		(__NR_Linux + 229) +#define __NR_mq_open			(__NR_Linux + 230) +#define __NR_mq_unlink			(__NR_Linux + 231) +#define __NR_mq_timedsend		(__NR_Linux + 232) +#define __NR_mq_timedreceive		(__NR_Linux + 233) +#define __NR_mq_notify			(__NR_Linux + 234) +#define __NR_mq_getsetattr		(__NR_Linux + 235) +#define __NR_vserver			(__NR_Linux + 236) +#define __NR_waitid			(__NR_Linux + 237) +/* #define __NR_sys_setaltroot		(__NR_Linux + 238) */ +#define __NR_add_key			(__NR_Linux + 239) +#define __NR_request_key		(__NR_Linux + 240) +#define __NR_keyctl			(__NR_Linux + 241) +#define __NR_set_thread_area		(__NR_Linux + 242) +#define __NR_inotify_init		(__NR_Linux + 243) +#define __NR_inotify_add_watch		(__NR_Linux + 244) +#define __NR_inotify_rm_watch		(__NR_Linux + 245) +#define __NR_migrate_pages		(__NR_Linux + 246) +#define __NR_openat			(__NR_Linux + 247) +#define __NR_mkdirat			(__NR_Linux + 248) +#define __NR_mknodat			(__NR_Linux + 249) +#define __NR_fchownat			(__NR_Linux + 250) +#define __NR_futimesat			(__NR_Linux + 251) +#define __NR_newfstatat			(__NR_Linux + 252) +#define __NR_unlinkat			(__NR_Linux + 253) +#define __NR_renameat			(__NR_Linux + 254) +#define __NR_linkat			(__NR_Linux + 255) +#define __NR_symlinkat			(__NR_Linux + 256) +#define __NR_readlinkat			(__NR_Linux + 257) +#define __NR_fchmodat			(__NR_Linux + 258) +#define __NR_faccessat			(__NR_Linux + 259) +#define __NR_pselect6			(__NR_Linux + 260) +#define __NR_ppoll			(__NR_Linux + 261) +#define __NR_unshare			(__NR_Linux + 262) +#define __NR_splice			(__NR_Linux + 263) +#define __NR_sync_file_range		(__NR_Linux + 264) +#define __NR_tee			(__NR_Linux + 265) +#define __NR_vmsplice			(__NR_Linux + 266) +#define __NR_move_pages			(__NR_Linux + 267) +#define __NR_set_robust_list		(__NR_Linux + 268) +#define __NR_get_robust_list		(__NR_Linux + 269) +#define __NR_kexec_load			(__NR_Linux + 270) +#define __NR_getcpu			(__NR_Linux + 271) +#define __NR_epoll_pwait		(__NR_Linux + 272) +#define __NR_ioprio_set			(__NR_Linux + 273) +#define __NR_ioprio_get			(__NR_Linux + 274) +#define __NR_utimensat			(__NR_Linux + 275) +#define __NR_signalfd			(__NR_Linux + 276) +#define __NR_timerfd			(__NR_Linux + 277) +#define __NR_eventfd			(__NR_Linux + 278) +#define __NR_fallocate			(__NR_Linux + 279) +#define __NR_timerfd_create		(__NR_Linux + 280) +#define __NR_timerfd_gettime		(__NR_Linux + 281) +#define __NR_timerfd_settime		(__NR_Linux + 282) +#define __NR_signalfd4			(__NR_Linux + 283) +#define __NR_eventfd2			(__NR_Linux + 284) +#define __NR_epoll_create1		(__NR_Linux + 285) +#define __NR_dup3			(__NR_Linux + 286) +#define __NR_pipe2			(__NR_Linux + 287) +#define __NR_inotify_init1		(__NR_Linux + 288) +#define __NR_preadv			(__NR_Linux + 289) +#define __NR_pwritev			(__NR_Linux + 290) +#define __NR_rt_tgsigqueueinfo		(__NR_Linux + 291) +#define __NR_perf_event_open		(__NR_Linux + 292) +#define __NR_accept4			(__NR_Linux + 293) +#define __NR_recvmmsg			(__NR_Linux + 294) +#define __NR_fanotify_init		(__NR_Linux + 295) +#define __NR_fanotify_mark		(__NR_Linux + 296) +#define __NR_prlimit64			(__NR_Linux + 297) +#define __NR_name_to_handle_at		(__NR_Linux + 298) +#define __NR_open_by_handle_at		(__NR_Linux + 299) +#define __NR_clock_adjtime		(__NR_Linux + 300) +#define __NR_syncfs			(__NR_Linux + 301) +#define __NR_sendmmsg			(__NR_Linux + 302) +#define __NR_setns			(__NR_Linux + 303) +#define __NR_process_vm_readv		(__NR_Linux + 304) +#define __NR_process_vm_writev		(__NR_Linux + 305) +#define __NR_kcmp			(__NR_Linux + 306) +#define __NR_finit_module		(__NR_Linux + 307) +#define __NR_getdents64			(__NR_Linux + 308) +#define __NR_sched_setattr		(__NR_Linux + 309) +#define __NR_sched_getattr		(__NR_Linux + 310) +#define __NR_renameat2			(__NR_Linux + 311) + +/* + * Offset of the last Linux 64-bit flavoured syscall + */ +#define __NR_Linux_syscalls		311 + +#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ + +#define __NR_64_Linux			5000 +#define __NR_64_Linux_syscalls		311 + +#if _MIPS_SIM == _MIPS_SIM_NABI32 + +/* + * Linux N32 syscalls are in the range from 6000 to 6999. + */ +#define __NR_Linux			6000 +#define __NR_read			(__NR_Linux +	0) +#define __NR_write			(__NR_Linux +	1) +#define __NR_open			(__NR_Linux +	2) +#define __NR_close			(__NR_Linux +	3) +#define __NR_stat			(__NR_Linux +	4) +#define __NR_fstat			(__NR_Linux +	5) +#define __NR_lstat			(__NR_Linux +	6) +#define __NR_poll			(__NR_Linux +	7) +#define __NR_lseek			(__NR_Linux +	8) +#define __NR_mmap			(__NR_Linux +	9) +#define __NR_mprotect			(__NR_Linux +  10) +#define __NR_munmap			(__NR_Linux +  11) +#define __NR_brk			(__NR_Linux +  12) +#define __NR_rt_sigaction		(__NR_Linux +  13) +#define __NR_rt_sigprocmask		(__NR_Linux +  14) +#define __NR_ioctl			(__NR_Linux +  15) +#define __NR_pread64			(__NR_Linux +  16) +#define __NR_pwrite64			(__NR_Linux +  17) +#define __NR_readv			(__NR_Linux +  18) +#define __NR_writev			(__NR_Linux +  19) +#define __NR_access			(__NR_Linux +  20) +#define __NR_pipe			(__NR_Linux +  21) +#define __NR__newselect			(__NR_Linux +  22) +#define __NR_sched_yield		(__NR_Linux +  23) +#define __NR_mremap			(__NR_Linux +  24) +#define __NR_msync			(__NR_Linux +  25) +#define __NR_mincore			(__NR_Linux +  26) +#define __NR_madvise			(__NR_Linux +  27) +#define __NR_shmget			(__NR_Linux +  28) +#define __NR_shmat			(__NR_Linux +  29) +#define __NR_shmctl			(__NR_Linux +  30) +#define __NR_dup			(__NR_Linux +  31) +#define __NR_dup2			(__NR_Linux +  32) +#define __NR_pause			(__NR_Linux +  33) +#define __NR_nanosleep			(__NR_Linux +  34) +#define __NR_getitimer			(__NR_Linux +  35) +#define __NR_setitimer			(__NR_Linux +  36) +#define __NR_alarm			(__NR_Linux +  37) +#define __NR_getpid			(__NR_Linux +  38) +#define __NR_sendfile			(__NR_Linux +  39) +#define __NR_socket			(__NR_Linux +  40) +#define __NR_connect			(__NR_Linux +  41) +#define __NR_accept			(__NR_Linux +  42) +#define __NR_sendto			(__NR_Linux +  43) +#define __NR_recvfrom			(__NR_Linux +  44) +#define __NR_sendmsg			(__NR_Linux +  45) +#define __NR_recvmsg			(__NR_Linux +  46) +#define __NR_shutdown			(__NR_Linux +  47) +#define __NR_bind			(__NR_Linux +  48) +#define __NR_listen			(__NR_Linux +  49) +#define __NR_getsockname		(__NR_Linux +  50) +#define __NR_getpeername		(__NR_Linux +  51) +#define __NR_socketpair			(__NR_Linux +  52) +#define __NR_setsockopt			(__NR_Linux +  53) +#define __NR_getsockopt			(__NR_Linux +  54) +#define __NR_clone			(__NR_Linux +  55) +#define __NR_fork			(__NR_Linux +  56) +#define __NR_execve			(__NR_Linux +  57) +#define __NR_exit			(__NR_Linux +  58) +#define __NR_wait4			(__NR_Linux +  59) +#define __NR_kill			(__NR_Linux +  60) +#define __NR_uname			(__NR_Linux +  61) +#define __NR_semget			(__NR_Linux +  62) +#define __NR_semop			(__NR_Linux +  63) +#define __NR_semctl			(__NR_Linux +  64) +#define __NR_shmdt			(__NR_Linux +  65) +#define __NR_msgget			(__NR_Linux +  66) +#define __NR_msgsnd			(__NR_Linux +  67) +#define __NR_msgrcv			(__NR_Linux +  68) +#define __NR_msgctl			(__NR_Linux +  69) +#define __NR_fcntl			(__NR_Linux +  70) +#define __NR_flock			(__NR_Linux +  71) +#define __NR_fsync			(__NR_Linux +  72) +#define __NR_fdatasync			(__NR_Linux +  73) +#define __NR_truncate			(__NR_Linux +  74) +#define __NR_ftruncate			(__NR_Linux +  75) +#define __NR_getdents			(__NR_Linux +  76) +#define __NR_getcwd			(__NR_Linux +  77) +#define __NR_chdir			(__NR_Linux +  78) +#define __NR_fchdir			(__NR_Linux +  79) +#define __NR_rename			(__NR_Linux +  80) +#define __NR_mkdir			(__NR_Linux +  81) +#define __NR_rmdir			(__NR_Linux +  82) +#define __NR_creat			(__NR_Linux +  83) +#define __NR_link			(__NR_Linux +  84) +#define __NR_unlink			(__NR_Linux +  85) +#define __NR_symlink			(__NR_Linux +  86) +#define __NR_readlink			(__NR_Linux +  87) +#define __NR_chmod			(__NR_Linux +  88) +#define __NR_fchmod			(__NR_Linux +  89) +#define __NR_chown			(__NR_Linux +  90) +#define __NR_fchown			(__NR_Linux +  91) +#define __NR_lchown			(__NR_Linux +  92) +#define __NR_umask			(__NR_Linux +  93) +#define __NR_gettimeofday		(__NR_Linux +  94) +#define __NR_getrlimit			(__NR_Linux +  95) +#define __NR_getrusage			(__NR_Linux +  96) +#define __NR_sysinfo			(__NR_Linux +  97) +#define __NR_times			(__NR_Linux +  98) +#define __NR_ptrace			(__NR_Linux +  99) +#define __NR_getuid			(__NR_Linux + 100) +#define __NR_syslog			(__NR_Linux + 101) +#define __NR_getgid			(__NR_Linux + 102) +#define __NR_setuid			(__NR_Linux + 103) +#define __NR_setgid			(__NR_Linux + 104) +#define __NR_geteuid			(__NR_Linux + 105) +#define __NR_getegid			(__NR_Linux + 106) +#define __NR_setpgid			(__NR_Linux + 107) +#define __NR_getppid			(__NR_Linux + 108) +#define __NR_getpgrp			(__NR_Linux + 109) +#define __NR_setsid			(__NR_Linux + 110) +#define __NR_setreuid			(__NR_Linux + 111) +#define __NR_setregid			(__NR_Linux + 112) +#define __NR_getgroups			(__NR_Linux + 113) +#define __NR_setgroups			(__NR_Linux + 114) +#define __NR_setresuid			(__NR_Linux + 115) +#define __NR_getresuid			(__NR_Linux + 116) +#define __NR_setresgid			(__NR_Linux + 117) +#define __NR_getresgid			(__NR_Linux + 118) +#define __NR_getpgid			(__NR_Linux + 119) +#define __NR_setfsuid			(__NR_Linux + 120) +#define __NR_setfsgid			(__NR_Linux + 121) +#define __NR_getsid			(__NR_Linux + 122) +#define __NR_capget			(__NR_Linux + 123) +#define __NR_capset			(__NR_Linux + 124) +#define __NR_rt_sigpending		(__NR_Linux + 125) +#define __NR_rt_sigtimedwait		(__NR_Linux + 126) +#define __NR_rt_sigqueueinfo		(__NR_Linux + 127) +#define __NR_rt_sigsuspend		(__NR_Linux + 128) +#define __NR_sigaltstack		(__NR_Linux + 129) +#define __NR_utime			(__NR_Linux + 130) +#define __NR_mknod			(__NR_Linux + 131) +#define __NR_personality		(__NR_Linux + 132) +#define __NR_ustat			(__NR_Linux + 133) +#define __NR_statfs			(__NR_Linux + 134) +#define __NR_fstatfs			(__NR_Linux + 135) +#define __NR_sysfs			(__NR_Linux + 136) +#define __NR_getpriority		(__NR_Linux + 137) +#define __NR_setpriority		(__NR_Linux + 138) +#define __NR_sched_setparam		(__NR_Linux + 139) +#define __NR_sched_getparam		(__NR_Linux + 140) +#define __NR_sched_setscheduler		(__NR_Linux + 141) +#define __NR_sched_getscheduler		(__NR_Linux + 142) +#define __NR_sched_get_priority_max	(__NR_Linux + 143) +#define __NR_sched_get_priority_min	(__NR_Linux + 144) +#define __NR_sched_rr_get_interval	(__NR_Linux + 145) +#define __NR_mlock			(__NR_Linux + 146) +#define __NR_munlock			(__NR_Linux + 147) +#define __NR_mlockall			(__NR_Linux + 148) +#define __NR_munlockall			(__NR_Linux + 149) +#define __NR_vhangup			(__NR_Linux + 150) +#define __NR_pivot_root			(__NR_Linux + 151) +#define __NR__sysctl			(__NR_Linux + 152) +#define __NR_prctl			(__NR_Linux + 153) +#define __NR_adjtimex			(__NR_Linux + 154) +#define __NR_setrlimit			(__NR_Linux + 155) +#define __NR_chroot			(__NR_Linux + 156) +#define __NR_sync			(__NR_Linux + 157) +#define __NR_acct			(__NR_Linux + 158) +#define __NR_settimeofday		(__NR_Linux + 159) +#define __NR_mount			(__NR_Linux + 160) +#define __NR_umount2			(__NR_Linux + 161) +#define __NR_swapon			(__NR_Linux + 162) +#define __NR_swapoff			(__NR_Linux + 163) +#define __NR_reboot			(__NR_Linux + 164) +#define __NR_sethostname		(__NR_Linux + 165) +#define __NR_setdomainname		(__NR_Linux + 166) +#define __NR_create_module		(__NR_Linux + 167) +#define __NR_init_module		(__NR_Linux + 168) +#define __NR_delete_module		(__NR_Linux + 169) +#define __NR_get_kernel_syms		(__NR_Linux + 170) +#define __NR_query_module		(__NR_Linux + 171) +#define __NR_quotactl			(__NR_Linux + 172) +#define __NR_nfsservctl			(__NR_Linux + 173) +#define __NR_getpmsg			(__NR_Linux + 174) +#define __NR_putpmsg			(__NR_Linux + 175) +#define __NR_afs_syscall		(__NR_Linux + 176) +#define __NR_reserved177		(__NR_Linux + 177) +#define __NR_gettid			(__NR_Linux + 178) +#define __NR_readahead			(__NR_Linux + 179) +#define __NR_setxattr			(__NR_Linux + 180) +#define __NR_lsetxattr			(__NR_Linux + 181) +#define __NR_fsetxattr			(__NR_Linux + 182) +#define __NR_getxattr			(__NR_Linux + 183) +#define __NR_lgetxattr			(__NR_Linux + 184) +#define __NR_fgetxattr			(__NR_Linux + 185) +#define __NR_listxattr			(__NR_Linux + 186) +#define __NR_llistxattr			(__NR_Linux + 187) +#define __NR_flistxattr			(__NR_Linux + 188) +#define __NR_removexattr		(__NR_Linux + 189) +#define __NR_lremovexattr		(__NR_Linux + 190) +#define __NR_fremovexattr		(__NR_Linux + 191) +#define __NR_tkill			(__NR_Linux + 192) +#define __NR_reserved193		(__NR_Linux + 193) +#define __NR_futex			(__NR_Linux + 194) +#define __NR_sched_setaffinity		(__NR_Linux + 195) +#define __NR_sched_getaffinity		(__NR_Linux + 196) +#define __NR_cacheflush			(__NR_Linux + 197) +#define __NR_cachectl			(__NR_Linux + 198) +#define __NR_sysmips			(__NR_Linux + 199) +#define __NR_io_setup			(__NR_Linux + 200) +#define __NR_io_destroy			(__NR_Linux + 201) +#define __NR_io_getevents		(__NR_Linux + 202) +#define __NR_io_submit			(__NR_Linux + 203) +#define __NR_io_cancel			(__NR_Linux + 204) +#define __NR_exit_group			(__NR_Linux + 205) +#define __NR_lookup_dcookie		(__NR_Linux + 206) +#define __NR_epoll_create		(__NR_Linux + 207) +#define __NR_epoll_ctl			(__NR_Linux + 208) +#define __NR_epoll_wait			(__NR_Linux + 209) +#define __NR_remap_file_pages		(__NR_Linux + 210) +#define __NR_rt_sigreturn		(__NR_Linux + 211) +#define __NR_fcntl64			(__NR_Linux + 212) +#define __NR_set_tid_address		(__NR_Linux + 213) +#define __NR_restart_syscall		(__NR_Linux + 214) +#define __NR_semtimedop			(__NR_Linux + 215) +#define __NR_fadvise64			(__NR_Linux + 216) +#define __NR_statfs64			(__NR_Linux + 217) +#define __NR_fstatfs64			(__NR_Linux + 218) +#define __NR_sendfile64			(__NR_Linux + 219) +#define __NR_timer_create		(__NR_Linux + 220) +#define __NR_timer_settime		(__NR_Linux + 221) +#define __NR_timer_gettime		(__NR_Linux + 222) +#define __NR_timer_getoverrun		(__NR_Linux + 223) +#define __NR_timer_delete		(__NR_Linux + 224) +#define __NR_clock_settime		(__NR_Linux + 225) +#define __NR_clock_gettime		(__NR_Linux + 226) +#define __NR_clock_getres		(__NR_Linux + 227) +#define __NR_clock_nanosleep		(__NR_Linux + 228) +#define __NR_tgkill			(__NR_Linux + 229) +#define __NR_utimes			(__NR_Linux + 230) +#define __NR_mbind			(__NR_Linux + 231) +#define __NR_get_mempolicy		(__NR_Linux + 232) +#define __NR_set_mempolicy		(__NR_Linux + 233) +#define __NR_mq_open			(__NR_Linux + 234) +#define __NR_mq_unlink			(__NR_Linux + 235) +#define __NR_mq_timedsend		(__NR_Linux + 236) +#define __NR_mq_timedreceive		(__NR_Linux + 237) +#define __NR_mq_notify			(__NR_Linux + 238) +#define __NR_mq_getsetattr		(__NR_Linux + 239) +#define __NR_vserver			(__NR_Linux + 240) +#define __NR_waitid			(__NR_Linux + 241) +/* #define __NR_sys_setaltroot		(__NR_Linux + 242) */ +#define __NR_add_key			(__NR_Linux + 243) +#define __NR_request_key		(__NR_Linux + 244) +#define __NR_keyctl			(__NR_Linux + 245) +#define __NR_set_thread_area		(__NR_Linux + 246) +#define __NR_inotify_init		(__NR_Linux + 247) +#define __NR_inotify_add_watch		(__NR_Linux + 248) +#define __NR_inotify_rm_watch		(__NR_Linux + 249) +#define __NR_migrate_pages		(__NR_Linux + 250) +#define __NR_openat			(__NR_Linux + 251) +#define __NR_mkdirat			(__NR_Linux + 252) +#define __NR_mknodat			(__NR_Linux + 253) +#define __NR_fchownat			(__NR_Linux + 254) +#define __NR_futimesat			(__NR_Linux + 255) +#define __NR_newfstatat			(__NR_Linux + 256) +#define __NR_unlinkat			(__NR_Linux + 257) +#define __NR_renameat			(__NR_Linux + 258) +#define __NR_linkat			(__NR_Linux + 259) +#define __NR_symlinkat			(__NR_Linux + 260) +#define __NR_readlinkat			(__NR_Linux + 261) +#define __NR_fchmodat			(__NR_Linux + 262) +#define __NR_faccessat			(__NR_Linux + 263) +#define __NR_pselect6			(__NR_Linux + 264) +#define __NR_ppoll			(__NR_Linux + 265) +#define __NR_unshare			(__NR_Linux + 266) +#define __NR_splice			(__NR_Linux + 267) +#define __NR_sync_file_range		(__NR_Linux + 268) +#define __NR_tee			(__NR_Linux + 269) +#define __NR_vmsplice			(__NR_Linux + 270) +#define __NR_move_pages			(__NR_Linux + 271) +#define __NR_set_robust_list		(__NR_Linux + 272) +#define __NR_get_robust_list		(__NR_Linux + 273) +#define __NR_kexec_load			(__NR_Linux + 274) +#define __NR_getcpu			(__NR_Linux + 275) +#define __NR_epoll_pwait		(__NR_Linux + 276) +#define __NR_ioprio_set			(__NR_Linux + 277) +#define __NR_ioprio_get			(__NR_Linux + 278) +#define __NR_utimensat			(__NR_Linux + 279) +#define __NR_signalfd			(__NR_Linux + 280) +#define __NR_timerfd			(__NR_Linux + 281) +#define __NR_eventfd			(__NR_Linux + 282) +#define __NR_fallocate			(__NR_Linux + 283) +#define __NR_timerfd_create		(__NR_Linux + 284) +#define __NR_timerfd_gettime		(__NR_Linux + 285) +#define __NR_timerfd_settime		(__NR_Linux + 286) +#define __NR_signalfd4			(__NR_Linux + 287) +#define __NR_eventfd2			(__NR_Linux + 288) +#define __NR_epoll_create1		(__NR_Linux + 289) +#define __NR_dup3			(__NR_Linux + 290) +#define __NR_pipe2			(__NR_Linux + 291) +#define __NR_inotify_init1		(__NR_Linux + 292) +#define __NR_preadv			(__NR_Linux + 293) +#define __NR_pwritev			(__NR_Linux + 294) +#define __NR_rt_tgsigqueueinfo		(__NR_Linux + 295) +#define __NR_perf_event_open		(__NR_Linux + 296) +#define __NR_accept4			(__NR_Linux + 297) +#define __NR_recvmmsg			(__NR_Linux + 298) +#define __NR_getdents64			(__NR_Linux + 299) +#define __NR_fanotify_init		(__NR_Linux + 300) +#define __NR_fanotify_mark		(__NR_Linux + 301) +#define __NR_prlimit64			(__NR_Linux + 302) +#define __NR_name_to_handle_at		(__NR_Linux + 303) +#define __NR_open_by_handle_at		(__NR_Linux + 304) +#define __NR_clock_adjtime		(__NR_Linux + 305) +#define __NR_syncfs			(__NR_Linux + 306) +#define __NR_sendmmsg			(__NR_Linux + 307) +#define __NR_setns			(__NR_Linux + 308) +#define __NR_process_vm_readv		(__NR_Linux + 309) +#define __NR_process_vm_writev		(__NR_Linux + 310) +#define __NR_kcmp			(__NR_Linux + 311) +#define __NR_finit_module		(__NR_Linux + 312) +#define __NR_sched_setattr		(__NR_Linux + 313) +#define __NR_sched_getattr		(__NR_Linux + 314) +#define __NR_renameat2			(__NR_Linux + 315) + +/* + * Offset of the last N32 flavoured syscall + */ +#define __NR_Linux_syscalls		315 + +#endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ + +#define __NR_N32_Linux			6000 +#define __NR_N32_Linux_syscalls		315 + +#endif /* _UAPI_ASM_UNISTD_H */  | 
