Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc: Merge asm/unistd.h

Signed-off-by: Paul Mackerras <paulus@samba.org>

+54 -524
+54 -37
include/asm-ppc/unistd.h include/asm-powerpc/unistd.h
··· 3 3 4 4 /* 5 5 * This file contains the system call numbers. 6 + * 7 + * This program is free software; you can redistribute it and/or 8 + * modify it under the terms of the GNU General Public License 9 + * as published by the Free Software Foundation; either version 10 + * 2 of the License, or (at your option) any later version. 6 11 */ 12 + 7 13 #define __NR_restart_syscall 0 8 14 #define __NR_exit 1 9 15 #define __NR_fork 2 ··· 202 196 #define __NR_vfork 189 203 197 #define __NR_ugetrlimit 190 /* SuS compliant getrlimit */ 204 198 #define __NR_readahead 191 199 + #ifndef __powerpc64__ /* these are 32-bit only */ 205 200 #define __NR_mmap2 192 206 201 #define __NR_truncate64 193 207 202 #define __NR_ftruncate64 194 208 203 #define __NR_stat64 195 209 204 #define __NR_lstat64 196 210 205 #define __NR_fstat64 197 206 + #endif 211 207 #define __NR_pciconfig_read 198 212 208 #define __NR_pciconfig_write 199 213 209 #define __NR_pciconfig_iobase 200 214 210 #define __NR_multiplexer 201 215 211 #define __NR_getdents64 202 216 212 #define __NR_pivot_root 203 213 + #ifndef __powerpc64__ 217 214 #define __NR_fcntl64 204 215 + #endif 218 216 #define __NR_madvise 205 219 217 #define __NR_mincore 206 220 218 #define __NR_gettid 207 ··· 240 230 #define __NR_sched_getaffinity 223 241 231 /* 224 currently unused */ 242 232 #define __NR_tuxcall 225 233 + #ifndef __powerpc64__ 243 234 #define __NR_sendfile64 226 235 + #endif 244 236 #define __NR_io_setup 227 245 237 #define __NR_io_destroy 228 246 238 #define __NR_io_getevents 229 ··· 270 258 #define __NR_utimes 251 271 259 #define __NR_statfs64 252 272 260 #define __NR_fstatfs64 253 261 + #ifndef __powerpc64__ 273 262 #define __NR_fadvise64_64 254 263 + #endif 274 264 #define __NR_rtas 255 275 265 #define __NR_sys_debug_setcontext 256 276 266 /* Number 257 is reserved for vserver */ 277 267 /* 258 currently unused */ 278 - /* Number 259 is reserved for new sys_mbind */ 279 - /* Number 260 is reserved for new sys_get_mempolicy */ 280 - /* Number 261 is reserved for new sys_set_mempolicy */ 268 + #define __NR_mbind 259 269 + #define __NR_get_mempolicy 260 270 + #define __NR_set_mempolicy 261 281 271 #define __NR_mq_open 262 282 272 #define __NR_mq_unlink 263 283 273 #define __NR_mq_timedsend 264 ··· 299 285 300 286 #define __NR_syscalls 278 301 287 302 - #define __NR(n) #n 288 + #ifdef __KERNEL__ 289 + #define __NR__exit __NR_exit 290 + #define NR_syscalls __NR_syscalls 291 + #endif 292 + 293 + #ifndef __ASSEMBLY__ 303 294 304 295 /* On powerpc a system call basically clobbers the same registers like a 305 296 * function call, with the exception of LR (which is needed for the ··· 408 389 { \ 409 390 __syscall_nr(5, type, name, arg1, arg2, arg3, arg4, arg5); \ 410 391 } 411 - 412 392 #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \ 413 393 type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) \ 414 394 { \ ··· 416 398 417 399 #ifdef __KERNEL__ 418 400 419 - #define __NR__exit __NR_exit 420 - #define NR_syscalls __NR_syscalls 401 + #include <linux/config.h> 402 + #include <linux/types.h> 403 + #include <linux/compiler.h> 404 + #include <linux/linkage.h> 421 405 422 406 #define __ARCH_WANT_IPC_PARSE_VERSION 423 407 #define __ARCH_WANT_OLD_READDIR 424 - #define __ARCH_WANT_OLD_STAT 425 408 #define __ARCH_WANT_STAT64 426 409 #define __ARCH_WANT_SYS_ALARM 427 410 #define __ARCH_WANT_SYS_GETHOSTNAME ··· 442 423 #define __ARCH_WANT_SYS_SIGPENDING 443 424 #define __ARCH_WANT_SYS_SIGPROCMASK 444 425 #define __ARCH_WANT_SYS_RT_SIGACTION 445 - 446 - /* 447 - * Forking from kernel space will result in the child getting a new, 448 - * empty kernel stack area. Thus the child cannot access automatic 449 - * variables set in the parent unless they are in registers, and the 450 - * procedure where the fork was done cannot return to its caller in 451 - * the child. 452 - */ 453 - 454 - #ifdef __KERNEL_SYSCALLS__ 455 - 456 - #include <linux/compiler.h> 457 - #include <linux/types.h> 426 + #ifdef CONFIG_PPC32 427 + #define __ARCH_WANT_OLD_STAT 428 + #endif 429 + #ifdef CONFIG_PPC64 430 + #define __ARCH_WANT_COMPAT_SYS_TIME 431 + #endif 458 432 459 433 /* 460 434 * System call prototypes. 461 435 */ 436 + #ifdef __KERNEL_SYSCALLS__ 462 437 extern pid_t setsid(void); 463 438 extern int write(int fd, const char *buf, off_t count); 464 439 extern int read(int fd, char *buf, off_t count); ··· 462 449 extern int open(const char *file, int flag, int mode); 463 450 extern int close(int fd); 464 451 extern pid_t waitpid(pid_t pid, int *wait_stat, int options); 452 + #endif /* __KERNEL_SYSCALLS__ */ 465 453 466 - unsigned long sys_mmap(unsigned long addr, size_t len, 467 - unsigned long prot, unsigned long flags, 468 - unsigned long fd, off_t offset); 454 + /* 455 + * Functions that implement syscalls. 456 + */ 457 + unsigned long sys_mmap(unsigned long addr, size_t len, unsigned long prot, 458 + unsigned long flags, unsigned long fd, off_t offset); 469 459 unsigned long sys_mmap2(unsigned long addr, size_t len, 470 460 unsigned long prot, unsigned long flags, 471 461 unsigned long fd, unsigned long pgoff); ··· 477 461 unsigned long a3, unsigned long a4, unsigned long a5, 478 462 struct pt_regs *regs); 479 463 int sys_clone(unsigned long clone_flags, unsigned long usp, 480 - int __user *parent_tidp, void __user *child_threadptr, 481 - int __user *child_tidp, int p6, 482 - struct pt_regs *regs); 483 - int sys_fork(int p1, int p2, int p3, int p4, int p5, int p6, 464 + int __user *parent_tidp, void __user *child_threadptr, 465 + int __user *child_tidp, int p6, struct pt_regs *regs); 466 + int sys_fork(unsigned long p1, unsigned long p2, unsigned long p3, 467 + unsigned long p4, unsigned long p5, unsigned long p6, 484 468 struct pt_regs *regs); 485 - int sys_vfork(int p1, int p2, int p3, int p4, int p5, int p6, 469 + int sys_vfork(unsigned long p1, unsigned long p2, unsigned long p3, 470 + unsigned long p4, unsigned long p5, unsigned long p6, 486 471 struct pt_regs *regs); 487 472 int sys_pipe(int __user *fildes); 488 473 int sys_ptrace(long request, long pid, long addr, long data); 489 474 struct sigaction; 490 - long sys_rt_sigaction(int sig, 491 - const struct sigaction __user *act, 492 - struct sigaction __user *oact, 493 - size_t sigsetsize); 494 - 495 - #endif /* __KERNEL_SYSCALLS__ */ 475 + long sys_rt_sigaction(int sig, const struct sigaction __user *act, 476 + struct sigaction __user *oact, size_t sigsetsize); 496 477 497 478 /* 498 479 * "Conditional" syscalls ··· 497 484 * What we want is __attribute__((weak,alias("sys_ni_syscall"))), 498 485 * but it doesn't work on all toolchains, so we just do it by hand 499 486 */ 500 - #ifndef cond_syscall 487 + #ifdef CONFIG_PPC32 501 488 #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") 489 + #else 490 + #define cond_syscall(x) asm(".weak\t." #x "\n\t.set\t." #x ",.sys_ni_syscall") 502 491 #endif 503 492 504 - #endif /* __KERNEL__ */ 493 + #endif /* __KERNEL__ */ 494 + 495 + #endif /* __ASSEMBLY__ */ 505 496 506 497 #endif /* _ASM_PPC_UNISTD_H_ */
-487
include/asm-ppc64/unistd.h
··· 1 - #ifndef _ASM_PPC_UNISTD_H_ 2 - #define _ASM_PPC_UNISTD_H_ 3 - 4 - /* 5 - * This file contains the system call numbers. 6 - * 7 - * This program is free software; you can redistribute it and/or 8 - * modify it under the terms of the GNU General Public License 9 - * as published by the Free Software Foundation; either version 10 - * 2 of the License, or (at your option) any later version. 11 - */ 12 - 13 - #define __NR_restart_syscall 0 14 - #define __NR_exit 1 15 - #define __NR_fork 2 16 - #define __NR_read 3 17 - #define __NR_write 4 18 - #define __NR_open 5 19 - #define __NR_close 6 20 - #define __NR_waitpid 7 21 - #define __NR_creat 8 22 - #define __NR_link 9 23 - #define __NR_unlink 10 24 - #define __NR_execve 11 25 - #define __NR_chdir 12 26 - #define __NR_time 13 27 - #define __NR_mknod 14 28 - #define __NR_chmod 15 29 - #define __NR_lchown 16 30 - #define __NR_break 17 31 - #define __NR_oldstat 18 32 - #define __NR_lseek 19 33 - #define __NR_getpid 20 34 - #define __NR_mount 21 35 - #define __NR_umount 22 36 - #define __NR_setuid 23 37 - #define __NR_getuid 24 38 - #define __NR_stime 25 39 - #define __NR_ptrace 26 40 - #define __NR_alarm 27 41 - #define __NR_oldfstat 28 42 - #define __NR_pause 29 43 - #define __NR_utime 30 44 - #define __NR_stty 31 45 - #define __NR_gtty 32 46 - #define __NR_access 33 47 - #define __NR_nice 34 48 - #define __NR_ftime 35 49 - #define __NR_sync 36 50 - #define __NR_kill 37 51 - #define __NR_rename 38 52 - #define __NR_mkdir 39 53 - #define __NR_rmdir 40 54 - #define __NR_dup 41 55 - #define __NR_pipe 42 56 - #define __NR_times 43 57 - #define __NR_prof 44 58 - #define __NR_brk 45 59 - #define __NR_setgid 46 60 - #define __NR_getgid 47 61 - #define __NR_signal 48 62 - #define __NR_geteuid 49 63 - #define __NR_getegid 50 64 - #define __NR_acct 51 65 - #define __NR_umount2 52 66 - #define __NR_lock 53 67 - #define __NR_ioctl 54 68 - #define __NR_fcntl 55 69 - #define __NR_mpx 56 70 - #define __NR_setpgid 57 71 - #define __NR_ulimit 58 72 - #define __NR_oldolduname 59 73 - #define __NR_umask 60 74 - #define __NR_chroot 61 75 - #define __NR_ustat 62 76 - #define __NR_dup2 63 77 - #define __NR_getppid 64 78 - #define __NR_getpgrp 65 79 - #define __NR_setsid 66 80 - #define __NR_sigaction 67 81 - #define __NR_sgetmask 68 82 - #define __NR_ssetmask 69 83 - #define __NR_setreuid 70 84 - #define __NR_setregid 71 85 - #define __NR_sigsuspend 72 86 - #define __NR_sigpending 73 87 - #define __NR_sethostname 74 88 - #define __NR_setrlimit 75 89 - #define __NR_getrlimit 76 90 - #define __NR_getrusage 77 91 - #define __NR_gettimeofday 78 92 - #define __NR_settimeofday 79 93 - #define __NR_getgroups 80 94 - #define __NR_setgroups 81 95 - #define __NR_select 82 96 - #define __NR_symlink 83 97 - #define __NR_oldlstat 84 98 - #define __NR_readlink 85 99 - #define __NR_uselib 86 100 - #define __NR_swapon 87 101 - #define __NR_reboot 88 102 - #define __NR_readdir 89 103 - #define __NR_mmap 90 104 - #define __NR_munmap 91 105 - #define __NR_truncate 92 106 - #define __NR_ftruncate 93 107 - #define __NR_fchmod 94 108 - #define __NR_fchown 95 109 - #define __NR_getpriority 96 110 - #define __NR_setpriority 97 111 - #define __NR_profil 98 112 - #define __NR_statfs 99 113 - #define __NR_fstatfs 100 114 - #define __NR_ioperm 101 115 - #define __NR_socketcall 102 116 - #define __NR_syslog 103 117 - #define __NR_setitimer 104 118 - #define __NR_getitimer 105 119 - #define __NR_stat 106 120 - #define __NR_lstat 107 121 - #define __NR_fstat 108 122 - #define __NR_olduname 109 123 - #define __NR_iopl 110 124 - #define __NR_vhangup 111 125 - #define __NR_idle 112 126 - #define __NR_vm86 113 127 - #define __NR_wait4 114 128 - #define __NR_swapoff 115 129 - #define __NR_sysinfo 116 130 - #define __NR_ipc 117 131 - #define __NR_fsync 118 132 - #define __NR_sigreturn 119 133 - #define __NR_clone 120 134 - #define __NR_setdomainname 121 135 - #define __NR_uname 122 136 - #define __NR_modify_ldt 123 137 - #define __NR_adjtimex 124 138 - #define __NR_mprotect 125 139 - #define __NR_sigprocmask 126 140 - #define __NR_create_module 127 141 - #define __NR_init_module 128 142 - #define __NR_delete_module 129 143 - #define __NR_get_kernel_syms 130 144 - #define __NR_quotactl 131 145 - #define __NR_getpgid 132 146 - #define __NR_fchdir 133 147 - #define __NR_bdflush 134 148 - #define __NR_sysfs 135 149 - #define __NR_personality 136 150 - #define __NR_afs_syscall 137 /* Syscall for Andrew File System */ 151 - #define __NR_setfsuid 138 152 - #define __NR_setfsgid 139 153 - #define __NR__llseek 140 154 - #define __NR_getdents 141 155 - #define __NR__newselect 142 156 - #define __NR_flock 143 157 - #define __NR_msync 144 158 - #define __NR_readv 145 159 - #define __NR_writev 146 160 - #define __NR_getsid 147 161 - #define __NR_fdatasync 148 162 - #define __NR__sysctl 149 163 - #define __NR_mlock 150 164 - #define __NR_munlock 151 165 - #define __NR_mlockall 152 166 - #define __NR_munlockall 153 167 - #define __NR_sched_setparam 154 168 - #define __NR_sched_getparam 155 169 - #define __NR_sched_setscheduler 156 170 - #define __NR_sched_getscheduler 157 171 - #define __NR_sched_yield 158 172 - #define __NR_sched_get_priority_max 159 173 - #define __NR_sched_get_priority_min 160 174 - #define __NR_sched_rr_get_interval 161 175 - #define __NR_nanosleep 162 176 - #define __NR_mremap 163 177 - #define __NR_setresuid 164 178 - #define __NR_getresuid 165 179 - #define __NR_query_module 166 180 - #define __NR_poll 167 181 - #define __NR_nfsservctl 168 182 - #define __NR_setresgid 169 183 - #define __NR_getresgid 170 184 - #define __NR_prctl 171 185 - #define __NR_rt_sigreturn 172 186 - #define __NR_rt_sigaction 173 187 - #define __NR_rt_sigprocmask 174 188 - #define __NR_rt_sigpending 175 189 - #define __NR_rt_sigtimedwait 176 190 - #define __NR_rt_sigqueueinfo 177 191 - #define __NR_rt_sigsuspend 178 192 - #define __NR_pread64 179 193 - #define __NR_pwrite64 180 194 - #define __NR_chown 181 195 - #define __NR_getcwd 182 196 - #define __NR_capget 183 197 - #define __NR_capset 184 198 - #define __NR_sigaltstack 185 199 - #define __NR_sendfile 186 200 - #define __NR_getpmsg 187 /* some people actually want streams */ 201 - #define __NR_putpmsg 188 /* some people actually want streams */ 202 - #define __NR_vfork 189 203 - #define __NR_ugetrlimit 190 /* SuS compliant getrlimit */ 204 - #define __NR_readahead 191 205 - /* #define __NR_mmap2 192 32bit only */ 206 - /* #define __NR_truncate64 193 32bit only */ 207 - /* #define __NR_ftruncate64 194 32bit only */ 208 - /* #define __NR_stat64 195 32bit only */ 209 - /* #define __NR_lstat64 196 32bit only */ 210 - /* #define __NR_fstat64 197 32bit only */ 211 - #define __NR_pciconfig_read 198 212 - #define __NR_pciconfig_write 199 213 - #define __NR_pciconfig_iobase 200 214 - #define __NR_multiplexer 201 215 - #define __NR_getdents64 202 216 - #define __NR_pivot_root 203 217 - /* #define __NR_fcntl64 204 32bit only */ 218 - #define __NR_madvise 205 219 - #define __NR_mincore 206 220 - #define __NR_gettid 207 221 - #define __NR_tkill 208 222 - #define __NR_setxattr 209 223 - #define __NR_lsetxattr 210 224 - #define __NR_fsetxattr 211 225 - #define __NR_getxattr 212 226 - #define __NR_lgetxattr 213 227 - #define __NR_fgetxattr 214 228 - #define __NR_listxattr 215 229 - #define __NR_llistxattr 216 230 - #define __NR_flistxattr 217 231 - #define __NR_removexattr 218 232 - #define __NR_lremovexattr 219 233 - #define __NR_fremovexattr 220 234 - #define __NR_futex 221 235 - #define __NR_sched_setaffinity 222 236 - #define __NR_sched_getaffinity 223 237 - /* 224 currently unused */ 238 - #define __NR_tuxcall 225 239 - /* #define __NR_sendfile64 226 32bit only */ 240 - #define __NR_io_setup 227 241 - #define __NR_io_destroy 228 242 - #define __NR_io_getevents 229 243 - #define __NR_io_submit 230 244 - #define __NR_io_cancel 231 245 - #define __NR_set_tid_address 232 246 - #define __NR_fadvise64 233 247 - #define __NR_exit_group 234 248 - #define __NR_lookup_dcookie 235 249 - #define __NR_epoll_create 236 250 - #define __NR_epoll_ctl 237 251 - #define __NR_epoll_wait 238 252 - #define __NR_remap_file_pages 239 253 - #define __NR_timer_create 240 254 - #define __NR_timer_settime 241 255 - #define __NR_timer_gettime 242 256 - #define __NR_timer_getoverrun 243 257 - #define __NR_timer_delete 244 258 - #define __NR_clock_settime 245 259 - #define __NR_clock_gettime 246 260 - #define __NR_clock_getres 247 261 - #define __NR_clock_nanosleep 248 262 - #define __NR_swapcontext 249 263 - #define __NR_tgkill 250 264 - #define __NR_utimes 251 265 - #define __NR_statfs64 252 266 - #define __NR_fstatfs64 253 267 - /* #define __NR_fadvise64_64 254 32bit only */ 268 - #define __NR_rtas 255 269 - /* Number 256 is reserved for sys_debug_setcontext */ 270 - /* Number 257 is reserved for vserver */ 271 - /* 258 currently unused */ 272 - #define __NR_mbind 259 273 - #define __NR_get_mempolicy 260 274 - #define __NR_set_mempolicy 261 275 - #define __NR_mq_open 262 276 - #define __NR_mq_unlink 263 277 - #define __NR_mq_timedsend 264 278 - #define __NR_mq_timedreceive 265 279 - #define __NR_mq_notify 266 280 - #define __NR_mq_getsetattr 267 281 - #define __NR_kexec_load 268 282 - #define __NR_add_key 269 283 - #define __NR_request_key 270 284 - #define __NR_keyctl 271 285 - #define __NR_waitid 272 286 - #define __NR_ioprio_set 273 287 - #define __NR_ioprio_get 274 288 - #define __NR_inotify_init 275 289 - #define __NR_inotify_add_watch 276 290 - #define __NR_inotify_rm_watch 277 291 - 292 - #define __NR_syscalls 278 293 - #ifdef __KERNEL__ 294 - #define NR_syscalls __NR_syscalls 295 - #endif 296 - 297 - #ifndef __ASSEMBLY__ 298 - 299 - /* On powerpc a system call basically clobbers the same registers like a 300 - * function call, with the exception of LR (which is needed for the 301 - * "sc; bnslr" sequence) and CR (where only CR0.SO is clobbered to signal 302 - * an error return status). 303 - */ 304 - 305 - #define __syscall_nr(nr, type, name, args...) \ 306 - unsigned long __sc_ret, __sc_err; \ 307 - { \ 308 - register unsigned long __sc_0 __asm__ ("r0"); \ 309 - register unsigned long __sc_3 __asm__ ("r3"); \ 310 - register unsigned long __sc_4 __asm__ ("r4"); \ 311 - register unsigned long __sc_5 __asm__ ("r5"); \ 312 - register unsigned long __sc_6 __asm__ ("r6"); \ 313 - register unsigned long __sc_7 __asm__ ("r7"); \ 314 - register unsigned long __sc_8 __asm__ ("r8"); \ 315 - \ 316 - __sc_loadargs_##nr(name, args); \ 317 - __asm__ __volatile__ \ 318 - ("sc \n\t" \ 319 - "mfcr %0 " \ 320 - : "=&r" (__sc_0), \ 321 - "=&r" (__sc_3), "=&r" (__sc_4), \ 322 - "=&r" (__sc_5), "=&r" (__sc_6), \ 323 - "=&r" (__sc_7), "=&r" (__sc_8) \ 324 - : __sc_asm_input_##nr \ 325 - : "cr0", "ctr", "memory", \ 326 - "r9", "r10","r11", "r12"); \ 327 - __sc_ret = __sc_3; \ 328 - __sc_err = __sc_0; \ 329 - } \ 330 - if (__sc_err & 0x10000000) \ 331 - { \ 332 - errno = __sc_ret; \ 333 - __sc_ret = -1; \ 334 - } \ 335 - return (type) __sc_ret 336 - 337 - #define __sc_loadargs_0(name, dummy...) \ 338 - __sc_0 = __NR_##name 339 - #define __sc_loadargs_1(name, arg1) \ 340 - __sc_loadargs_0(name); \ 341 - __sc_3 = (unsigned long) (arg1) 342 - #define __sc_loadargs_2(name, arg1, arg2) \ 343 - __sc_loadargs_1(name, arg1); \ 344 - __sc_4 = (unsigned long) (arg2) 345 - #define __sc_loadargs_3(name, arg1, arg2, arg3) \ 346 - __sc_loadargs_2(name, arg1, arg2); \ 347 - __sc_5 = (unsigned long) (arg3) 348 - #define __sc_loadargs_4(name, arg1, arg2, arg3, arg4) \ 349 - __sc_loadargs_3(name, arg1, arg2, arg3); \ 350 - __sc_6 = (unsigned long) (arg4) 351 - #define __sc_loadargs_5(name, arg1, arg2, arg3, arg4, arg5) \ 352 - __sc_loadargs_4(name, arg1, arg2, arg3, arg4); \ 353 - __sc_7 = (unsigned long) (arg5) 354 - #define __sc_loadargs_6(name, arg1, arg2, arg3, arg4, arg5, arg6) \ 355 - __sc_loadargs_5(name, arg1, arg2, arg3, arg4, arg5); \ 356 - __sc_8 = (unsigned long) (arg6) 357 - 358 - #define __sc_asm_input_0 "0" (__sc_0) 359 - #define __sc_asm_input_1 __sc_asm_input_0, "1" (__sc_3) 360 - #define __sc_asm_input_2 __sc_asm_input_1, "2" (__sc_4) 361 - #define __sc_asm_input_3 __sc_asm_input_2, "3" (__sc_5) 362 - #define __sc_asm_input_4 __sc_asm_input_3, "4" (__sc_6) 363 - #define __sc_asm_input_5 __sc_asm_input_4, "5" (__sc_7) 364 - #define __sc_asm_input_6 __sc_asm_input_5, "6" (__sc_8) 365 - 366 - #define _syscall0(type,name) \ 367 - type name(void) \ 368 - { \ 369 - __syscall_nr(0, type, name); \ 370 - } 371 - 372 - #define _syscall1(type,name,type1,arg1) \ 373 - type name(type1 arg1) \ 374 - { \ 375 - __syscall_nr(1, type, name, arg1); \ 376 - } 377 - 378 - #define _syscall2(type,name,type1,arg1,type2,arg2) \ 379 - type name(type1 arg1, type2 arg2) \ 380 - { \ 381 - __syscall_nr(2, type, name, arg1, arg2); \ 382 - } 383 - 384 - #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ 385 - type name(type1 arg1, type2 arg2, type3 arg3) \ 386 - { \ 387 - __syscall_nr(3, type, name, arg1, arg2, arg3); \ 388 - } 389 - 390 - #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ 391 - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ 392 - { \ 393 - __syscall_nr(4, type, name, arg1, arg2, arg3, arg4); \ 394 - } 395 - 396 - #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ 397 - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ 398 - { \ 399 - __syscall_nr(5, type, name, arg1, arg2, arg3, arg4, arg5); \ 400 - } 401 - #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \ 402 - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) \ 403 - { \ 404 - __syscall_nr(6, type, name, arg1, arg2, arg3, arg4, arg5, arg6); \ 405 - } 406 - 407 - #ifdef __KERNEL_SYSCALLS__ 408 - 409 - /* 410 - * Forking from kernel space will result in the child getting a new, 411 - * empty kernel stack area. Thus the child cannot access automatic 412 - * variables set in the parent unless they are in registers, and the 413 - * procedure where the fork was done cannot return to its caller in 414 - * the child. 415 - */ 416 - 417 - /* 418 - * System call prototypes. 419 - */ 420 - static inline _syscall3(int, execve, __const__ char *, file, char **, argv, 421 - char **,envp) 422 - 423 - #endif /* __KERNEL_SYSCALLS__ */ 424 - 425 - #ifdef __KERNEL__ 426 - 427 - #include <linux/types.h> 428 - #include <linux/compiler.h> 429 - #include <linux/linkage.h> 430 - 431 - #define __ARCH_WANT_IPC_PARSE_VERSION 432 - #define __ARCH_WANT_OLD_READDIR 433 - #define __ARCH_WANT_STAT64 434 - #define __ARCH_WANT_SYS_ALARM 435 - #define __ARCH_WANT_SYS_GETHOSTNAME 436 - #define __ARCH_WANT_SYS_PAUSE 437 - #define __ARCH_WANT_SYS_SGETMASK 438 - #define __ARCH_WANT_SYS_SIGNAL 439 - #define __ARCH_WANT_SYS_TIME 440 - #define __ARCH_WANT_COMPAT_SYS_TIME 441 - #define __ARCH_WANT_SYS_UTIME 442 - #define __ARCH_WANT_SYS_WAITPID 443 - #define __ARCH_WANT_SYS_SOCKETCALL 444 - #define __ARCH_WANT_SYS_FADVISE64 445 - #define __ARCH_WANT_SYS_GETPGRP 446 - #define __ARCH_WANT_SYS_LLSEEK 447 - #define __ARCH_WANT_SYS_NICE 448 - #define __ARCH_WANT_SYS_OLD_GETRLIMIT 449 - #define __ARCH_WANT_SYS_OLDUMOUNT 450 - #define __ARCH_WANT_SYS_SIGPENDING 451 - #define __ARCH_WANT_SYS_SIGPROCMASK 452 - #define __ARCH_WANT_SYS_RT_SIGACTION 453 - 454 - unsigned long sys_mmap(unsigned long addr, size_t len, unsigned long prot, 455 - unsigned long flags, unsigned long fd, off_t offset); 456 - struct pt_regs; 457 - int sys_execve(unsigned long a0, unsigned long a1, unsigned long a2, 458 - unsigned long a3, unsigned long a4, unsigned long a5, 459 - struct pt_regs *regs); 460 - int sys_clone(unsigned long clone_flags, unsigned long p2, unsigned long p3, 461 - unsigned long p4, unsigned long p5, unsigned long p6, 462 - struct pt_regs *regs); 463 - int sys_fork(unsigned long p1, unsigned long p2, unsigned long p3, 464 - unsigned long p4, unsigned long p5, unsigned long p6, 465 - struct pt_regs *regs); 466 - int sys_vfork(unsigned long p1, unsigned long p2, unsigned long p3, 467 - unsigned long p4, unsigned long p5, unsigned long p6, 468 - struct pt_regs *regs); 469 - int sys_pipe(int __user *fildes); 470 - int sys_ptrace(long request, long pid, long addr, long data); 471 - struct sigaction; 472 - long sys_rt_sigaction(int sig, const struct sigaction __user *act, 473 - struct sigaction __user *oact, size_t sigsetsize); 474 - 475 - /* 476 - * "Conditional" syscalls 477 - * 478 - * What we want is __attribute__((weak,alias("sys_ni_syscall"))), 479 - * but it doesn't work on all toolchains, so we just do it by hand 480 - */ 481 - #define cond_syscall(x) asm(".weak\t." #x "\n\t.set\t." #x ",.sys_ni_syscall") 482 - 483 - #endif /* __KERNEL__ */ 484 - 485 - #endif /* __ASSEMBLY__ */ 486 - 487 - #endif /* _ASM_PPC_UNISTD_H_ */