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-sh64 / unistd.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  18.3 KB  |  567 lines

  1. #ifndef __ASM_SH64_UNISTD_H
  2. #define __ASM_SH64_UNISTD_H
  3.  
  4. /*
  5.  * This file is subject to the terms and conditions of the GNU General Public
  6.  * License.  See the file "COPYING" in the main directory of this archive
  7.  * for more details.
  8.  *
  9.  * include/asm-sh64/unistd.h
  10.  *
  11.  * Copyright (C) 2000, 2001  Paolo Alberelli
  12.  * Copyright (C) 2003  Paul Mundt
  13.  * Copyright (C) 2004  Sean McGoogan
  14.  *
  15.  * This file contains the system call numbers.
  16.  *
  17.  */
  18.  
  19. #define __NR_setup          0    /* used only by init, to get system going */
  20. #define __NR_exit          1
  21. #define __NR_fork          2
  22. #define __NR_read          3
  23. #define __NR_write          4
  24. #define __NR_open          5
  25. #define __NR_close          6
  26. #define __NR_waitpid          7
  27. #define __NR_creat          8
  28. #define __NR_link          9
  29. #define __NR_unlink         10
  30. #define __NR_execve         11
  31. #define __NR_chdir         12
  32. #define __NR_time         13
  33. #define __NR_mknod         14
  34. #define __NR_chmod         15
  35. #define __NR_lchown         16
  36. #define __NR_break         17
  37. #define __NR_oldstat         18
  38. #define __NR_lseek         19
  39. #define __NR_getpid         20
  40. #define __NR_mount         21
  41. #define __NR_umount         22
  42. #define __NR_setuid         23
  43. #define __NR_getuid         24
  44. #define __NR_stime         25
  45. #define __NR_ptrace         26
  46. #define __NR_alarm         27
  47. #define __NR_oldfstat         28
  48. #define __NR_pause         29
  49. #define __NR_utime         30
  50. #define __NR_stty         31
  51. #define __NR_gtty         32
  52. #define __NR_access         33
  53. #define __NR_nice         34
  54. #define __NR_ftime         35
  55. #define __NR_sync         36
  56. #define __NR_kill         37
  57. #define __NR_rename         38
  58. #define __NR_mkdir         39
  59. #define __NR_rmdir         40
  60. #define __NR_dup         41
  61. #define __NR_pipe         42
  62. #define __NR_times         43
  63. #define __NR_prof         44
  64. #define __NR_brk         45
  65. #define __NR_setgid         46
  66. #define __NR_getgid         47
  67. #define __NR_signal         48
  68. #define __NR_geteuid         49
  69. #define __NR_getegid         50
  70. #define __NR_acct         51
  71. #define __NR_umount2         52
  72. #define __NR_lock         53
  73. #define __NR_ioctl         54
  74. #define __NR_fcntl         55
  75. #define __NR_mpx         56
  76. #define __NR_setpgid         57
  77. #define __NR_ulimit         58
  78. #define __NR_oldolduname     59
  79. #define __NR_umask         60
  80. #define __NR_chroot         61
  81. #define __NR_ustat         62
  82. #define __NR_dup2         63
  83. #define __NR_getppid         64
  84. #define __NR_getpgrp         65
  85. #define __NR_setsid         66
  86. #define __NR_sigaction         67
  87. #define __NR_sgetmask         68
  88. #define __NR_ssetmask         69
  89. #define __NR_setreuid         70
  90. #define __NR_setregid         71
  91. #define __NR_sigsuspend         72
  92. #define __NR_sigpending         73
  93. #define __NR_sethostname     74
  94. #define __NR_setrlimit         75
  95. #define __NR_getrlimit          76    /* Back compatible 2Gig limited rlimit */
  96. #define __NR_getrusage         77
  97. #define __NR_gettimeofday     78
  98. #define __NR_settimeofday     79
  99. #define __NR_getgroups         80
  100. #define __NR_setgroups         81
  101. #define __NR_select         82
  102. #define __NR_symlink         83
  103. #define __NR_oldlstat         84
  104. #define __NR_readlink         85
  105. #define __NR_uselib         86
  106. #define __NR_swapon         87
  107. #define __NR_reboot         88
  108. #define __NR_readdir         89
  109. #define __NR_mmap         90
  110. #define __NR_munmap         91
  111. #define __NR_truncate         92
  112. #define __NR_ftruncate         93
  113. #define __NR_fchmod         94
  114. #define __NR_fchown         95
  115. #define __NR_getpriority     96
  116. #define __NR_setpriority     97
  117. #define __NR_profil         98
  118. #define __NR_statfs         99
  119. #define __NR_fstatfs        100
  120. #define __NR_ioperm        101
  121. #define __NR_socketcall        102    /* old implementation of socket systemcall */
  122. #define __NR_syslog        103
  123. #define __NR_setitimer        104
  124. #define __NR_getitimer        105
  125. #define __NR_stat        106
  126. #define __NR_lstat        107
  127. #define __NR_fstat        108
  128. #define __NR_olduname        109
  129. #define __NR_iopl        110
  130. #define __NR_vhangup        111
  131. #define __NR_idle        112
  132. #define __NR_vm86old        113
  133. #define __NR_wait4        114
  134. #define __NR_swapoff        115
  135. #define __NR_sysinfo        116
  136. #define __NR_ipc        117
  137. #define __NR_fsync        118
  138. #define __NR_sigreturn        119
  139. #define __NR_clone        120
  140. #define __NR_setdomainname    121
  141. #define __NR_uname        122
  142. #define __NR_modify_ldt        123
  143. #define __NR_adjtimex        124
  144. #define __NR_mprotect        125
  145. #define __NR_sigprocmask    126
  146. #define __NR_create_module    127
  147. #define __NR_init_module    128
  148. #define __NR_delete_module    129
  149. #define __NR_get_kernel_syms    130
  150. #define __NR_quotactl        131
  151. #define __NR_getpgid        132
  152. #define __NR_fchdir        133
  153. #define __NR_bdflush        134
  154. #define __NR_sysfs        135
  155. #define __NR_personality    136
  156. #define __NR_afs_syscall    137 /* Syscall for Andrew File System */
  157. #define __NR_setfsuid        138
  158. #define __NR_setfsgid        139
  159. #define __NR__llseek        140
  160. #define __NR_getdents        141
  161. #define __NR__newselect        142
  162. #define __NR_flock        143
  163. #define __NR_msync        144
  164. #define __NR_readv        145
  165. #define __NR_writev        146
  166. #define __NR_getsid        147
  167. #define __NR_fdatasync        148
  168. #define __NR__sysctl        149
  169. #define __NR_mlock        150
  170. #define __NR_munlock        151
  171. #define __NR_mlockall        152
  172. #define __NR_munlockall        153
  173. #define __NR_sched_setparam        154
  174. #define __NR_sched_getparam        155
  175. #define __NR_sched_setscheduler        156
  176. #define __NR_sched_getscheduler        157
  177. #define __NR_sched_yield        158
  178. #define __NR_sched_get_priority_max    159
  179. #define __NR_sched_get_priority_min    160
  180. #define __NR_sched_rr_get_interval    161
  181. #define __NR_nanosleep        162
  182. #define __NR_mremap        163
  183. #define __NR_setresuid        164
  184. #define __NR_getresuid        165
  185. #define __NR_vm86        166
  186. #define __NR_query_module    167
  187. #define __NR_poll        168
  188. #define __NR_nfsservctl        169
  189. #define __NR_setresgid        170
  190. #define __NR_getresgid        171
  191. #define __NR_prctl              172
  192. #define __NR_rt_sigreturn    173
  193. #define __NR_rt_sigaction    174
  194. #define __NR_rt_sigprocmask    175
  195. #define __NR_rt_sigpending    176
  196. #define __NR_rt_sigtimedwait    177
  197. #define __NR_rt_sigqueueinfo    178
  198. #define __NR_rt_sigsuspend    179
  199. #define __NR_pread        180
  200. #define __NR_pwrite        181
  201. #define __NR_chown        182
  202. #define __NR_getcwd        183
  203. #define __NR_capget        184
  204. #define __NR_capset        185
  205. #define __NR_sigaltstack    186
  206. #define __NR_sendfile        187
  207. #define __NR_streams1        188    /* some people actually want it */
  208. #define __NR_streams2        189    /* some people actually want it */
  209. #define __NR_vfork        190
  210. #define __NR_ugetrlimit        191    /* SuS compliant getrlimit */
  211. #define __NR_mmap2        192
  212. #define __NR_truncate64        193
  213. #define __NR_ftruncate64    194
  214. #define __NR_stat64        195
  215. #define __NR_lstat64        196
  216. #define __NR_fstat64        197
  217. #define __NR_lchown32        198
  218. #define __NR_getuid32        199
  219. #define __NR_getgid32        200
  220. #define __NR_geteuid32        201
  221. #define __NR_getegid32        202
  222. #define __NR_setreuid32        203
  223. #define __NR_setregid32        204
  224. #define __NR_getgroups32    205
  225. #define __NR_setgroups32    206
  226. #define __NR_fchown32        207
  227. #define __NR_setresuid32    208
  228. #define __NR_getresuid32    209
  229. #define __NR_setresgid32    210
  230. #define __NR_getresgid32    211
  231. #define __NR_chown32        212
  232. #define __NR_setuid32        213
  233. #define __NR_setgid32        214
  234. #define __NR_setfsuid32        215
  235. #define __NR_setfsgid32        216
  236. #define __NR_pivot_root        217
  237. #define __NR_mincore        218
  238. #define __NR_madvise        219
  239.  
  240. /* Non-multiplexed socket family */
  241. #define __NR_socket        220
  242. #define __NR_bind        221
  243. #define __NR_connect        222
  244. #define __NR_listen        223
  245. #define __NR_accept        224
  246. #define __NR_getsockname    225
  247. #define __NR_getpeername    226
  248. #define __NR_socketpair        227
  249. #define __NR_send        228
  250. #define __NR_sendto        229
  251. #define __NR_recv        230
  252. #define __NR_recvfrom        231
  253. #define __NR_shutdown        232
  254. #define __NR_setsockopt        233
  255. #define __NR_getsockopt        234
  256. #define __NR_sendmsg        235
  257. #define __NR_recvmsg        236
  258.  
  259. /* Non-multiplexed IPC family */
  260. #define __NR_semop        237
  261. #define __NR_semget        238
  262. #define __NR_semctl        239
  263. #define __NR_msgsnd        240
  264. #define __NR_msgrcv        241
  265. #define __NR_msgget        242
  266. #define __NR_msgctl        243
  267. #if 0
  268. #define __NR_shmatcall        244
  269. #endif
  270. #define __NR_shmdt        245
  271. #define __NR_shmget        246
  272. #define __NR_shmctl        247
  273.  
  274. #define __NR_getdents64        248
  275. #define __NR_fcntl64        249
  276. /* 223 is unused */
  277. #define __NR_gettid        252
  278. #define __NR_readahead        253
  279. #define __NR_setxattr        254
  280. #define __NR_lsetxattr        255
  281. #define __NR_fsetxattr        256
  282. #define __NR_getxattr        257
  283. #define __NR_lgetxattr        258
  284. #define __NR_fgetxattr        269
  285. #define __NR_listxattr        260
  286. #define __NR_llistxattr        261
  287. #define __NR_flistxattr        262
  288. #define __NR_removexattr    263
  289. #define __NR_lremovexattr    264
  290. #define __NR_fremovexattr    265
  291. #define __NR_tkill        266
  292. #define __NR_sendfile64        267
  293. #define __NR_futex        268
  294. #define __NR_sched_setaffinity    269
  295. #define __NR_sched_getaffinity    270
  296. #define __NR_set_thread_area    271
  297. #define __NR_get_thread_area    272
  298. #define __NR_io_setup        273
  299. #define __NR_io_destroy        274
  300. #define __NR_io_getevents    275
  301. #define __NR_io_submit        276
  302. #define __NR_io_cancel        277
  303. #define __NR_fadvise64        278
  304. #define __NR_exit_group        280
  305.  
  306. #define __NR_lookup_dcookie    281
  307. #define __NR_epoll_create    282
  308. #define __NR_epoll_ctl        283
  309. #define __NR_epoll_wait        284
  310. #define __NR_remap_file_pages    285
  311. #define __NR_set_tid_address    286
  312. #define __NR_timer_create    287
  313. #define __NR_timer_settime    (__NR_timer_create+1)
  314. #define __NR_timer_gettime    (__NR_timer_create+2)
  315. #define __NR_timer_getoverrun    (__NR_timer_create+3)
  316. #define __NR_timer_delete    (__NR_timer_create+4)
  317. #define __NR_clock_settime    (__NR_timer_create+5)
  318. #define __NR_clock_gettime    (__NR_timer_create+6)
  319. #define __NR_clock_getres    (__NR_timer_create+7)
  320. #define __NR_clock_nanosleep    (__NR_timer_create+8)
  321. #define __NR_statfs64        296
  322. #define __NR_fstatfs64        297
  323. #define __NR_tgkill        298
  324. #define __NR_utimes        299
  325. #define __NR_fadvise64_64    300
  326. #define __NR_vserver        301
  327. #define __NR_mbind              302
  328. #define __NR_get_mempolicy      303
  329. #define __NR_set_mempolicy      304
  330. #define __NR_mq_open            305
  331. #define __NR_mq_unlink          (__NR_mq_open+1)
  332. #define __NR_mq_timedsend       (__NR_mq_open+2)
  333. #define __NR_mq_timedreceive    (__NR_mq_open+3)
  334. #define __NR_mq_notify          (__NR_mq_open+4)
  335. #define __NR_mq_getsetattr      (__NR_mq_open+5)
  336. #define __NR_kexec_load        311
  337. #define __NR_waitid        312
  338. #define __NR_add_key        313
  339. #define __NR_request_key    314
  340. #define __NR_keyctl        315
  341. #define __NR_ioprio_set        316
  342. #define __NR_ioprio_get        317
  343. #define __NR_inotify_init    318
  344. #define __NR_inotify_add_watch    319
  345. #define __NR_inotify_rm_watch    320
  346.  
  347. #ifdef __KERNEL__ 
  348.  
  349. #define NR_syscalls 321
  350.  
  351. /* user-visible error numbers are in the range -1 - -125: see <asm-sh64/errno.h> */
  352.  
  353. #define __syscall_return(type, res) \
  354. do { \
  355.     /* Note: when returning from kernel the return value is in r9        \
  356.     **       This prevents conflicts between return value and arg1      \
  357.     **       when dispatching signal handler, in other words makes        \
  358.     **       life easier in the system call epilogue (see entry.S)      \
  359.     */                                    \
  360.         register unsigned long __sr2 __asm__ ("r2") = res;            \
  361.     if ((unsigned long)(res) >= (unsigned long)(-125)) { \
  362.         errno = -(res);                            \
  363.         __sr2 = -1;                             \
  364.     } \
  365.     return (type) (__sr2);                             \
  366. } while (0)
  367.  
  368. /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
  369.  
  370. #define _syscall0(type,name) \
  371. type name(void) \
  372. { \
  373. register unsigned long __sc0 __asm__ ("r9") = ((0x10 << 16) | __NR_##name); \
  374. __asm__ __volatile__ ("trapa    %1 !\t\t\t" #name "()"                \
  375.     : "=r" (__sc0)                                 \
  376.     : "r" (__sc0) );                             \
  377. __syscall_return(type,__sc0);                             \
  378. }
  379.  
  380.     /*
  381.      * The apparent spurious "dummy" assembler comment is *needed*,
  382.      * as without it, the compiler treats the arg<n> variables
  383.      * as no longer live just before the asm. The compiler can
  384.      * then optimize the storage into any registers it wishes.
  385.      * The additional dummy statement forces the compiler to put
  386.      * the arguments into the correct registers before the TRAPA.
  387.      */
  388. #define _syscall1(type,name,type1,arg1) \
  389. type name(type1 arg1) \
  390. { \
  391. register unsigned long __sc0 __asm__ ("r9") = ((0x11 << 16) | __NR_##name); \
  392. register unsigned long __sc2 __asm__ ("r2") = (unsigned long) arg1;        \
  393. __asm__ __volatile__ ("trapa    %1 !\t\t\t" #name "(%2)"            \
  394.     : "=r" (__sc0)                                 \
  395.     : "r" (__sc0), "r" (__sc2));                        \
  396. __asm__ __volatile__ ("!dummy    %0 %1"                           \
  397.     :                                    \
  398.     : "r" (__sc0), "r" (__sc2));                        \
  399. __syscall_return(type,__sc0);                             \
  400. }
  401.  
  402. #define _syscall2(type,name,type1,arg1,type2,arg2) \
  403. type name(type1 arg1,type2 arg2) \
  404. { \
  405. register unsigned long __sc0 __asm__ ("r9") = ((0x12 << 16) | __NR_##name); \
  406. register unsigned long __sc2 __asm__ ("r2") = (unsigned long) arg1;        \
  407. register unsigned long __sc3 __asm__ ("r3") = (unsigned long) arg2;        \
  408. __asm__ __volatile__ ("trapa    %1 !\t\t\t" #name "(%2,%3)"            \
  409.     : "=r" (__sc0)                                 \
  410.     : "r" (__sc0), "r" (__sc2), "r" (__sc3) );                \
  411. __asm__ __volatile__ ("!dummy    %0 %1 %2"                       \
  412.     :                                    \
  413.     : "r" (__sc0), "r" (__sc2), "r" (__sc3) );                \
  414. __syscall_return(type,__sc0);                             \
  415. }
  416.  
  417. #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
  418. type name(type1 arg1,type2 arg2,type3 arg3) \
  419. { \
  420. register unsigned long __sc0 __asm__ ("r9") = ((0x13 << 16) | __NR_##name); \
  421. register unsigned long __sc2 __asm__ ("r2") = (unsigned long) arg1;        \
  422. register unsigned long __sc3 __asm__ ("r3") = (unsigned long) arg2;        \
  423. register unsigned long __sc4 __asm__ ("r4") = (unsigned long) arg3;        \
  424. __asm__ __volatile__ ("trapa    %1 !\t\t\t" #name "(%2,%3,%4)"            \
  425.     : "=r" (__sc0)                                 \
  426.     : "r" (__sc0), "r" (__sc2), "r" (__sc3), "r" (__sc4) );            \
  427. __asm__ __volatile__ ("!dummy    %0 %1 %2 %3"                       \
  428.     :                                    \
  429.     : "r" (__sc0), "r" (__sc2), "r" (__sc3), "r" (__sc4) );               \
  430. __syscall_return(type,__sc0);                             \
  431. }
  432.  
  433. #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
  434. type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
  435. { \
  436. register unsigned long __sc0 __asm__ ("r9") = ((0x14 << 16) | __NR_##name); \
  437. register unsigned long __sc2 __asm__ ("r2") = (unsigned long) arg1;        \
  438. register unsigned long __sc3 __asm__ ("r3") = (unsigned long) arg2;        \
  439. register unsigned long __sc4 __asm__ ("r4") = (unsigned long) arg3;        \
  440. register unsigned long __sc5 __asm__ ("r5") = (unsigned long) arg4;        \
  441. __asm__ __volatile__ ("trapa    %1 !\t\t\t" #name "(%2,%3,%4,%5)"        \
  442.     : "=r" (__sc0)                                 \
  443.     : "r" (__sc0), "r" (__sc2), "r" (__sc3), "r" (__sc4), "r" (__sc5) );\
  444. __asm__ __volatile__ ("!dummy    %0 %1 %2 %3 %4"                       \
  445.     :                                    \
  446.     : "r" (__sc0), "r" (__sc2), "r" (__sc3), "r" (__sc4), "r" (__sc5) );\
  447. __syscall_return(type,__sc0);                             \
  448. }
  449.  
  450. #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
  451. type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
  452. { \
  453. register unsigned long __sc0 __asm__ ("r9") = ((0x15 << 16) | __NR_##name); \
  454. register unsigned long __sc2 __asm__ ("r2") = (unsigned long) arg1;        \
  455. register unsigned long __sc3 __asm__ ("r3") = (unsigned long) arg2;        \
  456. register unsigned long __sc4 __asm__ ("r4") = (unsigned long) arg3;        \
  457. register unsigned long __sc5 __asm__ ("r5") = (unsigned long) arg4;        \
  458. register unsigned long __sc6 __asm__ ("r6") = (unsigned long) arg5;        \
  459. __asm__ __volatile__ ("trapa    %1 !\t\t\t" #name "(%2,%3,%4,%5,%6)"        \
  460.     : "=r" (__sc0)                                 \
  461.     : "r" (__sc0), "r" (__sc2), "r" (__sc3), "r" (__sc4), "r" (__sc5),  \
  462.       "r" (__sc6));                                \
  463. __asm__ __volatile__ ("!dummy    %0 %1 %2 %3 %4 %5"                   \
  464.     :                                    \
  465.     : "r" (__sc0), "r" (__sc2), "r" (__sc3), "r" (__sc4), "r" (__sc5),  \
  466.       "r" (__sc6));                                \
  467. __syscall_return(type,__sc0);                             \
  468. }
  469.  
  470. #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5, type6, arg6) \
  471. type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) \
  472. { \
  473. register unsigned long __sc0 __asm__ ("r9") = ((0x16 << 16) | __NR_##name); \
  474. register unsigned long __sc2 __asm__ ("r2") = (unsigned long) arg1;        \
  475. register unsigned long __sc3 __asm__ ("r3") = (unsigned long) arg2;        \
  476. register unsigned long __sc4 __asm__ ("r4") = (unsigned long) arg3;        \
  477. register unsigned long __sc5 __asm__ ("r5") = (unsigned long) arg4;        \
  478. register unsigned long __sc6 __asm__ ("r6") = (unsigned long) arg5;        \
  479. register unsigned long __sc7 __asm__ ("r7") = (unsigned long) arg6;        \
  480. __asm__ __volatile__ ("trapa    %1 !\t\t\t" #name "(%2,%3,%4,%5,%6,%7)"        \
  481.     : "=r" (__sc0)                                 \
  482.     : "r" (__sc0), "r" (__sc2), "r" (__sc3), "r" (__sc4), "r" (__sc5),  \
  483.       "r" (__sc6), "r" (__sc7));                        \
  484. __asm__ __volatile__ ("!dummy    %0 %1 %2 %3 %4 %5 %6"                   \
  485.     :                                    \
  486.     : "r" (__sc0), "r" (__sc2), "r" (__sc3), "r" (__sc4), "r" (__sc5),  \
  487.       "r" (__sc6), "r" (__sc7));                        \
  488. __syscall_return(type,__sc0);                             \
  489. }
  490.  
  491. #define __ARCH_WANT_IPC_PARSE_VERSION
  492. #define __ARCH_WANT_OLD_READDIR
  493. #define __ARCH_WANT_OLD_STAT
  494. #define __ARCH_WANT_STAT64
  495. #define __ARCH_WANT_SYS_ALARM
  496. #define __ARCH_WANT_SYS_GETHOSTNAME
  497. #define __ARCH_WANT_SYS_PAUSE
  498. #define __ARCH_WANT_SYS_SGETMASK
  499. #define __ARCH_WANT_SYS_SIGNAL
  500. #define __ARCH_WANT_SYS_TIME
  501. #define __ARCH_WANT_SYS_UTIME
  502. #define __ARCH_WANT_SYS_WAITPID
  503. #define __ARCH_WANT_SYS_SOCKETCALL
  504. #define __ARCH_WANT_SYS_FADVISE64
  505. #define __ARCH_WANT_SYS_GETPGRP
  506. #define __ARCH_WANT_SYS_LLSEEK
  507. #define __ARCH_WANT_SYS_NICE
  508. #define __ARCH_WANT_SYS_OLD_GETRLIMIT
  509. #define __ARCH_WANT_SYS_OLDUMOUNT
  510. #define __ARCH_WANT_SYS_SIGPENDING
  511. #define __ARCH_WANT_SYS_SIGPROCMASK
  512. #define __ARCH_WANT_SYS_RT_SIGACTION
  513.  
  514. #ifdef __KERNEL_SYSCALLS__
  515.  
  516. /* Copy from sh */
  517. #include <linux/compiler.h>
  518. #include <linux/types.h>
  519. #include <asm/ptrace.h>
  520.  
  521. /*
  522.  * we need this inline - forking from kernel space will result
  523.  * in NO COPY ON WRITE (!!!), until an execve is executed. This
  524.  * is no problem, but for the stack. This is handled by not letting
  525.  * main() use the stack at all after fork(). Thus, no function
  526.  * calls - which means inline code for fork too, as otherwise we
  527.  * would use the stack upon exit from 'fork()'.
  528.  *
  529.  * Actually only pause and fork are needed inline, so that there
  530.  * won't be any messing with the stack from main(), but we define
  531.  * some others too.
  532.  */
  533. #define __NR__exit __NR_exit
  534. static inline _syscall0(int,pause)
  535. static inline _syscall1(int,setup,int,magic)
  536. static inline _syscall0(int,sync)
  537. static inline _syscall0(pid_t,setsid)
  538. static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
  539. static inline _syscall3(int,read,int,fd,char *,buf,off_t,count)
  540. static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count)
  541. static inline _syscall1(int,dup,int,fd)
  542. static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
  543. static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
  544. static inline _syscall1(int,close,int,fd)
  545. static inline _syscall1(int,_exit,int,exitcode)
  546. static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
  547. static inline _syscall1(int,delete_module,const char *,name)
  548.  
  549. static inline pid_t wait(int * wait_stat)
  550. {
  551.     return waitpid(-1,wait_stat,0);
  552. }
  553. #endif /* __KERNEL_SYSCALLS__ */
  554.  
  555. /*
  556.  * "Conditional" syscalls
  557.  *
  558.  * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
  559.  * but it doesn't work on all toolchains, so we just do it by hand
  560.  */
  561. #ifndef cond_syscall
  562. #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
  563. #endif
  564.  
  565. #endif /* __KERNEL__ */
  566. #endif /* __ASM_SH64_UNISTD_H */
  567.