OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [asm-armnommu/] [unistd.h] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1633 jcastillo
#ifndef __ASM_ARM_UNISTD_H
2
#define __ASM_ARM_UNISTD_H
3
 
4
#define __NR_SYSCALL_BASE       0x900000
5
 
6
/*
7
 * This file contains the system call numbers.
8
 */
9
 
10
#define __NR_setup              __NR_SYSCALL_BASE+  0   /* used only by init, to get system going */
11
#define __NR_exit               __NR_SYSCALL_BASE+  1
12
#define __NR_fork               __NR_SYSCALL_BASE+  2
13
#define __NR_read               __NR_SYSCALL_BASE+  3
14
#define __NR_write              __NR_SYSCALL_BASE+  4
15
#define __NR_open               __NR_SYSCALL_BASE+  5
16
#define __NR_close              __NR_SYSCALL_BASE+  6
17
#define __NR_waitpid            __NR_SYSCALL_BASE+  7
18
#define __NR_creat              __NR_SYSCALL_BASE+  8
19
#define __NR_link               __NR_SYSCALL_BASE+  9
20
#define __NR_unlink             __NR_SYSCALL_BASE+ 10
21
#define __NR_execve             __NR_SYSCALL_BASE+ 11
22
#define __NR_chdir              __NR_SYSCALL_BASE+ 12
23
#define __NR_time               __NR_SYSCALL_BASE+ 13
24
#define __NR_mknod              __NR_SYSCALL_BASE+ 14
25
#define __NR_chmod              __NR_SYSCALL_BASE+ 15
26
#define __NR_chown              __NR_SYSCALL_BASE+ 16
27
#define __NR_break              __NR_SYSCALL_BASE+ 17
28
#define __NR_oldstat            __NR_SYSCALL_BASE+ 18
29
#define __NR_lseek              __NR_SYSCALL_BASE+ 19
30
#define __NR_getpid             __NR_SYSCALL_BASE+ 20
31
#define __NR_mount              __NR_SYSCALL_BASE+ 21
32
#define __NR_umount             __NR_SYSCALL_BASE+ 22
33
#define __NR_setuid             __NR_SYSCALL_BASE+ 23
34
#define __NR_getuid             __NR_SYSCALL_BASE+ 24
35
#define __NR_stime              __NR_SYSCALL_BASE+ 25
36
#define __NR_ptrace             __NR_SYSCALL_BASE+ 26
37
#define __NR_alarm              __NR_SYSCALL_BASE+ 27
38
#define __NR_oldfstat           __NR_SYSCALL_BASE+ 28
39
#define __NR_pause              __NR_SYSCALL_BASE+ 29
40
#define __NR_utime              __NR_SYSCALL_BASE+ 30
41
#define __NR_stty               __NR_SYSCALL_BASE+ 31
42
#define __NR_gtty               __NR_SYSCALL_BASE+ 32
43
#define __NR_access             __NR_SYSCALL_BASE+ 33
44
#define __NR_nice               __NR_SYSCALL_BASE+ 34
45
#define __NR_ftime              __NR_SYSCALL_BASE+ 35
46
#define __NR_sync               __NR_SYSCALL_BASE+ 36
47
#define __NR_kill               __NR_SYSCALL_BASE+ 37
48
#define __NR_rename             __NR_SYSCALL_BASE+ 38
49
#define __NR_mkdir              __NR_SYSCALL_BASE+ 39
50
#define __NR_rmdir              __NR_SYSCALL_BASE+ 40
51
#define __NR_dup                __NR_SYSCALL_BASE+ 41
52
#define __NR_pipe               __NR_SYSCALL_BASE+ 42
53
#define __NR_times              __NR_SYSCALL_BASE+ 43
54
#define __NR_prof               __NR_SYSCALL_BASE+ 44
55
#define __NR_brk                __NR_SYSCALL_BASE+ 45
56
#define __NR_setgid             __NR_SYSCALL_BASE+ 46
57
#define __NR_getgid             __NR_SYSCALL_BASE+ 47
58
#define __NR_signal             __NR_SYSCALL_BASE+ 48
59
#define __NR_geteuid            __NR_SYSCALL_BASE+ 49
60
#define __NR_getegid            __NR_SYSCALL_BASE+ 50
61
#define __NR_acct               __NR_SYSCALL_BASE+ 51
62
#define __NR_phys               __NR_SYSCALL_BASE+ 52
63
#define __NR_lock               __NR_SYSCALL_BASE+ 53
64
#define __NR_ioctl              __NR_SYSCALL_BASE+ 54
65
#define __NR_fcntl              __NR_SYSCALL_BASE+ 55
66
#define __NR_mpx                __NR_SYSCALL_BASE+ 56
67
#define __NR_setpgid            __NR_SYSCALL_BASE+ 57
68
#define __NR_ulimit             __NR_SYSCALL_BASE+ 58
69
#define __NR_oldolduname        __NR_SYSCALL_BASE+ 59
70
#define __NR_umask              __NR_SYSCALL_BASE+ 60
71
#define __NR_chroot             __NR_SYSCALL_BASE+ 61
72
#define __NR_ustat              __NR_SYSCALL_BASE+ 62
73
#define __NR_dup2               __NR_SYSCALL_BASE+ 63
74
#define __NR_getppid            __NR_SYSCALL_BASE+ 64
75
#define __NR_getpgrp            __NR_SYSCALL_BASE+ 65
76
#define __NR_setsid             __NR_SYSCALL_BASE+ 66
77
#define __NR_sigaction          __NR_SYSCALL_BASE+ 67
78
#define __NR_sgetmask           __NR_SYSCALL_BASE+ 68
79
#define __NR_ssetmask           __NR_SYSCALL_BASE+ 69
80
#define __NR_setreuid           __NR_SYSCALL_BASE+ 70
81
#define __NR_setregid           __NR_SYSCALL_BASE+ 71
82
#define __NR_sigsuspend         __NR_SYSCALL_BASE+ 72
83
#define __NR_sigpending         __NR_SYSCALL_BASE+ 73
84
#define __NR_sethostname        __NR_SYSCALL_BASE+ 74
85
#define __NR_setrlimit          __NR_SYSCALL_BASE+ 75
86
#define __NR_getrlimit          __NR_SYSCALL_BASE+ 76
87
#define __NR_getrusage          __NR_SYSCALL_BASE+ 77
88
#define __NR_gettimeofday       __NR_SYSCALL_BASE+ 78
89
#define __NR_settimeofday       __NR_SYSCALL_BASE+ 79
90
#define __NR_getgroups          __NR_SYSCALL_BASE+ 80
91
#define __NR_setgroups          __NR_SYSCALL_BASE+ 81
92
#define __NR_select             __NR_SYSCALL_BASE+ 82
93
#define __NR_symlink            __NR_SYSCALL_BASE+ 83
94
#define __NR_oldlstat           __NR_SYSCALL_BASE+ 84
95
#define __NR_readlink           __NR_SYSCALL_BASE+ 85
96
#define __NR_uselib             __NR_SYSCALL_BASE+ 86
97
#define __NR_swapon             __NR_SYSCALL_BASE+ 87
98
#define __NR_reboot             __NR_SYSCALL_BASE+ 88
99
#define __NR_readdir            __NR_SYSCALL_BASE+ 89
100
#define __NR_mmap               __NR_SYSCALL_BASE+ 90
101
#define __NR_munmap             __NR_SYSCALL_BASE+ 91
102
#define __NR_truncate           __NR_SYSCALL_BASE+ 92
103
#define __NR_ftruncate          __NR_SYSCALL_BASE+ 93
104
#define __NR_fchmod             __NR_SYSCALL_BASE+ 94
105
#define __NR_fchown             __NR_SYSCALL_BASE+ 95
106
#define __NR_getpriority        __NR_SYSCALL_BASE+ 96
107
#define __NR_setpriority        __NR_SYSCALL_BASE+ 97
108
#define __NR_profil             __NR_SYSCALL_BASE+ 98
109
#define __NR_statfs             __NR_SYSCALL_BASE+ 99
110
#define __NR_fstatfs            __NR_SYSCALL_BASE+100
111
#define __NR_ioperm             __NR_SYSCALL_BASE+101
112
#define __NR_socketcall         __NR_SYSCALL_BASE+102
113
#define __NR_syslog             __NR_SYSCALL_BASE+103
114
#define __NR_setitimer          __NR_SYSCALL_BASE+104
115
#define __NR_getitimer          __NR_SYSCALL_BASE+105
116
#define __NR_stat               __NR_SYSCALL_BASE+106
117
#define __NR_lstat              __NR_SYSCALL_BASE+107
118
#define __NR_fstat              __NR_SYSCALL_BASE+108
119
#define __NR_olduname           __NR_SYSCALL_BASE+109
120
#define __NR_iopl               __NR_SYSCALL_BASE+110
121
#define __NR_vhangup            __NR_SYSCALL_BASE+111
122
#define __NR_idle               __NR_SYSCALL_BASE+112
123
#define __NR_syscall            __NR_SYSCALL_BASE+113 /* syscall to call a syscall! */
124
#define __NR_wait4              __NR_SYSCALL_BASE+114
125
#define __NR_swapoff            __NR_SYSCALL_BASE+115
126
#define __NR_sysinfo            __NR_SYSCALL_BASE+116
127
#define __NR_ipc                __NR_SYSCALL_BASE+117
128
#define __NR_fsync              __NR_SYSCALL_BASE+118
129
#define __NR_sigreturn          __NR_SYSCALL_BASE+119
130
#define __NR_clone              __NR_SYSCALL_BASE+120
131
#define __NR_setdomainname      __NR_SYSCALL_BASE+121
132
#define __NR_uname              __NR_SYSCALL_BASE+122
133
#define __NR_modify_ldt         __NR_SYSCALL_BASE+123
134
#define __NR_adjtimex           __NR_SYSCALL_BASE+124
135
#define __NR_mprotect           __NR_SYSCALL_BASE+125
136
#define __NR_sigprocmask        __NR_SYSCALL_BASE+126
137
#define __NR_create_module      __NR_SYSCALL_BASE+127
138
#define __NR_init_module        __NR_SYSCALL_BASE+128
139
#define __NR_delete_module      __NR_SYSCALL_BASE+129
140
#define __NR_get_kernel_syms    __NR_SYSCALL_BASE+130
141
#define __NR_quotactl           __NR_SYSCALL_BASE+131
142
#define __NR_getpgid            __NR_SYSCALL_BASE+132
143
#define __NR_fchdir             __NR_SYSCALL_BASE+133
144
#define __NR_bdflush            __NR_SYSCALL_BASE+134
145
#define __NR_sysfs              __NR_SYSCALL_BASE+135
146
#define __NR_personality        __NR_SYSCALL_BASE+136
147
#define __NR_afs_syscall        __NR_SYSCALL_BASE+137 /* Syscall for Andrew File System */
148
#define __NR_setfsuid           __NR_SYSCALL_BASE+138
149
#define __NR_setfsgid           __NR_SYSCALL_BASE+139
150
#define __NR__llseek            __NR_SYSCALL_BASE+140
151
#define __NR_getdents           __NR_SYSCALL_BASE+141
152
#define __NR__newselect         __NR_SYSCALL_BASE+142
153
#define __NR_flock              __NR_SYSCALL_BASE+143
154
#define __NR_msync              __NR_SYSCALL_BASE+144
155
#define __NR_readv              __NR_SYSCALL_BASE+145
156
#define __NR_writev             __NR_SYSCALL_BASE+146
157
#define __NR_getsid             __NR_SYSCALL_BASE+147
158
#define __NR_fdatasync          __NR_SYSCALL_BASE+148
159
#define __NR__sysctl            __NR_SYSCALL_BASE+149
160
#define __NR_mlock              __NR_SYSCALL_BASE+150
161
#define __NR_munlock            __NR_SYSCALL_BASE+151
162
#define __NR_mlockall           __NR_SYSCALL_BASE+152
163
#define __NR_munlockall         __NR_SYSCALL_BASE+153
164
#define __NR_sched_setparam     __NR_SYSCALL_BASE+154
165
#define __NR_sched_getparam     __NR_SYSCALL_BASE+155
166
#define __NR_sched_setscheduler __NR_SYSCALL_BASE+156
167
#define __NR_sched_getscheduler __NR_SYSCALL_BASE+157
168
#define __NR_sched_yield        __NR_SYSCALL_BASE+158
169
#define __NR_sched_get_priority_max     __NR_SYSCALL_BASE+159
170
#define __NR_sched_get_priority_min     __NR_SYSCALL_BASE+160
171
#define __NR_sched_rr_get_interval      __NR_SYSCALL_BASE+161
172
#define __NR_nanosleep          __NR_SYSCALL_BASE+162
173
#define __NR_mremap             __NR_SYSCALL_BASE+163
174
#define __NR_poll               __NR_SYSCALL_BASE+168
175
#define __NR_getpmsg            __NR_SYSCALL_BASE+188
176
#define __NR_putpmsg            __NR_SYSCALL_BASE+189
177
 
