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