1 #include <linux/errno.h>
2 #include <linux/sched.h>
8 #include <linux/stat.h>
9 #include <linux/syscalls.h>
10 #include <linux/mman.h>
11 #include <linux/file.h>
12 #include <linux/utsname.h>
13 #include <linux/module.h>
15 #include <linux/ipc.h>
16 #include <asm/cacheflush.h>
17 #include <asm/uaccess.h>
18 #include <asm/unistd.h>
19 #include <asm/syscalls.h>
22 * sys_pipe() is the normal C calling standard for creating
23 * a pipe. It's not the way Unix traditionally does this, though.
25 asmlinkage
int sys_sh_pipe(unsigned long r4
, unsigned long r5
,
26 unsigned long r6
, unsigned long r7
,
27 struct pt_regs __regs
)
29 struct pt_regs
*regs
= RELOC_HIDE(&__regs
, 0);
33 error
= do_pipe_flags(fd
, 0);
35 regs
->regs
[1] = fd
[1];
41 asmlinkage ssize_t
sys_pread_wrapper(unsigned int fd
, char __user
*buf
,
42 size_t count
, long dummy
, loff_t pos
)
44 return sys_pread64(fd
, buf
, count
, pos
);
47 asmlinkage ssize_t
sys_pwrite_wrapper(unsigned int fd
, const char __user
*buf
,
48 size_t count
, long dummy
, loff_t pos
)
50 return sys_pwrite64(fd
, buf
, count
, pos
);
53 asmlinkage
int sys_fadvise64_64_wrapper(int fd
, u32 offset0
, u32 offset1
,
54 u32 len0
, u32 len1
, int advice
)
56 #ifdef __LITTLE_ENDIAN__
57 return sys_fadvise64_64(fd
, (u64
)offset1
<< 32 | offset0
,
58 (u64
)len1
<< 32 | len0
, advice
);
60 return sys_fadvise64_64(fd
, (u64
)offset0
<< 32 | offset1
,
61 (u64
)len0
<< 32 | len1
, advice
);
65 #if defined(CONFIG_CPU_SH2) || defined(CONFIG_CPU_SH2A)
66 #define SYSCALL_ARG3 "trapa #0x23"
68 #define SYSCALL_ARG3 "trapa #0x13"
72 * Do a system call from kernel instead of calling sys_execve so we
73 * end up with proper pt_regs.
75 int kernel_execve(const char *filename
, char *const argv
[], char *const envp
[])
77 register long __sc0
__asm__ ("r3") = __NR_execve
;
78 register long __sc4
__asm__ ("r4") = (long) filename
;
79 register long __sc5
__asm__ ("r5") = (long) argv
;
80 register long __sc6
__asm__ ("r6") = (long) envp
;
81 __asm__
__volatile__ (SYSCALL_ARG3
: "=z" (__sc0
)
82 : "0" (__sc0
), "r" (__sc4
), "r" (__sc5
), "r" (__sc6
)