]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * linux/arch/arm/kernel/sys_arm.c | |
3 | * | |
4 | * Copyright (C) People who wrote linux/arch/i386/kernel/sys_i386.c | |
5 | * Copyright (C) 1995, 1996 Russell King. | |
6 | * | |
7 | * This program is free software; you can redistribute it and/or modify | |
8 | * it under the terms of the GNU General Public License version 2 as | |
9 | * published by the Free Software Foundation. | |
10 | * | |
11 | * This file contains various random system calls that | |
12 | * have a non-standard calling sequence on the Linux/arm | |
13 | * platform. | |
14 | */ | |
ecea4ab6 | 15 | #include <linux/export.h> |
1da177e4 LT |
16 | #include <linux/errno.h> |
17 | #include <linux/sched.h> | |
1da177e4 LT |
18 | #include <linux/mm.h> |
19 | #include <linux/sem.h> | |
20 | #include <linux/msg.h> | |
21 | #include <linux/shm.h> | |
22 | #include <linux/stat.h> | |
23 | #include <linux/syscalls.h> | |
24 | #include <linux/mman.h> | |
25 | #include <linux/fs.h> | |
26 | #include <linux/file.h> | |
cba4fbbf | 27 | #include <linux/ipc.h> |
33fa9b13 | 28 | #include <linux/uaccess.h> |
5a0e3ad6 | 29 | #include <linux/slab.h> |
1da177e4 | 30 | |
1da177e4 LT |
31 | /* Fork a new task - this creates a new program thread. |
32 | * This is called indirectly via a small wrapper | |
33 | */ | |
34 | asmlinkage int sys_fork(struct pt_regs *regs) | |
35 | { | |
f24284ad | 36 | #ifdef CONFIG_MMU |
1da177e4 | 37 | return do_fork(SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL); |
f24284ad HC |
38 | #else |
39 | /* can not support in nommu mode */ | |
40 | return(-EINVAL); | |
41 | #endif | |
1da177e4 LT |
42 | } |
43 | ||
44 | /* Clone a task - this clones the calling program thread. | |
45 | * This is called indirectly via a small wrapper | |
46 | */ | |
47 | asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, | |
48 | int __user *parent_tidptr, int tls_val, | |
49 | int __user *child_tidptr, struct pt_regs *regs) | |
50 | { | |
51 | if (!newsp) | |
52 | newsp = regs->ARM_sp; | |
53 | ||
54 | return do_fork(clone_flags, newsp, regs, 0, parent_tidptr, child_tidptr); | |
55 | } | |
56 | ||
57 | asmlinkage int sys_vfork(struct pt_regs *regs) | |
58 | { | |
59 | return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL); | |
60 | } | |
61 | ||
68d9102f | 62 | /* |
6cbdc8c5 | 63 | * Since loff_t is a 64 bit type we avoid a lot of ABI hassle |
68d9102f NP |
64 | * with a different argument ordering. |
65 | */ | |
66 | asmlinkage long sys_arm_fadvise64_64(int fd, int advice, | |
67 | loff_t offset, loff_t len) | |
68 | { | |
69 | return sys_fadvise64_64(fd, offset, len, advice); | |
70 | } |