178
#define __sys2(x) #x
179
#define __sys1(x) __sys2(x)
180
 
181
#ifndef __syscall
182
#define __syscall(name) "swi " __sys1(__NR_##name) "\n\t"
183
#endif
184
 
185
#define _syscall0(type,name)                                                            \
186
type name(void) {                                                                       \
187
  long __res;                                                                           \
188
  __asm__ __volatile__ (                                                                \
189
  __syscall(name)                                                                       \
190
  "mov %0,r0\n\t"                                                                       \
191
  :"=r" (__res) : : "r0","r1","r2","r3","lr");                                          \
192
  if (__res >= 0)                                                                        \
193
    return (type) __res;                                                                \
194
  errno = -__res;                                                                       \
195
  return -1;                                                                            \
196
}
197
 
198
#define _syscall1(type,name,type1,arg1)                                                 \
199
type name(type1 arg1) {                                                                 \
200
  long __res;                                                                           \
201
  __asm__ __volatile__ (                                                                \
202
  "mov r0,%1\n\t"                                                                       \
203
  __syscall(name)                                                                       \
204
  "mov %0,r0\n\t"                                                                       \
205
        : "=r" (__res)                                                                  \
206
        : "r" ((long)(arg1))                                                            \
207
        : "r0","r1","r2","r3","lr");                                                    \
208
  if (__res >= 0)                                                                        \
209
    return (type) __res;                                                                \
210
  errno = -__res;                                                                       \
211
  return -1;                                                                            \
212
}
213
 
