import of ftp.dlink.com/GPL/DSMG-600_reB/ppclinux.tar.gz
[linux-2.4.21-pre4.git] / include / asm-cris / unistd.h
1 #ifndef _ASM_CRIS_UNISTD_H_
2 #define _ASM_CRIS_UNISTD_H_
3
4 /*
5  * This file contains the system call numbers, and stub macros for libc.
6  */
7
8 #define __NR_setup                0     /* used only by init, to get system going */
9 #define __NR_exit                 1
10 #define __NR_fork                 2
11 #define __NR_read                 3
12 #define __NR_write                4
13 #define __NR_open                 5
14 #define __NR_close                6
15 #define __NR_waitpid              7
16 #define __NR_creat                8
17 #define __NR_link                 9
18 #define __NR_unlink              10
19 #define __NR_execve              11
20 #define __NR_chdir               12
21 #define __NR_time                13
22 #define __NR_mknod               14
23 #define __NR_chmod               15
24 #define __NR_lchown              16
25 #define __NR_break               17
26 #define __NR_oldstat             18
27 #define __NR_lseek               19
28 #define __NR_getpid              20
29 #define __NR_mount               21
30 #define __NR_umount              22
31 #define __NR_setuid              23
32 #define __NR_getuid              24
33 #define __NR_stime               25
34 #define __NR_ptrace              26
35 #define __NR_alarm               27
36 #define __NR_oldfstat            28
37 #define __NR_pause               29
38 #define __NR_utime               30
39 #define __NR_stty                31
40 #define __NR_gtty                32
41 #define __NR_access              33
42 #define __NR_nice                34
43 #define __NR_ftime               35
44 #define __NR_sync                36
45 #define __NR_kill                37
46 #define __NR_rename              38
47 #define __NR_mkdir               39
48 #define __NR_rmdir               40
49 #define __NR_dup                 41
50 #define __NR_pipe                42
51 #define __NR_times               43
52 #define __NR_prof                44
53 #define __NR_brk                 45
54 #define __NR_setgid              46
55 #define __NR_getgid              47
56 #define __NR_signal              48
57 #define __NR_geteuid             49
58 #define __NR_getegid             50
59 #define __NR_acct                51
60 #define __NR_umount2             52
61 #define __NR_lock                53
62 #define __NR_ioctl               54
63 #define __NR_fcntl               55
64 #define __NR_mpx                 56
65 #define __NR_setpgid             57
66 #define __NR_ulimit              58
67 #define __NR_oldolduname         59
68 #define __NR_umask               60
69 #define __NR_chroot              61
70 #define __NR_ustat               62
71 #define __NR_dup2                63
72 #define __NR_getppid             64
73 #define __NR_getpgrp             65
74 #define __NR_setsid              66
75 #define __NR_sigaction           67
76 #define __NR_sgetmask            68
77 #define __NR_ssetmask            69
78 #define __NR_setreuid            70
79 #define __NR_setregid            71
80 #define __NR_sigsuspend          72
81 #define __NR_sigpending          73
82 #define __NR_sethostname         74
83 #define __NR_setrlimit           75
84 #define __NR_getrlimit           76
85 #define __NR_getrusage           77
86 #define __NR_gettimeofday        78
87 #define __NR_settimeofday        79
88 #define __NR_getgroups           80
89 #define __NR_setgroups           81
90 #define __NR_select              82
91 #define __NR_symlink             83
92 #define __NR_oldlstat            84
93 #define __NR_readlink            85
94 #define __NR_uselib              86
95 #define __NR_swapon              87
96 #define __NR_reboot              88
97 #define __NR_readdir             89
98 #define __NR_mmap                90
99 #define __NR_munmap              91
100 #define __NR_truncate            92
101 #define __NR_ftruncate           93
102 #define __NR_fchmod              94
103 #define __NR_fchown              95
104 #define __NR_getpriority         96
105 #define __NR_setpriority         97
106 #define __NR_profil              98
107 #define __NR_statfs              99
108 #define __NR_fstatfs            100
109 #define __NR_ioperm             101
110 #define __NR_socketcall         102
111 #define __NR_syslog             103
112 #define __NR_setitimer          104
113 #define __NR_getitimer          105
114 #define __NR_stat               106
115 #define __NR_lstat              107
116 #define __NR_fstat              108
117 #define __NR_olduname           109
118 #define __NR_iopl               110
119 #define __NR_vhangup            111
120 #define __NR_idle               112
121 #define __NR_vm86               113
122 #define __NR_wait4              114
123 #define __NR_swapoff            115
124 #define __NR_sysinfo            116
125 #define __NR_ipc                117
126 #define __NR_fsync              118
127 #define __NR_sigreturn          119
128 #define __NR_clone              120
129 #define __NR_setdomainname      121
130 #define __NR_uname              122
131 #define __NR_modify_ldt         123
132 #define __NR_adjtimex           124
133 #define __NR_mprotect           125
134 #define __NR_sigprocmask        126
135 #define __NR_create_module      127
136 #define __NR_init_module        128
137 #define __NR_delete_module      129
138 #define __NR_get_kernel_syms    130
139 #define __NR_quotactl           131
140 #define __NR_getpgid            132
141 #define __NR_fchdir             133
142 #define __NR_bdflush            134
143 #define __NR_sysfs              135
144 #define __NR_personality        136
145 #define __NR_afs_syscall        137 /* Syscall for Andrew File System */
146 #define __NR_setfsuid           138
147 #define __NR_setfsgid           139
148 #define __NR__llseek            140
149 #define __NR_getdents           141
150 #define __NR__newselect         142
151 #define __NR_flock              143
152 #define __NR_msync              144
153 #define __NR_readv              145
154 #define __NR_writev             146
155 #define __NR_getsid             147
156 #define __NR_fdatasync          148
157 #define __NR__sysctl            149
158 #define __NR_mlock              150
159 #define __NR_munlock            151
160 #define __NR_mlockall           152
161 #define __NR_munlockall         153
162 #define __NR_sched_setparam             154
163 #define __NR_sched_getparam             155
164 #define __NR_sched_setscheduler         156
165 #define __NR_sched_getscheduler         157
166 #define __NR_sched_yield                158
167 #define __NR_sched_get_priority_max     159
168 #define __NR_sched_get_priority_min     160
169 #define __NR_sched_rr_get_interval      161
170 #define __NR_nanosleep          162
171 #define __NR_mremap             163
172 #define __NR_setresuid          164
173 #define __NR_getresuid          165
174
175 #define __NR_query_module       167
176 #define __NR_poll               168
177 #define __NR_nfsservctl         169
178 #define __NR_setresgid          170
179 #define __NR_getresgid          171
180 #define __NR_prctl              172
181 #define __NR_rt_sigreturn       173
182 #define __NR_rt_sigaction       174
183 #define __NR_rt_sigprocmask     175
184 #define __NR_rt_sigpending      176
185 #define __NR_rt_sigtimedwait    177
186 #define __NR_rt_sigqueueinfo    178
187 #define __NR_rt_sigsuspend      179
188 #define __NR_pread              180
189 #define __NR_pwrite             181
190 #define __NR_chown              182
191 #define __NR_getcwd             183
192 #define __NR_capget             184
193 #define __NR_capset             185
194 #define __NR_sigaltstack        186
195 #define __NR_sendfile           187
196 #define __NR_getpmsg            188     /* some people actually want streams */
197 #define __NR_putpmsg            189     /* some people actually want streams */
198 #define __NR_vfork              190
199 #define __NR_ugetrlimit         191     /* SuS compliant getrlimit */
200 #define __NR_mmap2              192
201 #define __NR_truncate64         193
202 #define __NR_ftruncate64        194
203 #define __NR_stat64             195
204 #define __NR_lstat64            196
205 #define __NR_fstat64            197
206 #define __NR_lchown32           198
207 #define __NR_getuid32           199
208 #define __NR_getgid32           200
209 #define __NR_geteuid32          201
210 #define __NR_getegid32          202
211 #define __NR_setreuid32         203
212 #define __NR_setregid32         204
213 #define __NR_getgroups32        205
214 #define __NR_setgroups32        206
215 #define __NR_fchown32           207
216 #define __NR_setresuid32        208
217 #define __NR_getresuid32        209
218 #define __NR_setresgid32        210
219 #define __NR_getresgid32        211
220 #define __NR_chown32            212
221 #define __NR_setuid32           213
222 #define __NR_setgid32           214
223 #define __NR_setfsuid32         215
224 #define __NR_setfsgid32         216
225 #define __NR_pivot_root         217
226 #define __NR_mincore            218
227 #define __NR_madvise            219
228 #define __NR_getdents64         220
229 #define __NR_fcntl64            221
230 #define __NR_security           223     /* syscall for security modules */
231 #define __NR_gettid             224
232 #define __NR_readahead          225
233 #define __NR_setxattr           226
234 #define __NR_lsetxattr          227
235 #define __NR_fsetxattr          228
236 #define __NR_getxattr           229
237 #define __NR_lgetxattr          230
238 #define __NR_fgetxattr          231
239 #define __NR_listxattr          232
240 #define __NR_llistxattr         233
241 #define __NR_flistxattr         234
242 #define __NR_removexattr        235
243 #define __NR_lremovexattr       236
244 #define __NR_fremovexattr       237
245 #define __NR_tkill              238
246 #define __NR_sendfile64         239
247 #define __NR_futex              240
248 #define __NR_sched_setaffinity  241
249 #define __NR_sched_getaffinity  242
250 #define __NR_set_thread_area    243
251 #define __NR_get_thread_area    244
252 #define __NR_io_setup           245
253 #define __NR_io_destroy         246
254 #define __NR_io_getevents       247
255 #define __NR_io_submit          248
256 #define __NR_io_cancel          249
257 #define __NR_alloc_hugepages    250
258 #define __NR_free_hugepages     251
259 #define __NR_exit_group         252
260
261 /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
262 /*
263  * Don't remove the .ifnc tests; they are an insurance against
264  * any hard-to-spot gcc register allocation bugs.
265  */
266 #define _syscall0(type,name) \
267 type name(void) \
268 { \
269   register long __a __asm__ ("r10"); \
270   register long __n_ __asm__ ("r9") = (__NR_##name); \
271   __asm__ __volatile__ (".ifnc %0%1,$r10$r9\n\t" \
272                         ".err\n\t" \
273                         ".endif\n\t" \
274                         "break 13" \
275                         : "=r" (__a) \
276                         : "r" (__n_)); \
277   if (__a >= 0) \
278      return (type) __a; \
279   errno = -__a; \
280   return (type) -1; \
281 }
282
283 #define _syscall1(type,name,type1,arg1) \
284 type name(type1 arg1) \
285 { \
286   register long __a __asm__ ("r10") = (long) arg1; \
287   register long __n_ __asm__ ("r9") = (__NR_##name); \
288   __asm__ __volatile__ (".ifnc %0%1,$r10$r9\n\t" \
289                         ".err\n\t" \
290                         ".endif\n\t" \
291                         "break 13" \
292                         : "=r" (__a) \
293                         : "r" (__n_), "0" (__a)); \
294   if (__a >= 0) \
295      return (type) __a; \
296   errno = -__a; \
297   return (type) -1; \
298 }
299
300 #define _syscall2(type,name,type1,arg1,type2,arg2) \
301 type name(type1 arg1,type2 arg2) \
302 { \
303   register long __a __asm__ ("r10") = (long) arg1; \
304   register long __b __asm__ ("r11") = (long) arg2; \
305   register long __n_ __asm__ ("r9") = (__NR_##name); \
306   __asm__ __volatile__ (".ifnc %0%1%3,$r10$r9$r11\n\t" \
307                         ".err\n\t" \
308                         ".endif\n\t" \
309                         "break 13" \
310                         : "=r" (__a) \
311                         : "r" (__n_), "0" (__a), "r" (__b)); \
312   if (__a >= 0) \
313      return (type) __a; \
314   errno = -__a; \
315   return (type) -1; \
316 }
317
318 #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
319 type name(type1 arg1,type2 arg2,type3 arg3) \
320 { \
321   register long __a __asm__ ("r10") = (long) arg1; \
322   register long __b __asm__ ("r11") = (long) arg2; \
323   register long __c __asm__ ("r12") = (long) arg3; \
324   register long __n_ __asm__ ("r9") = (__NR_##name); \
325   __asm__ __volatile__ (".ifnc %0%1%3%4,$r10$r9$r11$r12\n\t" \
326                         ".err\n\t" \
327                         ".endif\n\t" \
328                         "break 13" \
329                         : "=r" (__a) \
330                         : "r" (__n_), "0" (__a), "r" (__b), "r" (__c)); \
331   if (__a >= 0) \
332      return (type) __a; \
333   errno = -__a; \
334   return (type) -1; \
335 }
336
337 #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
338 type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
339 { \
340   register long __a __asm__ ("r10") = (long) arg1; \
341   register long __b __asm__ ("r11") = (long) arg2; \
342   register long __c __asm__ ("r12") = (long) arg3; \
343   register long __d __asm__ ("r13") = (long) arg4; \
344   register long __n_ __asm__ ("r9") = (__NR_##name); \
345   __asm__ __volatile__ (".ifnc %0%1%3%4%5,$r10$r9$r11$r12$r13\n\t" \
346                         ".err\n\t" \
347                         ".endif\n\t" \
348                         "break 13" \
349                         : "=r" (__a) \
350                         : "r" (__n_), "0" (__a), "r" (__b), \
351                           "r" (__c), "r" (__d)); \
352   if (__a >= 0) \
353      return (type) __a; \
354   errno = -__a; \
355   return (type) -1; \
356
357
358 #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
359           type5,arg5) \
360 type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
361 { \
362   register long __a __asm__ ("r10") = (long) arg1; \
363   register long __b __asm__ ("r11") = (long) arg2; \
364   register long __c __asm__ ("r12") = (long) arg3; \
365   register long __d __asm__ ("r13") = (long) arg4; \
366   register long __n_ __asm__ ("r9") = (__NR_##name); \
367   __asm__ __volatile__ (".ifnc %0%1%3%4%5,$r10$r9$r11$r12$r13\n\t" \
368                         ".err\n\t" \
369                         ".endif\n\t" \
370                         "move %6,$mof\n\t" \
371                         "break 13" \
372                         : "=r" (__a) \
373                         : "r" (__n_), "0" (__a), "r" (__b), \
374                           "r" (__c), "r" (__d), "g" (arg5)); \
375   if (__a >= 0) \
376      return (type) __a; \
377   errno = -__a; \
378   return (type) -1; \
379 }
380
381 #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
382           type5,arg5,type6,arg6) \
383 type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \
384 { \
385   register long __a __asm__ ("r10") = (long) arg1; \
386   register long __b __asm__ ("r11") = (long) arg2; \
387   register long __c __asm__ ("r12") = (long) arg3; \
388   register long __d __asm__ ("r13") = (long) arg4; \
389   register long __n_ __asm__ ("r9") = (__NR_##name); \
390   __asm__ __volatile__ (".ifnc %0%1%3%4%5,$r10$r9$r11$r12$r13\n\t" \
391                         ".err\n\t" \
392                         ".endif\n\t" \
393                         "move %6,$mof\n\tmove %7,$srp\n\t" \
394                         "break 13" \
395                         : "=r" (__a) \
396                         : "r" (__n_), "0" (__a), "r" (__b), \
397                           "r" (__c), "r" (__d), "g" (arg5), "g" (arg6)\
398                         : "srp"); \
399   if (__a >= 0) \
400      return (type) __a; \
401   errno = -__a; \
402   return (type) -1; \
403 }
404
405 #ifdef __KERNEL_SYSCALLS__
406
407 /*
408  * we need this inline - forking from kernel space will result
409  * in NO COPY ON WRITE (!!!), until an execve is executed. This
410  * is no problem, but for the stack. This is handled by not letting
411  * main() use the stack at all after fork(). Thus, no function
412  * calls - which means inline code for fork too, as otherwise we
413  * would use the stack upon exit from 'fork()'.
414  *
415  * Actually only pause and fork are needed inline, so that there
416  * won't be any messing with the stack from main(), but we define
417  * some others too.
418  */
419 #define __NR__exit __NR_exit
420 extern inline _syscall0(int,idle)
421 extern inline _syscall0(int,fork)
422 extern inline _syscall2(int,clone,unsigned long,flags,char *,esp)
423 extern inline _syscall0(int,pause)
424 extern inline _syscall0(int,setup)
425 extern inline _syscall0(int,sync)
426 extern inline _syscall0(pid_t,setsid)
427 extern inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
428 extern inline _syscall1(int,dup,int,fd)
429 extern inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
430 extern inline _syscall3(int,open,const char *,file,int,flag,int,mode)
431 extern inline _syscall1(int,close,int,fd)
432
433 /*
434  * Since we define it "external", it collides with the built-in
435  * definition, which has the "noreturn" attribute and will cause
436  * complaints.  We don't want to use -fno-builtin, so just use a
437  * different name when in the kernel.
438  */
439 #ifdef __KERNEL__
440 #define _exit kernel_syscall_exit
441 #endif
442 extern inline _syscall1(int,_exit,int,exitcode)
443 extern inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
444 extern inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count)
445
446   /* the following are just while developing the elinux port! */
447
448 extern inline _syscall3(int,read,int,fd,char *,buf,off_t,count)
449 extern inline _syscall2(int,socketcall,int,call,unsigned long *,args)
450 extern inline _syscall3(int,ioctl,unsigned int,fd,unsigned int,cmd,unsigned long,arg)
451 extern inline _syscall5(int,mount,const char *,a,const char *,b,const char *,c,unsigned long,rwflag,const void *,data)
452
453 extern inline pid_t wait(int * wait_stat)
454 {
455         return waitpid(-1,wait_stat,0);
456 }
457
458 #endif
459
460 #endif /* _ASM_CRIS_UNISTD_H_ */