home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-v850 / unistd.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  15.0 KB  |  455 lines

  1. /*
  2.  * include/asm-v850/unistd.h -- System call numbers and invocation mechanism
  3.  *
  4.  *  Copyright (C) 2001,02,03,04  NEC Electronics Corporation
  5.  *  Copyright (C) 2001,02,03,04  Miles Bader <miles@gnu.org>
  6.  *
  7.  * This file is subject to the terms and conditions of the GNU General
  8.  * Public License.  See the file COPYING in the main directory of this
  9.  * archive for more details.
  10.  *
  11.  * Written by Miles Bader <miles@gnu.org>
  12.  */
  13.  
  14. #ifndef __V850_UNISTD_H__
  15. #define __V850_UNISTD_H__
  16.  
  17. #define __NR_restart_syscall      0
  18. #define __NR_exit          1
  19. #define __NR_fork          2
  20. #define __NR_read          3
  21. #define __NR_write          4
  22. #define __NR_open          5
  23. #define __NR_close          6
  24. #define __NR_waitpid          7
  25. #define __NR_creat          8
  26. #define __NR_link          9
  27. #define __NR_unlink         10
  28. #define __NR_execve         11
  29. #define __NR_chdir         12
  30. #define __NR_time         13
  31. #define __NR_mknod         14
  32. #define __NR_chmod         15
  33. #define __NR_chown         16
  34. #define __NR_break         17
  35. #define __NR_lseek         19
  36. #define __NR_getpid         20
  37. #define __NR_mount         21
  38. #define __NR_umount         22
  39. #define __NR_setuid         23
  40. #define __NR_getuid         24
  41. #define __NR_stime         25
  42. #define __NR_ptrace         26
  43. #define __NR_alarm         27
  44. #define __NR_pause         29
  45. #define __NR_utime         30
  46. #define __NR_stty         31
  47. #define __NR_gtty         32
  48. #define __NR_access         33
  49. #define __NR_nice         34
  50. #define __NR_ftime         35
  51. #define __NR_sync         36
  52. #define __NR_kill         37
  53. #define __NR_rename         38
  54. #define __NR_mkdir         39
  55. #define __NR_rmdir         40
  56. #define __NR_dup         41
  57. #define __NR_pipe         42
  58. #define __NR_times         43
  59. #define __NR_prof         44
  60. #define __NR_brk         45
  61. #define __NR_setgid         46
  62. #define __NR_getgid         47
  63. #define __NR_signal         48
  64. #define __NR_geteuid         49
  65. #define __NR_getegid         50
  66. #define __NR_acct         51
  67. #define __NR_umount2         52
  68. #define __NR_lock         53
  69. #define __NR_ioctl         54
  70. #define __NR_fcntl         55
  71. #define __NR_setpgid         57
  72. #define __NR_umask         60
  73. #define __NR_chroot         61
  74. #define __NR_ustat         62
  75. #define __NR_dup2         63
  76. #define __NR_getppid         64
  77. #define __NR_getpgrp         65
  78. #define __NR_setsid         66
  79. #define __NR_sigaction         67
  80. #define __NR_sgetmask         68
  81. #define __NR_ssetmask         69
  82. #define __NR_setreuid         70
  83. #define __NR_setregid         71
  84. #define __NR_sigsuspend         72
  85. #define __NR_sigpending         73
  86. #define __NR_sethostname     74
  87. #define __NR_setrlimit         75
  88. #define __NR_ugetrlimit          76
  89. #define __NR_getrusage         77
  90. #define __NR_gettimeofday     78
  91. #define __NR_settimeofday     79
  92. #define __NR_getgroups         80
  93. #define __NR_setgroups         81
  94. #define __NR_select         82
  95. #define __NR_symlink         83
  96. #define __NR_readlink         85
  97. #define __NR_uselib         86
  98. #define __NR_swapon         87
  99. #define __NR_reboot         88
  100. #define __NR_readdir         89
  101. #define __NR_mmap         90
  102. #define __NR_munmap         91
  103. #define __NR_truncate         92
  104. #define __NR_ftruncate         93
  105. #define __NR_fchmod         94
  106. #define __NR_fchown         95
  107. #define __NR_getpriority     96
  108. #define __NR_setpriority     97
  109. #define __NR_profil         98
  110. #define __NR_statfs         99
  111. #define __NR_fstatfs        100
  112. #define __NR_socketcall        102
  113. #define __NR_syslog        103
  114. #define __NR_setitimer        104
  115. #define __NR_getitimer        105
  116. #define __NR_stat        106
  117. #define __NR_lstat        107
  118. #define __NR_fstat        108
  119. #define __NR_vhangup        111
  120. #define __NR_wait4        114
  121. #define __NR_swapoff        115
  122. #define __NR_sysinfo        116
  123. #define __NR_ipc        117
  124. #define __NR_fsync        118
  125. #define __NR_sigreturn        119
  126. #define __NR_clone        120
  127. #define __NR_setdomainname    121
  128. #define __NR_uname        122
  129. #define __NR_cacheflush        123
  130. #define __NR_adjtimex        124
  131. #define __NR_mprotect        125
  132. #define __NR_sigprocmask    126
  133. #define __NR_create_module    127
  134. #define __NR_init_module    128
  135. #define __NR_delete_module    129
  136. #define __NR_get_kernel_syms    130
  137. #define __NR_quotactl        131
  138. #define __NR_getpgid        132
  139. #define __NR_fchdir        133
  140. #define __NR_bdflush        134
  141. #define __NR_sysfs        135
  142. #define __NR_personality    136
  143. #define __NR_afs_syscall    137 /* Syscall for Andrew File System */
  144. #define __NR_setfsuid        138
  145. #define __NR_setfsgid        139
  146. #define __NR__llseek        140
  147. #define __NR_getdents        141
  148. #define __NR_flock        143
  149. #define __NR_msync        144
  150. #define __NR_readv        145
  151. #define __NR_writev        146
  152. #define __NR_getsid        147
  153. #define __NR_fdatasync        148
  154. #define __NR__sysctl        149
  155. #define __NR_mlock        150
  156. #define __NR_munlock        151
  157. #define __NR_mlockall        152
  158. #define __NR_munlockall        153
  159. #define __NR_sched_setparam        154
  160. #define __NR_sched_getparam        155
  161. #define __NR_sched_setscheduler        156
  162. #define __NR_sched_getscheduler        157
  163. #define __NR_sched_yield        158
  164. #define __NR_sched_get_priority_max    159
  165. #define __NR_sched_get_priority_min    160
  166. #define __NR_sched_rr_get_interval    161
  167. #define __NR_nanosleep        162
  168. #define __NR_mremap        163
  169. #define __NR_setresuid        164
  170. #define __NR_getresuid        165
  171. #define __NR_query_module    167
  172. #define __NR_poll        168
  173. #define __NR_nfsservctl        169
  174. #define __NR_setresgid        170
  175. #define __NR_getresgid        171
  176. #define __NR_prctl        172
  177. #define __NR_rt_sigreturn    173
  178. #define __NR_rt_sigaction    174
  179. #define __NR_rt_sigprocmask    175
  180. #define __NR_rt_sigpending    176
  181. #define __NR_rt_sigtimedwait    177
  182. #define __NR_rt_sigqueueinfo    178
  183. #define __NR_rt_sigsuspend    179
  184. #define __NR_pread        180
  185. #define __NR_pwrite        181
  186. #define __NR_lchown        182
  187. #define __NR_getcwd        183
  188. #define __NR_capget        184
  189. #define __NR_capset        185
  190. #define __NR_sigaltstack    186
  191. #define __NR_sendfile        187
  192. #define __NR_getpmsg        188    /* some people actually want streams */
  193. #define __NR_putpmsg        189    /* some people actually want streams */
  194. #define __NR_vfork        190
  195. #define __NR_mmap2        192
  196. #define __NR_truncate64        193
  197. #define __NR_ftruncate64    194
  198. #define __NR_stat64        195
  199. #define __NR_lstat64        196
  200. #define __NR_fstat64        197
  201. #define __NR_fcntl64        198
  202. #define __NR_getdents64        199
  203. #define __NR_pivot_root        200
  204. #define __NR_gettid        201
  205. #define __NR_tkill        202
  206.  
  207.  
  208. /* Syscall protocol:
  209.    Syscall number in r12, args in r6-r9, r13-r14
  210.    Return value in r10
  211.    Trap 0 for `short' syscalls, where all the args can fit in function
  212.    call argument registers, and trap 1 when there are additional args in
  213.    r13-r14.  */
  214.  
  215. #define SYSCALL_NUM    "r12"
  216. #define SYSCALL_ARG0    "r6"
  217. #define SYSCALL_ARG1    "r7"
  218. #define SYSCALL_ARG2    "r8"
  219. #define SYSCALL_ARG3    "r9"
  220. #define SYSCALL_ARG4    "r13"
  221. #define SYSCALL_ARG5    "r14"
  222. #define SYSCALL_RET    "r10"
  223.  
  224. #define SYSCALL_SHORT_TRAP    "0"
  225. #define SYSCALL_LONG_TRAP    "1"
  226.  
  227. /* Registers clobbered by any syscall.  This _doesn't_ include the syscall
  228.    number (r12) or the `extended arg' registers (r13, r14), even though
  229.    they are actually clobbered too (this is because gcc's `asm' statement
  230.    doesn't allow a clobber to be used as an input or output).  */
  231. #define SYSCALL_CLOBBERS    "r1", "r5", "r11", "r15", "r16", \
  232.                 "r17", "r18", "r19"
  233.  
  234. /* Registers clobbered by a `short' syscall.  This includes all clobbers
  235.    except the syscall number (r12).  */
  236. #define SYSCALL_SHORT_CLOBBERS    SYSCALL_CLOBBERS, "r13", "r14"
  237.  
  238. #ifdef __KERNEL__
  239.  
  240. #include <asm/clinkage.h>
  241.  
  242. #define __syscall_return(type, res)                          \
  243.   do {                                          \
  244.       /* user-visible error numbers are in the range -1 - -124:          \
  245.          see <asm-v850/errno.h> */                          \
  246.       if (__builtin_expect ((unsigned long)(res) >= (unsigned long)(-125), 0)) { \
  247.           errno = -(res);                          \
  248.           res = -1;                              \
  249.       }                                      \
  250.       return (type) (res);                              \
  251.   } while (0)
  252.  
  253.  
  254. #define _syscall0(type, name)                              \
  255. type name (void)                                  \
  256. {                                          \
  257.   register unsigned long __syscall __asm__ (SYSCALL_NUM) = __NR_##name;          \
  258.   register unsigned long __ret __asm__ (SYSCALL_RET);                  \
  259.   __asm__ __volatile__ ("trap " SYSCALL_SHORT_TRAP                  \
  260.             : "=r" (__ret), "=r" (__syscall)               \
  261.             : "1" (__syscall)                      \
  262.             : SYSCALL_SHORT_CLOBBERS);                  \
  263.   __syscall_return (type, __ret);                          \
  264. }
  265.  
  266. #define _syscall1(type, name, atype, a)                          \
  267. type name (atype a)                                  \
  268. {                                          \
  269.   register atype __a __asm__ (SYSCALL_ARG0) = a;                  \
  270.   register unsigned long __syscall __asm__ (SYSCALL_NUM) = __NR_##name;          \
  271.   register unsigned long __ret __asm__ (SYSCALL_RET);                  \
  272.   __asm__ __volatile__ ("trap " SYSCALL_SHORT_TRAP                  \
  273.             : "=r" (__ret), "=r" (__syscall)              \
  274.             : "1" (__syscall), "r" (__a)                  \
  275.             : SYSCALL_SHORT_CLOBBERS);                  \
  276.   __syscall_return (type, __ret);                          \
  277. }
  278.  
  279. #define _syscall2(type, name, atype, a, btype, b)                  \
  280. type name (atype a, btype b)                              \
  281. {                                          \
  282.   register atype __a __asm__ (SYSCALL_ARG0) = a;                  \
  283.   register btype __b __asm__ (SYSCALL_ARG1) = b;                  \
  284.   register unsigned long __syscall __asm__ (SYSCALL_NUM) = __NR_##name;          \
  285.   register unsigned long __ret __asm__ (SYSCALL_RET);                  \
  286.   __asm__ __volatile__ ("trap " SYSCALL_SHORT_TRAP                  \
  287.             : "=r" (__ret), "=r" (__syscall)              \
  288.             : "1" (__syscall), "r" (__a), "r" (__b)              \
  289.             : SYSCALL_SHORT_CLOBBERS);                  \
  290.   __syscall_return (type, __ret);                          \
  291. }
  292.  
  293. #define _syscall3(type, name, atype, a, btype, b, ctype, c)              \
  294. type name (atype a, btype b, ctype c)                          \
  295. {                                          \
  296.   register atype __a __asm__ (SYSCALL_ARG0) = a;                  \
  297.   register btype __b __asm__ (SYSCALL_ARG1) = b;                  \
  298.   register ctype __c __asm__ (SYSCALL_ARG2) = c;                  \
  299.   register unsigned long __syscall __asm__ (SYSCALL_NUM) = __NR_##name;          \
  300.   register unsigned long __ret __asm__ (SYSCALL_RET);                  \
  301.   __asm__ __volatile__ ("trap " SYSCALL_SHORT_TRAP                  \
  302.             : "=r" (__ret), "=r" (__syscall)              \
  303.             : "1" (__syscall), "r" (__a), "r" (__b), "r" (__c)    \
  304.             : SYSCALL_SHORT_CLOBBERS);                  \
  305.   __syscall_return (type, __ret);                          \
  306. }
  307.  
  308. #define _syscall4(type, name, atype, a, btype, b, ctype, c, dtype, d)          \
  309. type name (atype a, btype b, ctype c, dtype d)                      \
  310. {                                          \
  311.   register atype __a __asm__ (SYSCALL_ARG0) = a;                  \
  312.   register btype __b __asm__ (SYSCALL_ARG1) = b;                  \
  313.   register ctype __c __asm__ (SYSCALL_ARG2) = c;                  \
  314.   register dtype __d __asm__ (SYSCALL_ARG3) = d;                  \
  315.   register unsigned long __syscall __asm__ (SYSCALL_NUM) = __NR_##name;          \
  316.   register unsigned long __ret __asm__ (SYSCALL_RET);                  \
  317.   __asm__ __volatile__ ("trap " SYSCALL_SHORT_TRAP                  \
  318.             : "=r" (__ret), "=r" (__syscall)              \
  319.             : "1" (__syscall),                      \
  320.             "r" (__a), "r" (__b), "r" (__c), "r" (__d)          \
  321.             : SYSCALL_SHORT_CLOBBERS);                  \
  322.   __syscall_return (type, __ret);                          \
  323. }
  324.  
  325. #define _syscall5(type, name, atype, a, btype, b, ctype, c, dtype, d, etype,e)\
  326. type name (atype a, btype b, ctype c, dtype d, etype e)                  \
  327. {                                          \
  328.   register atype __a __asm__ (SYSCALL_ARG0) = a;                  \
  329.   register btype __b __asm__ (SYSCALL_ARG1) = b;                  \
  330.   register ctype __c __asm__ (SYSCALL_ARG2) = c;                  \
  331.   register dtype __d __asm__ (SYSCALL_ARG3) = d;                  \
  332.   register etype __e __asm__ (SYSCALL_ARG4) = e;                  \
  333.   register unsigned long __syscall __asm__ (SYSCALL_NUM) = __NR_##name;          \
  334.   register unsigned long __ret __asm__ (SYSCALL_RET);                  \
  335.   __asm__ __volatile__ ("trap " SYSCALL_LONG_TRAP                  \
  336.             : "=r" (__ret), "=r" (__syscall), "=r" (__e)          \
  337.             : "1" (__syscall),                      \
  338.             "r" (__a), "r" (__b), "r" (__c), "r" (__d), "2" (__e) \
  339.             : SYSCALL_CLOBBERS);                      \
  340.   __syscall_return (type, __ret);                          \
  341. }
  342.  
  343. #define __SYSCALL6_TRAP(syscall, ret, a, b, c, d, e, f)                  \
  344.   __asm__ __volatile__ ("trap " SYSCALL_LONG_TRAP                  \
  345.             : "=r" (ret), "=r" (syscall),                  \
  346.              "=r" (e), "=r" (f)                      \
  347.             : "1" (syscall),                      \
  348.             "r" (a), "r" (b), "r" (c), "r" (d),              \
  349.             "2" (e), "3" (f)                      \
  350.             : SYSCALL_CLOBBERS);
  351.  
  352. #define _syscall6(type, name, atype, a, btype, b, ctype, c, dtype, d, etype, e, ftype, f) \
  353. type name (atype a, btype b, ctype c, dtype d, etype e, ftype f)          \
  354. {                                          \
  355.   register atype __a __asm__ (SYSCALL_ARG0) = a;                  \
  356.   register btype __b __asm__ (SYSCALL_ARG1) = b;                  \
  357.   register ctype __c __asm__ (SYSCALL_ARG2) = c;                  \
  358.   register dtype __d __asm__ (SYSCALL_ARG3) = d;                  \
  359.   register etype __e __asm__ (SYSCALL_ARG4) = e;                  \
  360.   register etype __f __asm__ (SYSCALL_ARG5) = f;                  \
  361.   register unsigned long __syscall __asm__ (SYSCALL_NUM) = __NR_##name;          \
  362.   register unsigned long __ret __asm__ (SYSCALL_RET);                  \
  363.   __SYSCALL6_TRAP(__syscall, __ret, __a, __b, __c, __d, __e, __f);          \
  364.   __syscall_return (type, __ret);                          \
  365. }
  366.         
  367.  
  368. #define __ARCH_WANT_IPC_PARSE_VERSION
  369. #define __ARCH_WANT_OLD_READDIR
  370. #define __ARCH_WANT_STAT64
  371. #define __ARCH_WANT_SYS_ALARM
  372. #define __ARCH_WANT_SYS_GETHOSTNAME
  373. #define __ARCH_WANT_SYS_PAUSE
  374. #define __ARCH_WANT_SYS_SGETMASK
  375. #define __ARCH_WANT_SYS_SIGNAL
  376. #define __ARCH_WANT_SYS_TIME
  377. #define __ARCH_WANT_SYS_UTIME
  378. #define __ARCH_WANT_SYS_WAITPID
  379. #define __ARCH_WANT_SYS_SOCKETCALL
  380. #define __ARCH_WANT_SYS_FADVISE64
  381. #define __ARCH_WANT_SYS_GETPGRP
  382. #define __ARCH_WANT_SYS_LLSEEK
  383. #define __ARCH_WANT_SYS_NICE
  384. #define __ARCH_WANT_SYS_OLDUMOUNT
  385. #define __ARCH_WANT_SYS_SIGPENDING
  386. #define __ARCH_WANT_SYS_SIGPROCMASK
  387. #define __ARCH_WANT_SYS_RT_SIGACTION
  388.  
  389. #ifdef __KERNEL_SYSCALLS__
  390.  
  391. #include <linux/compiler.h>
  392. #include <linux/types.h>
  393.  
  394. /*
  395.  * we need this inline - forking from kernel space will result
  396.  * in NO COPY ON WRITE (!!!), until an execve is executed. This
  397.  * is no problem, but for the stack. This is handled by not letting
  398.  * main() use the stack at all after fork(). Thus, no function
  399.  * calls - which means inline code for fork too, as otherwise we
  400.  * would use the stack upon exit from 'fork()'.
  401.  *
  402.  * Actually only pause and fork are needed inline, so that there
  403.  * won't be any messing with the stack from main(), but we define
  404.  * some others too.
  405.  */
  406. #define __NR__exit __NR_exit
  407. extern inline _syscall0(pid_t,setsid)
  408. extern inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
  409. extern inline _syscall3(int,read,int,fd,char *,buf,off_t,count)
  410. extern inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count)
  411. extern inline _syscall1(int,dup,int,fd)
  412. extern inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
  413. extern inline _syscall3(int,open,const char *,file,int,flag,int,mode)
  414. extern inline _syscall1(int,close,int,fd)
  415. extern inline _syscall1(int,_exit,int,exitcode)
  416. extern inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
  417.  
  418. extern inline pid_t wait(int * wait_stat)
  419. {
  420.     return waitpid (-1, wait_stat, 0);
  421. }
  422.  
  423. unsigned long sys_mmap(unsigned long addr, size_t len,
  424.             unsigned long prot, unsigned long flags,
  425.             unsigned long fd, off_t offset);
  426. unsigned long sys_mmap2(unsigned long addr, size_t len,
  427.             unsigned long prot, unsigned long flags,
  428.             unsigned long fd, unsigned long pgoff);
  429. struct pt_regs;
  430. int sys_execve (char *name, char **argv, char **envp, struct pt_regs *regs);
  431. int sys_pipe (int *fildes);
  432. struct sigaction;
  433. asmlinkage long sys_rt_sigaction(int sig,
  434.                 const struct sigaction __user *act,
  435.                 struct sigaction __user *oact,
  436.                 size_t sigsetsize);
  437.  
  438. #endif /* __KERNEL_SYSCALLS__ */
  439.  
  440. /*
  441.  * "Conditional" syscalls
  442.  */
  443. #define cond_syscall(name)                              \
  444.   asm (".weak\t" C_SYMBOL_STRING(name) ";"                      \
  445.        ".set\t" C_SYMBOL_STRING(name) "," C_SYMBOL_STRING(sys_ni_syscall))
  446. #if 0
  447. /* This doesn't work if there's a function prototype for NAME visible,
  448.    because the argument types probably won't match.  */
  449. #define cond_syscall(name)  \
  450.   void name (void) __attribute__ ((weak, alias ("sys_ni_syscall")));
  451. #endif
  452.  
  453. #endif /* __KERNEL__ */
  454. #endif /* __V850_UNISTD_H__ */
  455.