214
#define _syscall2(type,name,type1,arg1,type2,arg2)                                      \
215
type name(type1 arg1,type2 arg2) {                                                      \
216
  long __res;                                                                           \
217
  __asm__ __volatile__ (                                                                \
218
  "mov r0,%1\n\t"                                                                       \
219
  "mov r1,%2\n\t"                                                                       \
220
  __syscall(name)                                                                       \
221
  "mov %0,r0\n\t"                                                                       \
222
        : "=r" (__res)                                                                  \
223
        : "r" ((long)(arg1)),"r" ((long)(arg2))                                         \
224
        : "r0","r1","r2","r3","lr");                                                    \
225
  if (__res >= 0)                                                                        \
226
    return (type) __res;                                                                \
227
  errno = -__res;                                                                       \
228
  return -1;                                                                            \
229
}
230
 
231
 
232
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3)                           \
233
type name(type1 arg1,type2 arg2,type3 arg3) {                                           \
234
  long __res;                                                                           \
235
  __asm__ __volatile__ (                                                                \
236
  "mov r0,%1\n\t"                                                                       \
237
  "mov r1,%2\n\t"                                                                       \
238
  "mov r2,%3\n\t"                                                                       \
239
  __syscall(name)                                                                       \
240
  "mov %0,r0\n\t"                                                                       \
241
        : "=r" (__res)                                                                  \
242
        : "r" ((long)(arg1)),"r" ((long)(arg2)),"r" ((long)(arg3))                      \
243
        : "r0","r1","r2","r3","lr");                                                    \
244
  if (__res >= 0)                                                                        \
245
    return (type) __res;                                                                \
246
  errno=-__res;                                                                         \
247
  return -1;                                                                            \
248
}
249
 
