diff options
Diffstat (limited to 'arch/tile/include/asm/compat.h')
| -rw-r--r-- | arch/tile/include/asm/compat.h | 106 | 
1 files changed, 68 insertions, 38 deletions
diff --git a/arch/tile/include/asm/compat.h b/arch/tile/include/asm/compat.h index c3ae570c0a5..ffd4493efc7 100644 --- a/arch/tile/include/asm/compat.h +++ b/arch/tile/include/asm/compat.h @@ -44,7 +44,6 @@ typedef __kernel_uid32_t __compat_gid32_t;  typedef __kernel_mode_t compat_mode_t;  typedef __kernel_dev_t compat_dev_t;  typedef __kernel_loff_t compat_loff_t; -typedef __kernel_nlink_t compat_nlink_t;  typedef __kernel_ipc_pid_t compat_ipc_pid_t;  typedef __kernel_daddr_t compat_daddr_t;  typedef __kernel_fsid_t	compat_fsid_t; @@ -111,6 +110,68 @@ struct compat_flock64 {  typedef u32               compat_sigset_word; +typedef union compat_sigval { +	compat_int_t	sival_int; +	compat_uptr_t	sival_ptr; +} compat_sigval_t; + +#define COMPAT_SI_PAD_SIZE	(128/sizeof(int) - 3) + +typedef struct compat_siginfo { +	int si_signo; +	int si_errno; +	int si_code; + +	union { +		int _pad[COMPAT_SI_PAD_SIZE]; + +		/* kill() */ +		struct { +			unsigned int _pid;	/* sender's pid */ +			unsigned int _uid;	/* sender's uid */ +		} _kill; + +		/* POSIX.1b timers */ +		struct { +			compat_timer_t _tid;	/* timer id */ +			int _overrun;		/* overrun count */ +			compat_sigval_t _sigval;	/* same as below */ +			int _sys_private;	/* not to be passed to user */ +			int _overrun_incr;	/* amount to add to overrun */ +		} _timer; + +		/* POSIX.1b signals */ +		struct { +			unsigned int _pid;	/* sender's pid */ +			unsigned int _uid;	/* sender's uid */ +			compat_sigval_t _sigval; +		} _rt; + +		/* SIGCHLD */ +		struct { +			unsigned int _pid;	/* which child */ +			unsigned int _uid;	/* sender's uid */ +			int _status;		/* exit code */ +			compat_clock_t _utime; +			compat_clock_t _stime; +		} _sigchld; + +		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ +		struct { +			unsigned int _addr;	/* faulting insn/memory ref. */ +#ifdef __ARCH_SI_TRAPNO +			int _trapno;	/* TRAP # which caused the signal */ +#endif +		} _sigfault; + +		/* SIGPOLL */ +		struct { +			int _band;	/* POLL_IN, POLL_OUT, POLL_MSG */ +			int _fd; +		} _sigpoll; +	} _sifields; +} compat_siginfo_t; +  #define COMPAT_OFF_T_MAX	0x7fffffff  #define COMPAT_LOFF_T_MAX	0x7fffffffffffffffL @@ -211,57 +272,26 @@ extern int compat_setup_rt_frame(int sig, struct k_sigaction *ka,  				 struct pt_regs *regs);  /* Compat syscalls. */ -struct compat_sigaction;  struct compat_siginfo;  struct compat_sigaltstack; -long compat_sys_execve(const char __user *path, -		       const compat_uptr_t __user *argv, -		       const compat_uptr_t __user *envp, struct pt_regs *); -long compat_sys_rt_sigaction(int sig, struct compat_sigaction __user *act, -			     struct compat_sigaction __user *oact, -			     size_t sigsetsize); -long compat_sys_rt_sigqueueinfo(int pid, int sig, -				struct compat_siginfo __user *uinfo); -long compat_sys_rt_sigreturn(struct pt_regs *); -long compat_sys_sigaltstack(const struct compat_sigaltstack __user *uss_ptr, -			    struct compat_sigaltstack __user *uoss_ptr, -			    struct pt_regs *); +long compat_sys_rt_sigreturn(void);  long compat_sys_truncate64(char __user *filename, u32 dummy, u32 low, u32 high);  long compat_sys_ftruncate64(unsigned int fd, u32 dummy, u32 low, u32 high);  long compat_sys_pread64(unsigned int fd, char __user *ubuf, size_t count,  			u32 dummy, u32 low, u32 high);  long compat_sys_pwrite64(unsigned int fd, char __user *ubuf, size_t count,  			 u32 dummy, u32 low, u32 high); -long compat_sys_lookup_dcookie(u32 low, u32 high, char __user *buf, size_t len);  long compat_sys_sync_file_range2(int fd, unsigned int flags,  				 u32 offset_lo, u32 offset_hi,  				 u32 nbytes_lo, u32 nbytes_hi);  long compat_sys_fallocate(int fd, int mode,  			  u32 offset_lo, u32 offset_hi,  			  u32 len_lo, u32 len_hi); -long compat_sys_sched_rr_get_interval(compat_pid_t pid, -				      struct compat_timespec __user *interval); - -/* Versions of compat functions that differ from generic Linux. */ -struct compat_msgbuf; -long tile_compat_sys_msgsnd(int msqid, -			    struct compat_msgbuf __user *msgp, -			    size_t msgsz, int msgflg); -long tile_compat_sys_msgrcv(int msqid, -			    struct compat_msgbuf __user *msgp, -			    size_t msgsz, long msgtyp, int msgflg); -long tile_compat_sys_ptrace(compat_long_t request, compat_long_t pid, -			    compat_long_t addr, compat_long_t data); - -/* Tilera Linux syscalls that don't have "compat" versions. */ -#define compat_sys_flush_cache sys_flush_cache - -/* These are the intvec_64.S trampolines. */ -long _compat_sys_execve(const char __user *path, -			const compat_uptr_t __user *argv, -			const compat_uptr_t __user *envp); -long _compat_sys_sigaltstack(const struct compat_sigaltstack __user *uss_ptr, -			    struct compat_sigaltstack __user *uoss_ptr); +long compat_sys_llseek(unsigned int fd, unsigned int offset_high, +		       unsigned int offset_low, loff_t __user * result, +		       unsigned int origin); + +/* Assembly trampoline to avoid clobbering r0. */  long _compat_sys_rt_sigreturn(void);  #endif /* _ASM_TILE_COMPAT_H */  | 
