2021-07-14 00:44:10 +02:00
|
|
|
/*
|
|
|
|
* syscalls.h - Linux syscall interfaces (arch-specific)
|
|
|
|
*
|
|
|
|
* Copyright (c) 2008 Jaswinder Singh Rajput
|
|
|
|
*
|
|
|
|
* This file is released under the GPLv2.
|
|
|
|
* See the file COPYING for more details.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _ASM_E2K_SYSCALLS_H
|
|
|
|
#define _ASM_E2K_SYSCALLS_H
|
|
|
|
|
|
|
|
#include <linux/compiler.h>
|
|
|
|
#include <linux/compat.h>
|
|
|
|
#include <linux/linkage.h>
|
|
|
|
#include <linux/types.h>
|
|
|
|
|
|
|
|
extern unsigned long sys_mmap(unsigned long addr, unsigned long len,
|
|
|
|
unsigned long prot, unsigned long flags,
|
|
|
|
unsigned long fd, unsigned long off);
|
|
|
|
extern unsigned long sys_mmap2(unsigned long addr, unsigned long len,
|
|
|
|
int prot, int flags, int fd, long pgoff);
|
|
|
|
extern pid_t sys_clone_thread(unsigned long flags, unsigned long arg2,
|
|
|
|
unsigned long long arg3, int __user *parent_tidptr,
|
|
|
|
int __user *child_tidptr, unsigned long tls);
|
|
|
|
extern long sys_e2k_longjmp2(struct jmp_info *regs, u64 retval);
|
|
|
|
extern long sys_e2k_syswork(long syswork, long arg2,
|
|
|
|
long arg3, long arg4, long arg5);
|
|
|
|
extern long e2k_sys_execve(const char __user *filename,
|
|
|
|
const char __user *const __user *argv,
|
|
|
|
const char __user *const __user *envp);
|
|
|
|
extern long e2k_sys_execveat(int fd, const char __user *filename,
|
|
|
|
const char __user *const __user *argv,
|
|
|
|
const char __user *const __user *envp,
|
|
|
|
int flags);
|
|
|
|
|
|
|
|
extern long sys_stat64(const char __user *filename,
|
|
|
|
struct stat64 __user *statbuf);
|
|
|
|
extern long sys_fstat64(unsigned long fd, struct stat64 __user *statbuf);
|
|
|
|
extern long sys_lstat64(const char __user *filename,
|
|
|
|
struct stat64 __user *statbuf);
|
|
|
|
|
|
|
|
extern asmlinkage long sys_set_backtrace(unsigned long *__user buf,
|
|
|
|
size_t count, size_t skip, unsigned long flags);
|
|
|
|
extern asmlinkage long sys_get_backtrace(unsigned long *__user buf,
|
|
|
|
size_t count, size_t skip, unsigned long flags);
|
|
|
|
extern long sys_access_hw_stacks(unsigned long mode,
|
|
|
|
unsigned long long __user *frame_ptr, char __user *buf,
|
|
|
|
unsigned long buf_size, void __user *real_size);
|
|
|
|
|
|
|
|
extern long e2k_sys_prlimit64(pid_t pid, unsigned int resource,
|
|
|
|
const struct rlimit64 __user *new_rlim,
|
|
|
|
struct rlimit64 __user *old_rlim);
|
|
|
|
extern long e2k_sys_getrlimit(unsigned int resource,
|
|
|
|
struct rlimit __user *rlim);
|
|
|
|
#ifdef __ARCH_WANT_SYS_OLD_GETRLIMIT
|
|
|
|
extern long e2k_sys_old_getrlimit(unsigned int resource,
|
|
|
|
struct rlimit __user *rlim);
|
|
|
|
#endif
|
|
|
|
extern long e2k_sys_setrlimit(unsigned int resource,
|
|
|
|
struct rlimit __user *rlim);
|
|
|
|
|
|
|
|
#ifdef CONFIG_PROTECTED_MODE
|
|
|
|
extern long protected_sys_clean_descriptors(void __user *addr,
|
|
|
|
unsigned long size,
|
|
|
|
const unsigned long flags,
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
struct pt_regs *regs);
|
|
|
|
/* Flags for the function above see in arch/include/uapi/asm/protected_mode.h */
|
|
|
|
/* 0 - clean freed descriptor list */
|
|
|
|
|
|
|
|
extern long protected_sys_rt_sigaction(int sig,
|
|
|
|
const void __user *ptr, void __user *ptr2,
|
|
|
|
const size_t sigsetsize);
|
|
|
|
extern long protected_sys_rt_sigaction_ex(int sig,
|
|
|
|
const void __user *ptr, void __user *ptr2,
|
|
|
|
const size_t sigsetsize);
|
|
|
|
extern long protected_sys_mq_notify(const long a1,
|
|
|
|
const unsigned long __user a2);
|
2021-07-14 00:45:56 +02:00
|
|
|
extern long protected_sys_timer_create(const long a1, /* clockid */
|
|
|
|
const unsigned long __user a2, /* sevp */
|
|
|
|
const unsigned long __user a3, /* timerid */
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:44:10 +02:00
|
|
|
extern long protected_sys_rt_sigtimedwait(const unsigned long __user a1,
|
|
|
|
const unsigned long __user a2, const unsigned long __user a3,
|
|
|
|
const unsigned long a4);
|
|
|
|
extern long protected_sys_sysctl(const unsigned long __user a1);
|
|
|
|
extern long protected_sys_clone(const unsigned long a1, /* flags */
|
|
|
|
const unsigned long a2, /* new_stackptr */
|
|
|
|
const unsigned long __user a3,/* parent_tidptr */
|
|
|
|
const unsigned long __user a4,/* child_tidptr */
|
|
|
|
const unsigned long __user a5,/* tls */
|
|
|
|
const unsigned long unused6,
|
|
|
|
struct pt_regs *regs);
|
|
|
|
extern long protected_sys_execve(const unsigned long __user a1,/* filename*/
|
|
|
|
const unsigned long __user a2,/* argv[] */
|
|
|
|
const unsigned long __user a3,/* envp[] */
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_execveat(const unsigned long dirfd, /*a1 */
|
|
|
|
const unsigned long __user pathname,/* a2 */
|
|
|
|
const unsigned long __user argv, /* a3 */
|
|
|
|
const unsigned long __user envp, /* a4 */
|
|
|
|
const unsigned long flags, /* a5 */
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_futex(const unsigned long __user uaddr,
|
|
|
|
const unsigned long futex_op,
|
|
|
|
const unsigned long val,
|
|
|
|
const unsigned long a4, /* timeout/val2 */
|
|
|
|
const unsigned long __user uaddr2,
|
|
|
|
const unsigned long val3,
|
|
|
|
const struct pt_regs *regs);
|
2021-08-26 00:45:14 +02:00
|
|
|
extern long protected_sys_getgroups(const long a1, /* size */
|
2021-07-14 00:44:10 +02:00
|
|
|
const unsigned long __user a2, /* list[] */
|
|
|
|
const unsigned long unused3,
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-08-26 00:47:50 +02:00
|
|
|
extern long protected_sys_setgroups(const long a1, /* size */
|
|
|
|
const unsigned long __user a2, /* list[] */
|
|
|
|
const unsigned long unused3,
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:44:10 +02:00
|
|
|
extern long protected_sys_ipc(const unsigned long call, /* a1 */
|
|
|
|
const long first, /* a2 */
|
|
|
|
const unsigned long second, /* a3 */
|
|
|
|
const unsigned long third, /* a4 */
|
|
|
|
const unsigned long __user ptr, /* a5 */
|
|
|
|
const long fifth, /* a6 */
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_mmap(const unsigned long a1, /* start */
|
|
|
|
const unsigned long a2, /* length */
|
|
|
|
const unsigned long a3, /* prot */
|
|
|
|
const unsigned long a4, /* flags */
|
|
|
|
const unsigned long a5, /* fd */
|
|
|
|
const unsigned long a6, /* offset/bytes */
|
|
|
|
struct pt_regs *regs);
|
|
|
|
extern long protected_sys_mmap2(const unsigned long a1, /* start */
|
|
|
|
const unsigned long a2, /* length */
|
|
|
|
const unsigned long a3, /* prot */
|
|
|
|
const unsigned long a4, /* flags */
|
|
|
|
const unsigned long a5, /* fd */
|
|
|
|
const unsigned long a6, /* offset/pages */
|
|
|
|
struct pt_regs *regs);
|
|
|
|
extern long protected_sys_munmap(const unsigned long __user a1, /* addr */
|
|
|
|
const unsigned long a2, /* length */
|
|
|
|
const unsigned long unused3,
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
struct pt_regs *regs);
|
|
|
|
extern long protected_sys_mremap(const unsigned long __user old_address,
|
|
|
|
const unsigned long old_size,
|
|
|
|
const unsigned long new_size,
|
|
|
|
const unsigned long flags,
|
|
|
|
const unsigned long new_address,
|
|
|
|
const unsigned long a6, /* unused */
|
|
|
|
struct pt_regs *regs);
|
|
|
|
extern long protected_sys_readv(const unsigned long a1, /* fd */
|
|
|
|
const unsigned long __user a2, /* iov */
|
|
|
|
const unsigned long a3, /* iovcnt */
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_semctl(const long semid, /* a1 */
|
|
|
|
const long semnum, /* a2 */
|
|
|
|
const long cmd, /* a3 */
|
|
|
|
const unsigned long __user ptr, /* a4 */
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_shmat(const long shmid, /* a1 */
|
|
|
|
const unsigned long __user shmaddr, /* a2 */
|
|
|
|
const long shmflg, /* a3 */
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
struct pt_regs *regs);
|
|
|
|
extern long protected_sys_writev(const unsigned long a1, /* fd */
|
|
|
|
const unsigned long __user a2, /* iov */
|
|
|
|
const unsigned long a3, /* iovcnt */
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_preadv(const unsigned long a1, /* fd */
|
|
|
|
const unsigned long __user a2, /* iov */
|
|
|
|
const unsigned long a3, /* iovcnt */
|
|
|
|
const unsigned long a4, /* offset_l */
|
|
|
|
const unsigned long a5, /* offset_h */
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_pwritev(const unsigned long a1, /* fd */
|
|
|
|
const unsigned long __user a2, /* iov */
|
|
|
|
const unsigned long a3, /* iovcnt */
|
|
|
|
const unsigned long a4, /* offset_l */
|
|
|
|
const unsigned long a5, /* offset_h */
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_preadv2(const unsigned long a1, /* fd */
|
|
|
|
const unsigned long __user a2, /* iov */
|
|
|
|
const unsigned long a3, /* iovcnt */
|
|
|
|
const unsigned long a4, /* offset_l */
|
|
|
|
const unsigned long a5, /* offset_h*/
|
|
|
|
const unsigned long a6, /* flags */
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_pwritev2(const unsigned long a1, /* fd */
|
|
|
|
const unsigned long __user a2, /* iov */
|
|
|
|
const unsigned long a3, /* iovcnt */
|
|
|
|
const unsigned long a4, /* offset_l */
|
|
|
|
const unsigned long a5, /* offset_h*/
|
|
|
|
const unsigned long a6, /* flags */
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_socketcall(const unsigned long a1, /* call */
|
|
|
|
const unsigned long __user a2, /* args */
|
|
|
|
const unsigned long unused3,
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_sendmsg(const unsigned long sockfd,
|
|
|
|
const unsigned long __user msg,
|
|
|
|
const unsigned long flags,
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:45:56 +02:00
|
|
|
extern long protected_sys_sendmmsg(const unsigned long sockfd,
|
|
|
|
const unsigned long __user msgvec,
|
|
|
|
const unsigned long vlen,
|
|
|
|
const unsigned long flags,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:44:10 +02:00
|
|
|
extern long protected_sys_recvmsg(const unsigned long socket,
|
|
|
|
const unsigned long __user message,
|
|
|
|
const unsigned long flags,
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:45:56 +02:00
|
|
|
extern long protected_sys_recvmmsg(const unsigned long socket,
|
|
|
|
const unsigned long __user message,
|
|
|
|
const unsigned long vlen,
|
|
|
|
const unsigned long flags,
|
|
|
|
const unsigned long __user timeout,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:44:10 +02:00
|
|
|
extern long protected_sys_olduselib(const unsigned long __user a1, /* library */
|
|
|
|
const unsigned long __user a2); /* umdd */
|
|
|
|
/* NB> 'olduselib' is obsolete syscall; unsupported in CPU ISET V6 */
|
|
|
|
extern long protected_sys_uselib(const unsigned long __user a1, /* library */
|
|
|
|
const unsigned long __user a2); /* umdd */
|
2021-08-26 00:45:14 +02:00
|
|
|
extern long protected_sys_sigaltstack(const stack_prot_t __user *ss_128,
|
|
|
|
stack_prot_t __user *old_ss_128,
|
|
|
|
const unsigned long unused3,
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:44:10 +02:00
|
|
|
extern long protected_sys_unuselib(const unsigned long __user a1, /* addr */
|
|
|
|
const unsigned long a2,
|
|
|
|
const unsigned long a3,
|
|
|
|
const unsigned long a4,
|
|
|
|
const unsigned long a5,
|
|
|
|
const unsigned long a6,
|
|
|
|
struct pt_regs *regs);
|
|
|
|
extern long protected_sys_get_backtrace(const unsigned long __user buf,
|
|
|
|
size_t count, size_t skip,
|
|
|
|
unsigned long flags,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_set_backtrace(const unsigned long __user buf,
|
|
|
|
size_t count, size_t skip,
|
|
|
|
unsigned long flags,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_set_robust_list(
|
|
|
|
const unsigned long __user listhead, /* a1 */
|
|
|
|
const size_t len, /* a2 */
|
|
|
|
const unsigned long unused3,
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_get_robust_list(const unsigned long pid,
|
|
|
|
unsigned long __user head_ptr,
|
|
|
|
unsigned long __user len_ptr);
|
|
|
|
extern long protected_sys_process_vm_readv(const unsigned long pid, /*a1*/
|
|
|
|
const struct iovec __user *lvec, /* a2 */
|
|
|
|
unsigned long liovcnt, /* a3 */
|
|
|
|
const struct iovec __user *rvec, /* a4 */
|
|
|
|
unsigned long riovcnt, /* a5 */
|
|
|
|
unsigned long flags, /* a6 */
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_process_vm_writev(const unsigned long pid, /*a1*/
|
|
|
|
const struct iovec __user *lvec, /* a2 */
|
|
|
|
unsigned long liovcnt, /* a3 */
|
|
|
|
const struct iovec __user *rvec, /* a4 */
|
|
|
|
unsigned long riovcnt, /* a5 */
|
|
|
|
unsigned long flags, /* a6 */
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_vmsplice(int fd, /* a1 */
|
|
|
|
const struct iovec __user *iov, /* a2 */
|
|
|
|
unsigned long nr_segs, /*a3 */
|
|
|
|
unsigned int flags, /* a4 */
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_keyctl(const int operation, /* a1 */
|
|
|
|
const unsigned long arg2,
|
|
|
|
const unsigned long arg3,
|
|
|
|
const unsigned long arg4,
|
|
|
|
const unsigned long arg5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_prctl(const int option, /* a1 */
|
|
|
|
const unsigned long arg2,
|
|
|
|
const unsigned long arg3,
|
|
|
|
const unsigned long arg4,
|
|
|
|
const unsigned long arg5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:45:56 +02:00
|
|
|
extern long protected_sys_ioctl(const int fd, /* a1 */
|
|
|
|
const unsigned long request, /* a2 */
|
|
|
|
const unsigned long __user argp, /* a3 */
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-08-26 00:47:50 +02:00
|
|
|
extern long protected_sys_bpf(const int cmd, /* a1 */
|
|
|
|
const unsigned long __user attr, /* a2 */
|
|
|
|
const unsigned int size, /* a3 */
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:44:10 +02:00
|
|
|
extern long protected_sys_epoll_ctl(const unsigned long epfd, /* a1 */
|
|
|
|
const unsigned long op, /* a2 */
|
|
|
|
const unsigned long fd, /* a3 */
|
|
|
|
void __user *event, /* a4 */
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_epoll_wait(const unsigned long epfd, /* a1 */
|
|
|
|
void __user *event, /* a2 */
|
|
|
|
const long maxevents, /* a3 */
|
|
|
|
const long timeout, /* a4 */
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_epoll_pwait(const unsigned long epfd, /* a1 */
|
|
|
|
void __user *event, /* a2 */
|
|
|
|
const long maxevents, /* a3 */
|
|
|
|
const long timeout, /* a4 */
|
|
|
|
const unsigned long sigmask, /* a5 */
|
|
|
|
const unsigned long sigsetsize, /* a6 */
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_pselect6(const long nfds, /* a1 */
|
|
|
|
const unsigned long readfds, /* a2 */
|
|
|
|
const unsigned long writefds, /* a3 */
|
|
|
|
const unsigned long exceptfds, /* a4 */
|
|
|
|
const unsigned long timeout, /* a5 */
|
|
|
|
const unsigned long sigmask, /* a6 */
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:45:56 +02:00
|
|
|
extern long protected_sys_rt_sigqueueinfo(const long tgid, /* a1 */
|
|
|
|
const long sig, /* a2 */
|
|
|
|
const unsigned long __user uinfo, /* a3 */
|
|
|
|
const unsigned long unused4,
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_rt_tgsigqueueinfo(const long tgid, /* a1 */
|
|
|
|
const long tid, /* a2 */
|
|
|
|
const long sig, /* a3 */
|
|
|
|
const unsigned long __user uinfo, /* a4 */
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_pidfd_send_signal(const long pidfd, /* a1 */
|
|
|
|
const long sig, /* a2 */
|
|
|
|
const unsigned long __user info, /* a3 */
|
|
|
|
unsigned long flags, /* a4 */
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_waitid(const long which, /* a1 */
|
|
|
|
const long pid, /* a2 */
|
|
|
|
const unsigned long __user *infop, /* a3 */
|
|
|
|
const long options, /* a4 */
|
|
|
|
const unsigned long __user *ru, /* a5 */
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_io_uring_register(const unsigned long fd, /* a1 */
|
|
|
|
const unsigned long opcode, /* a2 */
|
|
|
|
const unsigned long __user arg, /* a3 */
|
|
|
|
const unsigned long nr_args, /* a4 */
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
|
|
|
extern long protected_sys_kexec_load(const unsigned long entry, /* a1 */
|
|
|
|
const unsigned long nr_segments, /* a2 */
|
|
|
|
const unsigned long __user segments, /* a3 */
|
|
|
|
const unsigned long flags, /* a4 */
|
|
|
|
const unsigned long unused5,
|
|
|
|
const unsigned long unused6,
|
|
|
|
const struct pt_regs *regs);
|
2021-07-14 00:44:10 +02:00
|
|
|
|
|
|
|
extern int arch_init_pm_sc_debug_mode(const int debug_mask);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Storing descriptor attributes in the sival_ptr_list list.
|
|
|
|
* The descriptor may be restored with the function that follows.
|
|
|
|
*/
|
|
|
|
static inline
|
|
|
|
void store_descriptor_attrs(void *kernel_ptr,
|
|
|
|
const long user_ptr_lo, const long user_ptr_hi,
|
|
|
|
const int ptr_tags, const int signum)
|
|
|
|
{
|
|
|
|
struct sival_ptr_list *new;
|
|
|
|
|
|
|
|
/* Saving kernel_ptr in sival_ptr_list: */
|
|
|
|
new = kmalloc(sizeof(*new), GFP_KERNEL);
|
|
|
|
new->kernel_ptr = kernel_ptr;
|
|
|
|
new->user_ptr_lo = user_ptr_lo;
|
|
|
|
new->user_ptr_hi = user_ptr_hi;
|
|
|
|
new->user_tags = ptr_tags;
|
|
|
|
new->signum = signum;
|
|
|
|
|
|
|
|
/* Saving sival_ptr in sival_ptr_list: */
|
|
|
|
down_write(&(current->mm->context.sival_ptr_list_sem));
|
|
|
|
/* Add new element as head of the list */
|
|
|
|
list_add(&new->link, &(current->mm->context.sival_ptr_list_head));
|
|
|
|
up_write(&(current->mm->context.sival_ptr_list_sem));
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Returns record with saved descriptor attributes (in sival_ptr_list)
|
|
|
|
* for the given pointer/signal number couple or NULL.
|
|
|
|
*/
|
|
|
|
static inline
|
|
|
|
struct sival_ptr_list *get_descriptor_attrs(const void *kernel_ptr,
|
|
|
|
const int signum)
|
|
|
|
{
|
|
|
|
struct sival_ptr_list *ret = NULL, *siptrl_ln;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* We look thru sival_ptr_list to find a record with the same
|
|
|
|
* kernel pointer and signum if specified:
|
|
|
|
*/
|
|
|
|
down_read(¤t->mm->context.sival_ptr_list_sem);
|
|
|
|
list_for_each_entry(siptrl_ln,
|
|
|
|
¤t->mm->context.sival_ptr_list_head, link) {
|
|
|
|
if (siptrl_ln->kernel_ptr == kernel_ptr) {
|
|
|
|
if (!signum || (siptrl_ln->signum == signum)) {
|
|
|
|
ret = siptrl_ln;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
up_read(¤t->mm->context.sival_ptr_list_sem);
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
#endif /* CONFIG_PROTECTED_MODE */
|
|
|
|
|
|
|
|
#ifdef CONFIG_COMPAT
|
|
|
|
extern long compat_sys_lseek(unsigned int fd, int offset, unsigned int whence);
|
|
|
|
extern long compat_sys_sigpending(u32 *);
|
|
|
|
extern long compat_sys_sigprocmask(int, u32 *, u32 *);
|
|
|
|
extern long sys32_pread64(unsigned int fd, char __user *ubuf,
|
|
|
|
compat_size_t count, unsigned long poslo, unsigned long poshi);
|
|
|
|
extern long sys32_pwrite64(unsigned int fd, char __user *ubuf,
|
|
|
|
compat_size_t count, unsigned long poslo, unsigned long poshi);
|
|
|
|
extern long sys32_readahead(int fd, unsigned long offlo,
|
|
|
|
unsigned long offhi, compat_size_t count);
|
|
|
|
extern long sys32_fadvise64(int fd, unsigned long offlo,
|
|
|
|
unsigned long offhi, compat_size_t len, int advice);
|
|
|
|
extern long sys32_fadvise64_64(int fd,
|
|
|
|
unsigned long offlo, unsigned long offhi,
|
|
|
|
unsigned long lenlo, unsigned long lenhi, int advice);
|
|
|
|
extern long sys32_sync_file_range(int fd,
|
|
|
|
unsigned long off_low, unsigned long off_high,
|
|
|
|
unsigned long nb_low, unsigned long nb_high, int flags);
|
|
|
|
extern long sys32_fallocate(int fd, int mode,
|
|
|
|
unsigned long offlo, unsigned long offhi,
|
|
|
|
unsigned long lenlo, unsigned long lenhi);
|
|
|
|
extern long sys32_truncate64(const char __user *path,
|
|
|
|
unsigned long low, unsigned long high);
|
|
|
|
extern long sys32_ftruncate64(unsigned int fd,
|
|
|
|
unsigned long low, unsigned long high);
|
|
|
|
extern long compat_e2k_sys_execve(const char __user *filename,
|
|
|
|
const compat_uptr_t __user *argv,
|
|
|
|
const compat_uptr_t __user *envp);
|
|
|
|
extern long compat_e2k_sys_execveat(int fd, const char __user *filename,
|
|
|
|
const compat_uptr_t __user *argv,
|
|
|
|
const compat_uptr_t __user *envp,
|
|
|
|
int flags);
|
|
|
|
extern asmlinkage long compat_sys_set_backtrace(unsigned int *__user buf,
|
|
|
|
size_t count, size_t skip, unsigned long flags);
|
|
|
|
extern asmlinkage long compat_sys_get_backtrace(unsigned int *__user buf,
|
|
|
|
size_t count, size_t skip, unsigned long flags);
|
|
|
|
extern long compat_sys_access_hw_stacks(unsigned long mode,
|
|
|
|
unsigned long long __user *frame_ptr, char __user *buf,
|
|
|
|
unsigned long buf_size, void __user *real_size);
|
|
|
|
extern long compat_e2k_sys_getrlimit(unsigned int resource,
|
|
|
|
struct compat_rlimit __user *rlim);
|
|
|
|
extern long compat_e2k_sys_setrlimit(unsigned int resource,
|
|
|
|
struct compat_rlimit __user *rlim);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* _ASM_E2K_SYSCALLS_H */
|