250
 
251
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)                \
252
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {                             \
253
  long __res;                                                                           \
254
  __asm__ __volatile__ (                                                                \
255
  "mov r0,%1\n\t"                                                                       \
256
  "mov r1,%2\n\t"                                                                       \
257
  "mov r2,%3\n\t"                                                                       \
258
  "mov r3,%4\n\t"                                                                       \
259
  __syscall(name)                                                                       \
260
  "mov %0,r0\n\t"                                                                       \
261
        : "=r" (__res)                                                                  \
262
        : "r" ((long)(arg1)),"r" ((long)(arg2)),"r" ((long)(arg3)),"r" ((long)(arg4))   \
263
        : "r0","r1","r2","r3","lr");                                                    \
264
  if (__res >= 0)                                                                        \
265
    return (type) __res;                                                                \
266
  errno=-__res;                                                                         \
267
  return -1;                                                                            \
268
}
269
 
270
 
271
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5)     \
272
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) {                 \
273
  long __res;                                                                           \
274
  __asm__ __volatile__ (                                                                \
275
  "mov r0,%1\n\t"                                                                       \
276
  "mov r1,%2\n\t"                                                                       \
277
  "mov r2,%3\n\t"                                                                       \
278
  "mov r3,%4\n\t"                                                                       \
279
  "mov r4,%5\n\t"                                                                       \
280
  __syscall(name)                                                                       \
281
  "mov %0,r0\n\t"                                                                       \
282
        : "=r" (__res)                                                                  \
283
        : "r" ((long)(arg1)),"r" ((long)(arg2)),"r" ((long)(arg3)),"r" ((long)(arg4)),  \
284
          "r" ((long)(arg5))                                                            \
285
        : "r0","r1","r2","r3","r4","lr");                                               \
286
  if (__res >= 0)                                                                        \
287
    return (type) __res;                                                                \
288
  errno=-__res;                                                                         \
289
  return -1;                                                                            \
290
}
291
 
292
#ifdef __KERNEL_SYSCALLS__
293
#define __NR__exit __NR_exit
294
static inline _syscall0(int,idle);
295
static inline _syscall0(int,fork);
296
static inline _syscall2(int,clone,unsigned long,flags,char *,esp);
297
static inline _syscall0(int,pause);
298
static inline _syscall0(int,setup);
299
static inline _syscall0(int,sync);
300
static inline _syscall0(pid_t,setsid);
301
static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count);
302
static inline _syscall1(int,dup,int,fd);
303
static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp);
304
static inline _syscall3(int,open,const char *,file,int,flag,int,mode);
305
static inline _syscall1(int,close,int,fd);
306
static inline _syscall1(int,_exit,int,exitcode);
307
static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options);
308
 
309
static inline pid_t wait(int * wait_stat)
310
{
311
        return waitpid(-1,wait_stat,0);
312
}
313
 
314
 
315
 
316
/*
317
 * This is the mechanism for creating a new kernel thread.
318
 *
319
 * NOTE! Only a kernel-only process(ie the swapper or direct descendants
320
 * who haven't done an "execve()") should use this: it will work within
321
 * a system call from a "real" process, but the process memory space will
322
 * not be free'd until both the parent and the child have exited.
323
 */
324
static inline pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
325
{
326
        long retval;
327
 
328
        __asm__ __volatile__("
329
        mov     r0,%1
330
        mov     r1,%2
331
        "__syscall(clone)"
332
        teq     r0, #0
333
        bne     1f
334
        mov     r0,%4
335
        mov     lr, pc
336
        mov     pc, %3
337
        "__syscall(exit)"
338
1:      mov %0,r0"
339
        : "=r" (retval)
340
        : "Ir" (flags | CLONE_VM), "Ir" (NULL), "r" (fn), "Ir" (arg)
341
        : "r0","r1","r2","r3","lr");
342
 
343
        return retval;
344
}
345
 
346
#endif
347
 
348
#endif /* __ASM_ARM_UNISTD_H */
349
 
350
 
351
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.