more code moved to helpers - sipmplified x86 float constants definitions
[qemu] / syscall-i386.h
1 /* from linux/unistd.h */
2
3 #define TARGET_NR_exit            1
4 #define TARGET_NR_fork            2
5 #define TARGET_NR_read            3
6 #define TARGET_NR_write           4
7 #define TARGET_NR_open            5
8 #define TARGET_NR_close           6
9 #define TARGET_NR_waitpid                 7
10 #define TARGET_NR_creat           8
11 #define TARGET_NR_link            9
12 #define TARGET_NR_unlink                 10
13 #define TARGET_NR_execve                 11
14 #define TARGET_NR_chdir          12
15 #define TARGET_NR_time           13
16 #define TARGET_NR_mknod          14
17 #define TARGET_NR_chmod          15
18 #define TARGET_NR_lchown                 16
19 #define TARGET_NR_break          17
20 #define TARGET_NR_oldstat                18
21 #define TARGET_NR_lseek          19
22 #define TARGET_NR_getpid                 20
23 #define TARGET_NR_mount          21
24 #define TARGET_NR_umount                 22
25 #define TARGET_NR_setuid                 23
26 #define TARGET_NR_getuid                 24
27 #define TARGET_NR_stime          25
28 #define TARGET_NR_ptrace                 26
29 #define TARGET_NR_alarm          27
30 #define TARGET_NR_oldfstat               28
31 #define TARGET_NR_pause          29
32 #define TARGET_NR_utime          30
33 #define TARGET_NR_stty           31
34 #define TARGET_NR_gtty           32
35 #define TARGET_NR_access                 33
36 #define TARGET_NR_nice           34
37 #define TARGET_NR_ftime          35
38 #define TARGET_NR_sync           36
39 #define TARGET_NR_kill           37
40 #define TARGET_NR_rename                 38
41 #define TARGET_NR_mkdir          39
42 #define TARGET_NR_rmdir          40
43 #define TARGET_NR_dup            41
44 #define TARGET_NR_pipe           42
45 #define TARGET_NR_times          43
46 #define TARGET_NR_prof           44
47 #define TARGET_NR_brk            45
48 #define TARGET_NR_setgid                 46
49 #define TARGET_NR_getgid                 47
50 #define TARGET_NR_signal                 48
51 #define TARGET_NR_geteuid                49
52 #define TARGET_NR_getegid                50
53 #define TARGET_NR_acct           51
54 #define TARGET_NR_umount2                52
55 #define TARGET_NR_lock           53
56 #define TARGET_NR_ioctl          54
57 #define TARGET_NR_fcntl          55
58 #define TARGET_NR_mpx            56
59 #define TARGET_NR_setpgid                57
60 #define TARGET_NR_ulimit                 58
61 #define TARGET_NR_oldolduname    59
62 #define TARGET_NR_umask          60
63 #define TARGET_NR_chroot                 61
64 #define TARGET_NR_ustat          62
65 #define TARGET_NR_dup2           63
66 #define TARGET_NR_getppid                64
67 #define TARGET_NR_getpgrp                65
68 #define TARGET_NR_setsid                 66
69 #define TARGET_NR_sigaction              67
70 #define TARGET_NR_sgetmask               68
71 #define TARGET_NR_ssetmask               69
72 #define TARGET_NR_setreuid               70
73 #define TARGET_NR_setregid               71
74 #define TARGET_NR_sigsuspend             72
75 #define TARGET_NR_sigpending             73
76 #define TARGET_NR_sethostname    74
77 #define TARGET_NR_setrlimit              75
78 #define TARGET_NR_getrlimit              76     /* Back compatible 2Gig limited rlimit */
79 #define TARGET_NR_getrusage              77
80 #define TARGET_NR_gettimeofday   78
81 #define TARGET_NR_settimeofday   79
82 #define TARGET_NR_getgroups              80
83 #define TARGET_NR_setgroups              81
84 #define TARGET_NR_select                 82
85 #define TARGET_NR_symlink                83
86 #define TARGET_NR_oldlstat               84
87 #define TARGET_NR_readlink               85
88 #define TARGET_NR_uselib                 86
89 #define TARGET_NR_swapon                 87
90 #define TARGET_NR_reboot                 88
91 #define TARGET_NR_readdir                89
92 #define TARGET_NR_mmap           90
93 #define TARGET_NR_munmap                 91
94 #define TARGET_NR_truncate               92
95 #define TARGET_NR_ftruncate              93
96 #define TARGET_NR_fchmod                 94
97 #define TARGET_NR_fchown                 95
98 #define TARGET_NR_getpriority    96
99 #define TARGET_NR_setpriority    97
100 #define TARGET_NR_profil                 98
101 #define TARGET_NR_statfs                 99
102 #define TARGET_NR_fstatfs               100
103 #define TARGET_NR_ioperm                101
104 #define TARGET_NR_socketcall            102
105 #define TARGET_NR_syslog                103
106 #define TARGET_NR_setitimer             104
107 #define TARGET_NR_getitimer             105
108 #define TARGET_NR_stat          106
109 #define TARGET_NR_lstat         107
110 #define TARGET_NR_fstat         108
111 #define TARGET_NR_olduname              109
112 #define TARGET_NR_iopl          110
113 #define TARGET_NR_vhangup               111
114 #define TARGET_NR_idle          112
115 #define TARGET_NR_vm86old               113
116 #define TARGET_NR_wait4         114
117 #define TARGET_NR_swapoff               115
118 #define TARGET_NR_sysinfo               116
119 #define TARGET_NR_ipc           117
120 #define TARGET_NR_fsync         118
121 #define TARGET_NR_sigreturn             119
122 #define TARGET_NR_clone         120
123 #define TARGET_NR_setdomainname 121
124 #define TARGET_NR_uname         122
125 #define TARGET_NR_modify_ldt            123
126 #define TARGET_NR_adjtimex              124
127 #define TARGET_NR_mprotect              125
128 #define TARGET_NR_sigprocmask   126
129 #define TARGET_NR_create_module 127
130 #define TARGET_NR_init_module   128
131 #define TARGET_NR_delete_module 129
132 #define TARGET_NR_get_kernel_syms       130
133 #define TARGET_NR_quotactl              131
134 #define TARGET_NR_getpgid               132
135 #define TARGET_NR_fchdir                133
136 #define TARGET_NR_bdflush               134
137 #define TARGET_NR_sysfs         135
138 #define TARGET_NR_personality   136
139 #define TARGET_NR_afs_syscall   137 /* Syscall for Andrew File System */
140 #define TARGET_NR_setfsuid              138
141 #define TARGET_NR_setfsgid              139
142 #define TARGET_NR__llseek               140
143 #define TARGET_NR_getdents              141
144 #define TARGET_NR__newselect            142
145 #define TARGET_NR_flock         143
146 #define TARGET_NR_msync         144
147 #define TARGET_NR_readv         145
148 #define TARGET_NR_writev                146
149 #define TARGET_NR_getsid                147
150 #define TARGET_NR_fdatasync             148
151 #define TARGET_NR__sysctl               149
152 #define TARGET_NR_mlock         150
153 #define TARGET_NR_munlock               151
154 #define TARGET_NR_mlockall              152
155 #define TARGET_NR_munlockall            153
156 #define TARGET_NR_sched_setparam                154
157 #define TARGET_NR_sched_getparam                155
158 #define TARGET_NR_sched_setscheduler            156
159 #define TARGET_NR_sched_getscheduler            157
160 #define TARGET_NR_sched_yield           158
161 #define TARGET_NR_sched_get_priority_max        159
162 #define TARGET_NR_sched_get_priority_min        160
163 #define TARGET_NR_sched_rr_get_interval 161
164 #define TARGET_NR_nanosleep             162
165 #define TARGET_NR_mremap                163
166 #define TARGET_NR_setresuid             164
167 #define TARGET_NR_getresuid             165
168 #define TARGET_NR_vm86          166
169 #define TARGET_NR_query_module  167
170 #define TARGET_NR_poll          168
171 #define TARGET_NR_nfsservctl            169
172 #define TARGET_NR_setresgid             170
173 #define TARGET_NR_getresgid             171
174 #define TARGET_NR_prctl              172
175 #define TARGET_NR_rt_sigreturn  173
176 #define TARGET_NR_rt_sigaction  174
177 #define TARGET_NR_rt_sigprocmask        175
178 #define TARGET_NR_rt_sigpending 176
179 #define TARGET_NR_rt_sigtimedwait       177
180 #define TARGET_NR_rt_sigqueueinfo       178
181 #define TARGET_NR_rt_sigsuspend 179
182 #define TARGET_NR_pread         180
183 #define TARGET_NR_pwrite                181
184 #define TARGET_NR_chown         182
185 #define TARGET_NR_getcwd                183
186 #define TARGET_NR_capget                184
187 #define TARGET_NR_capset                185
188 #define TARGET_NR_sigaltstack   186
189 #define TARGET_NR_sendfile              187
190 #define TARGET_NR_getpmsg               188     /* some people actually want streams */
191 #define TARGET_NR_putpmsg               189     /* some people actually want streams */
192 #define TARGET_NR_vfork         190
193 #define TARGET_NR_ugetrlimit            191     /* SuS compliant getrlimit */
194 #define TARGET_NR_mmap2         192
195 #define TARGET_NR_truncate64            193
196 #define TARGET_NR_ftruncate64   194
197 #define TARGET_NR_stat64                195
198 #define TARGET_NR_lstat64               196
199 #define TARGET_NR_fstat64               197
200 #define TARGET_NR_lchown32              198
201 #define TARGET_NR_getuid32              199
202 #define TARGET_NR_getgid32              200
203 #define TARGET_NR_geteuid32             201
204 #define TARGET_NR_getegid32             202
205 #define TARGET_NR_setreuid32            203
206 #define TARGET_NR_setregid32            204
207 #define TARGET_NR_getgroups32   205
208 #define TARGET_NR_setgroups32   206
209 #define TARGET_NR_fchown32              207
210 #define TARGET_NR_setresuid32   208
211 #define TARGET_NR_getresuid32   209
212 #define TARGET_NR_setresgid32   210
213 #define TARGET_NR_getresgid32   211
214 #define TARGET_NR_chown32               212
215 #define TARGET_NR_setuid32              213
216 #define TARGET_NR_setgid32              214
217 #define TARGET_NR_setfsuid32            215
218 #define TARGET_NR_setfsgid32            216
219 #define TARGET_NR_pivot_root            217
220 #define TARGET_NR_mincore               218
221 #define TARGET_NR_madvise               219
222 #define TARGET_NR_madvise1              219     /* delete when C lib stub is removed */
223 #define TARGET_NR_getdents64            220
224 #define TARGET_NR_fcntl64               221
225 #define TARGET_NR_security              223     /* syscall for security modules */
226 #define TARGET_NR_gettid                224
227 #define TARGET_NR_readahead             225
228 #define TARGET_NR_setxattr              226
229 #define TARGET_NR_lsetxattr             227
230 #define TARGET_NR_fsetxattr             228
231 #define TARGET_NR_getxattr              229
232 #define TARGET_NR_lgetxattr             230
233 #define TARGET_NR_fgetxattr             231
234 #define TARGET_NR_listxattr             232
235 #define TARGET_NR_llistxattr            233
236 #define TARGET_NR_flistxattr            234
237 #define TARGET_NR_removexattr   235
238 #define TARGET_NR_lremovexattr  236
239 #define TARGET_NR_fremovexattr  237
240 #define TARGET_NR_tkill         238
241 #define TARGET_NR_sendfile64            239
242 #define TARGET_NR_futex         240
243 #define TARGET_NR_sched_setaffinity     241
244 #define TARGET_NR_sched_getaffinity     242
245 #define TARGET_NR_set_thread_area       243
246 #define TARGET_NR_get_thread_area       244
247 #define TARGET_NR_io_setup              245
248 #define TARGET_NR_io_destroy            246
249 #define TARGET_NR_io_getevents  247
250 #define TARGET_NR_io_submit             248
251 #define TARGET_NR_io_cancel             249
252 #define TARGET_NR_fadvise64             250
253
254 #define TARGET_NR_exit_group            252
255 #define TARGET_NR_lookup_dcookie        253
256 #define TARGET_NR_epoll_create  254
257 #define TARGET_NR_epoll_ctl             255
258 #define TARGET_NR_epoll_wait            256
259 #define TARGET_NR_remap_file_pages      257
260 #define TARGET_NR_set_tid_address       258
261 #define TARGET_NR_timer_create  259
262 #define TARGET_NR_timer_settime (TARGET_NR_timer_create+1)
263 #define TARGET_NR_timer_gettime (TARGET_NR_timer_create+2)
264 #define TARGET_NR_timer_getoverrun      (TARGET_NR_timer_create+3)
265 #define TARGET_NR_timer_delete  (TARGET_NR_timer_create+4)
266 #define TARGET_NR_clock_settime (TARGET_NR_timer_create+5)
267 #define TARGET_NR_clock_gettime (TARGET_NR_timer_create+6)
268 #define TARGET_NR_clock_getres  (TARGET_NR_timer_create+7)
269 #define TARGET_NR_clock_nanosleep       (TARGET_NR_timer_create+8)
270
271 #define TARGET_SIG_BLOCK          0    /* for blocking signals */
272 #define TARGET_SIG_UNBLOCK        1    /* for unblocking signals */
273 #define TARGET_SIG_SETMASK        2    /* for setting the signal mask */
274
275 struct target_stat {
276         unsigned short st_dev;
277         unsigned short __pad1;
278         target_ulong st_ino;
279         unsigned short st_mode;
280         unsigned short st_nlink;
281         unsigned short st_uid;
282         unsigned short st_gid;
283         unsigned short st_rdev;
284         unsigned short __pad2;
285         target_ulong  st_size;
286         target_ulong  st_blksize;
287         target_ulong  st_blocks;
288         target_ulong  target_st_atime;
289         target_ulong  __unused1;
290         target_ulong  target_st_mtime;
291         target_ulong  __unused2;
292         target_ulong  target_st_ctime;
293         target_ulong  __unused3;
294         target_ulong  __unused4;
295         target_ulong  __unused5;
296 };
297
298 /* This matches struct stat64 in glibc2.1, hence the absolutely
299  * insane amounts of padding around dev_t's.
300  */
301 struct target_stat64 {
302         unsigned short  st_dev;
303         unsigned char   __pad0[10];
304
305 #define TARGET_STAT64_HAS_BROKEN_ST_INO 1
306         target_ulong    __st_ino;
307
308         unsigned int    st_mode;
309         unsigned int    st_nlink;
310
311         target_ulong    st_uid;
312         target_ulong    st_gid;
313
314         unsigned short  st_rdev;
315         unsigned char   __pad3[10];
316
317         long long       st_size;
318         target_ulong    st_blksize;
319
320         target_ulong    st_blocks;      /* Number 512-byte blocks allocated. */
321         target_ulong    __pad4;         /* future possible st_blocks high bits */
322
323         target_ulong    target_st_atime;
324         target_ulong    __pad5;
325
326         target_ulong    target_st_mtime;
327         target_ulong    __pad6;
328
329         target_ulong    target_st_ctime;
330         target_ulong    __pad7;         /* will be high 32 bits of ctime someday */
331
332         unsigned long long      st_ino;
333 } __attribute__((packed));
334
335 #define TARGET_SA_NOCLDSTOP     0x00000001
336 #define TARGET_SA_NOCLDWAIT     0x00000002 /* not supported yet */
337 #define TARGET_SA_SIGINFO       0x00000004
338 #define TARGET_SA_ONSTACK       0x08000000
339 #define TARGET_SA_RESTART       0x10000000
340 #define TARGET_SA_NODEFER       0x40000000
341 #define TARGET_SA_RESETHAND     0x80000000
342 #define TARGET_SA_RESTORER      0x04000000
343
344 #define TARGET_SIGHUP            1
345 #define TARGET_SIGINT            2
346 #define TARGET_SIGQUIT           3
347 #define TARGET_SIGILL            4
348 #define TARGET_SIGTRAP           5
349 #define TARGET_SIGABRT           6
350 #define TARGET_SIGIOT            6
351 #define TARGET_SIGBUS            7
352 #define TARGET_SIGFPE            8
353 #define TARGET_SIGKILL           9
354 #define TARGET_SIGUSR1          10
355 #define TARGET_SIGSEGV          11
356 #define TARGET_SIGUSR2          12
357 #define TARGET_SIGPIPE          13
358 #define TARGET_SIGALRM          14
359 #define TARGET_SIGTERM          15
360 #define TARGET_SIGSTKFLT        16
361 #define TARGET_SIGCHLD          17
362 #define TARGET_SIGCONT          18
363 #define TARGET_SIGSTOP          19
364 #define TARGET_SIGTSTP          20
365 #define TARGET_SIGTTIN          21
366 #define TARGET_SIGTTOU          22
367 #define TARGET_SIGURG           23
368 #define TARGET_SIGXCPU          24
369 #define TARGET_SIGXFSZ          25
370 #define TARGET_SIGVTALRM        26
371 #define TARGET_SIGPROF          27
372 #define TARGET_SIGWINCH         28
373 #define TARGET_SIGIO            29
374 #define TARGET_SIGRTMIN         32
375
376 struct target_old_sigaction {
377         target_ulong _sa_handler;
378         target_ulong sa_mask;
379         target_ulong sa_flags;
380         target_ulong sa_restorer;
381 };
382
383 struct target_sigaction {
384         target_ulong _sa_handler;
385         target_ulong sa_flags;
386         target_ulong sa_restorer;
387         target_sigset_t sa_mask;
388 };
389
390 typedef union target_sigval {
391         int sival_int;
392         target_ulong sival_ptr;
393 } target_sigval_t;
394
395 #define TARGET_SI_MAX_SIZE      128
396 #define TARGET_SI_PAD_SIZE      ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3)
397
398 typedef struct target_siginfo {
399         int si_signo;
400         int si_errno;
401         int si_code;
402
403         union {
404                 int _pad[TARGET_SI_PAD_SIZE];
405
406                 /* kill() */
407                 struct {
408                         pid_t _pid;             /* sender's pid */
409                         uid_t _uid;             /* sender's uid */
410                 } _kill;
411
412                 /* POSIX.1b timers */
413                 struct {
414                         unsigned int _timer1;
415                         unsigned int _timer2;
416                 } _timer;
417
418                 /* POSIX.1b signals */
419                 struct {
420                         pid_t _pid;             /* sender's pid */
421                         uid_t _uid;             /* sender's uid */
422                         target_sigval_t _sigval;
423                 } _rt;
424
425                 /* SIGCHLD */
426                 struct {
427                         pid_t _pid;             /* which child */
428                         uid_t _uid;             /* sender's uid */
429                         int _status;            /* exit code */
430                         target_clock_t _utime;
431                         target_clock_t _stime;
432                 } _sigchld;
433
434                 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
435                 struct {
436                         target_ulong _addr; /* faulting insn/memory ref. */
437                 } _sigfault;
438
439                 /* SIGPOLL */
440                 struct {
441                         int _band;      /* POLL_IN, POLL_OUT, POLL_MSG */
442                         int _fd;
443                 } _sigpoll;
444         } _sifields;
445 } target_siginfo_t;
446
447 /*
448  * si_code values
449  * Digital reserves positive values for kernel-generated signals.
450  */
451 #define TARGET_SI_USER          0       /* sent by kill, sigsend, raise */
452 #define TARGET_SI_KERNEL        0x80    /* sent by the kernel from somewhere */
453 #define TARGET_SI_QUEUE -1              /* sent by sigqueue */
454 #define TARGET_SI_TIMER -2              /* sent by timer expiration */
455 #define TARGET_SI_MESGQ -3              /* sent by real time mesq state change */
456 #define TARGET_SI_ASYNCIO       -4      /* sent by AIO completion */
457 #define TARGET_SI_SIGIO -5              /* sent by queued SIGIO */
458
459 /*
460  * SIGILL si_codes
461  */
462 #define TARGET_ILL_ILLOPN       (2)     /* illegal operand */
463
464 /*
465  * SIGFPE si_codes
466  */
467 #define TARGET_FPE_INTDIV      (1)  /* integer divide by zero */
468 #define TARGET_FPE_INTOVF      (2)  /* integer overflow */
469 #define TARGET_FPE_FLTDIV      (3)  /* floating point divide by zero */
470 #define TARGET_FPE_FLTOVF      (4)  /* floating point overflow */
471 #define TARGET_FPE_FLTUND      (5)  /* floating point underflow */
472 #define TARGET_FPE_FLTRES      (6)  /* floating point inexact result */
473 #define TARGET_FPE_FLTINV      (7)  /* floating point invalid operation */
474 #define TARGET_FPE_FLTSUB      (8)  /* subscript out of range */
475 #define TARGET_NSIGFPE         8
476
477 /*
478  * SIGSEGV si_codes
479  */
480 #define TARGET_SEGV_MAPERR     (1)  /* address not mapped to object */
481 #define TARGET_SEGV_ACCERR     (2)  /* invalid permissions for mapped object */
482
483 /*
484  * SIGTRAP si_codes
485  */
486 #define TARGET_TRAP_BRKPT       (1)     /* process breakpoint */
487 #define TARGET_TRAP_TRACE       (2)     /* process trace trap */
488
489 /* default linux values for the selectors */
490 #define __USER_CS       (0x23)
491 #define __USER_DS       (0x2B)
492
493 struct target_pt_regs {
494         long ebx;
495         long ecx;
496         long edx;
497         long esi;
498         long edi;
499         long ebp;
500         long eax;
501         int  xds;
502         int  xes;
503         long orig_eax;
504         long eip;
505         int  xcs;
506         long eflags;
507         long esp;
508         int  xss;
509 };
510
511 /* ioctls */
512
513 /*
514  * The following is for compatibility across the various Linux
515  * platforms.  The i386 ioctl numbering scheme doesn't really enforce
516  * a type field.  De facto, however, the top 8 bits of the lower 16
517  * bits are indeed used as a type field, so we might just as well make
518  * this explicit here.  Please be sure to use the decoding macros
519  * below from now on.
520  */
521 #define TARGET_IOC_NRBITS       8
522 #define TARGET_IOC_TYPEBITS     8
523 #define TARGET_IOC_SIZEBITS     14
524 #define TARGET_IOC_DIRBITS      2
525
526 #define TARGET_IOC_NRMASK       ((1 << TARGET_IOC_NRBITS)-1)
527 #define TARGET_IOC_TYPEMASK     ((1 << TARGET_IOC_TYPEBITS)-1)
528 #define TARGET_IOC_SIZEMASK     ((1 << TARGET_IOC_SIZEBITS)-1)
529 #define TARGET_IOC_DIRMASK      ((1 << TARGET_IOC_DIRBITS)-1)
530
531 #define TARGET_IOC_NRSHIFT      0
532 #define TARGET_IOC_TYPESHIFT    (TARGET_IOC_NRSHIFT+TARGET_IOC_NRBITS)
533 #define TARGET_IOC_SIZESHIFT    (TARGET_IOC_TYPESHIFT+TARGET_IOC_TYPEBITS)
534 #define TARGET_IOC_DIRSHIFT     (TARGET_IOC_SIZESHIFT+TARGET_IOC_SIZEBITS)
535
536 /*
537  * Direction bits.
538  */
539 #define TARGET_IOC_NONE 0U
540 #define TARGET_IOC_WRITE        1U
541 #define TARGET_IOC_READ 2U
542
543 #define TARGET_IOC(dir,type,nr,size) \
544         (((dir)  << TARGET_IOC_DIRSHIFT) | \
545          ((type) << TARGET_IOC_TYPESHIFT) | \
546          ((nr)   << TARGET_IOC_NRSHIFT) | \
547          ((size) << TARGET_IOC_SIZESHIFT))
548
549 /* used to create numbers */
550 #define TARGET_IO(type,nr)              TARGET_IOC(TARGET_IOC_NONE,(type),(nr),0)
551 #define TARGET_IOR(type,nr,size)        TARGET_IOC(TARGET_IOC_READ,(type),(nr),sizeof(size))
552 #define TARGET_IOW(type,nr,size)        TARGET_IOC(TARGET_IOC_WRITE,(type),(nr),sizeof(size))
553 #define TARGET_IOWR(type,nr,size)       TARGET_IOC(TARGET_IOC_READ|TARGET_IOC_WRITE,(type),(nr),sizeof(size))
554
555 /* 0x54 is just a magic number to make these relatively unique ('T') */
556
557 #define TARGET_TCGETS           0x5401
558 #define TARGET_TCSETS           0x5402
559 #define TARGET_TCSETSW          0x5403
560 #define TARGET_TCSETSF          0x5404
561 #define TARGET_TCGETA           0x5405
562 #define TARGET_TCSETA           0x5406
563 #define TARGET_TCSETAW          0x5407
564 #define TARGET_TCSETAF          0x5408
565 #define TARGET_TCSBRK           0x5409
566 #define TARGET_TCXONC           0x540A
567 #define TARGET_TCFLSH           0x540B
568 #define TARGET_TIOCEXCL 0x540C
569 #define TARGET_TIOCNXCL 0x540D
570 #define TARGET_TIOCSCTTY        0x540E
571 #define TARGET_TIOCGPGRP        0x540F
572 #define TARGET_TIOCSPGRP        0x5410
573 #define TARGET_TIOCOUTQ 0x5411
574 #define TARGET_TIOCSTI          0x5412
575 #define TARGET_TIOCGWINSZ       0x5413
576 #define TARGET_TIOCSWINSZ       0x5414
577 #define TARGET_TIOCMGET 0x5415
578 #define TARGET_TIOCMBIS 0x5416
579 #define TARGET_TIOCMBIC 0x5417
580 #define TARGET_TIOCMSET 0x5418
581 #define TARGET_TIOCGSOFTCAR     0x5419
582 #define TARGET_TIOCSSOFTCAR     0x541A
583 #define TARGET_FIONREAD 0x541B
584 #define TARGET_TIOCINQ          FIONREAD
585 #define TARGET_TIOCLINUX        0x541C
586 #define TARGET_TIOCCONS 0x541D
587 #define TARGET_TIOCGSERIAL      0x541E
588 #define TARGET_TIOCSSERIAL      0x541F
589 #define TARGET_TIOCPKT          0x5420
590 #define TARGET_FIONBIO          0x5421
591 #define TARGET_TIOCNOTTY        0x5422
592 #define TARGET_TIOCSETD 0x5423
593 #define TARGET_TIOCGETD 0x5424
594 #define TARGET_TCSBRKP          0x5425  /* Needed for POSIX tcsendbreak() */
595 #define TARGET_TIOCTTYGSTRUCT   0x5426  /* For debugging only */
596 #define TARGET_TIOCSBRK 0x5427  /* BSD compatibility */
597 #define TARGET_TIOCCBRK 0x5428  /* BSD compatibility */
598 #define TARGET_TIOCGSID 0x5429  /* Return the session ID of FD */
599 #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
600 #define TARGET_TIOCSPTLCK       TARGET_IOW('T',0x31, int)  /* Lock/unlock Pty */
601
602 #define TARGET_FIONCLEX 0x5450  /* these numbers need to be adjusted. */
603 #define TARGET_FIOCLEX          0x5451
604 #define TARGET_FIOASYNC 0x5452
605 #define TARGET_TIOCSERCONFIG    0x5453
606 #define TARGET_TIOCSERGWILD     0x5454
607 #define TARGET_TIOCSERSWILD     0x5455
608 #define TARGET_TIOCGLCKTRMIOS   0x5456
609 #define TARGET_TIOCSLCKTRMIOS   0x5457
610 #define TARGET_TIOCSERGSTRUCT   0x5458 /* For debugging only */
611 #define TARGET_TIOCSERGETLSR   0x5459 /* Get line status register */
612 #define TARGET_TIOCSERGETMULTI 0x545A /* Get multiport config  */
613 #define TARGET_TIOCSERSETMULTI 0x545B /* Set multiport config */
614
615 #define TARGET_TIOCMIWAIT       0x545C  /* wait for a change on serial input line(s) */
616 #define TARGET_TIOCGICOUNT      0x545D  /* read serial port inline interrupt counts */
617 #define TARGET_TIOCGHAYESESP   0x545E  /* Get Hayes ESP configuration */
618 #define TARGET_TIOCSHAYESESP   0x545F  /* Set Hayes ESP configuration */
619
620 /* Used for packet mode */
621 #define TARGET_TIOCPKT_DATA              0
622 #define TARGET_TIOCPKT_FLUSHREAD         1
623 #define TARGET_TIOCPKT_FLUSHWRITE        2
624 #define TARGET_TIOCPKT_STOP              4
625 #define TARGET_TIOCPKT_START             8
626 #define TARGET_TIOCPKT_NOSTOP           16
627 #define TARGET_TIOCPKT_DOSTOP           32
628
629 #define TARGET_TIOCSER_TEMT    0x01     /* Transmitter physically empty */
630
631 /* from asm/termbits.h */
632
633 #define TARGET_NCCS 19
634
635 struct target_termios {
636     unsigned int c_iflag;               /* input mode flags */
637     unsigned int c_oflag;               /* output mode flags */
638     unsigned int c_cflag;               /* control mode flags */
639     unsigned int c_lflag;               /* local mode flags */
640     unsigned char c_line;                    /* line discipline */
641     unsigned char c_cc[TARGET_NCCS];                /* control characters */
642 };
643
644 /* c_iflag bits */
645 #define TARGET_IGNBRK  0000001
646 #define TARGET_BRKINT  0000002
647 #define TARGET_IGNPAR  0000004
648 #define TARGET_PARMRK  0000010
649 #define TARGET_INPCK   0000020
650 #define TARGET_ISTRIP  0000040
651 #define TARGET_INLCR   0000100
652 #define TARGET_IGNCR   0000200
653 #define TARGET_ICRNL   0000400
654 #define TARGET_IUCLC   0001000
655 #define TARGET_IXON    0002000
656 #define TARGET_IXANY   0004000
657 #define TARGET_IXOFF   0010000
658 #define TARGET_IMAXBEL 0020000
659
660 /* c_oflag bits */
661 #define TARGET_OPOST   0000001
662 #define TARGET_OLCUC   0000002
663 #define TARGET_ONLCR   0000004
664 #define TARGET_OCRNL   0000010
665 #define TARGET_ONOCR   0000020
666 #define TARGET_ONLRET  0000040
667 #define TARGET_OFILL   0000100
668 #define TARGET_OFDEL   0000200
669 #define TARGET_NLDLY   0000400
670 #define   TARGET_NL0   0000000
671 #define   TARGET_NL1   0000400
672 #define TARGET_CRDLY   0003000
673 #define   TARGET_CR0   0000000
674 #define   TARGET_CR1   0001000
675 #define   TARGET_CR2   0002000
676 #define   TARGET_CR3   0003000
677 #define TARGET_TABDLY  0014000
678 #define   TARGET_TAB0  0000000
679 #define   TARGET_TAB1  0004000
680 #define   TARGET_TAB2  0010000
681 #define   TARGET_TAB3  0014000
682 #define   TARGET_XTABS 0014000
683 #define TARGET_BSDLY   0020000
684 #define   TARGET_BS0   0000000
685 #define   TARGET_BS1   0020000
686 #define TARGET_VTDLY   0040000
687 #define   TARGET_VT0   0000000
688 #define   TARGET_VT1   0040000
689 #define TARGET_FFDLY   0100000
690 #define   TARGET_FF0   0000000
691 #define   TARGET_FF1   0100000
692
693 /* c_cflag bit meaning */
694 #define TARGET_CBAUD   0010017
695 #define  TARGET_B0     0000000         /* hang up */
696 #define  TARGET_B50    0000001
697 #define  TARGET_B75    0000002
698 #define  TARGET_B110   0000003
699 #define  TARGET_B134   0000004
700 #define  TARGET_B150   0000005
701 #define  TARGET_B200   0000006
702 #define  TARGET_B300   0000007
703 #define  TARGET_B600   0000010
704 #define  TARGET_B1200  0000011
705 #define  TARGET_B1800  0000012
706 #define  TARGET_B2400  0000013
707 #define  TARGET_B4800  0000014
708 #define  TARGET_B9600  0000015
709 #define  TARGET_B19200 0000016
710 #define  TARGET_B38400 0000017
711 #define TARGET_EXTA B19200
712 #define TARGET_EXTB B38400
713 #define TARGET_CSIZE   0000060
714 #define   TARGET_CS5   0000000
715 #define   TARGET_CS6   0000020
716 #define   TARGET_CS7   0000040
717 #define   TARGET_CS8   0000060
718 #define TARGET_CSTOPB  0000100
719 #define TARGET_CREAD   0000200
720 #define TARGET_PARENB  0000400
721 #define TARGET_PARODD  0001000
722 #define TARGET_HUPCL   0002000
723 #define TARGET_CLOCAL  0004000
724 #define TARGET_CBAUDEX 0010000
725 #define  TARGET_B57600  0010001
726 #define  TARGET_B115200 0010002
727 #define  TARGET_B230400 0010003
728 #define  TARGET_B460800 0010004
729 #define TARGET_CIBAUD    002003600000  /* input baud rate (not used) */
730 #define TARGET_CRTSCTS   020000000000          /* flow control */
731
732 /* c_lflag bits */
733 #define TARGET_ISIG    0000001
734 #define TARGET_ICANON  0000002
735 #define TARGET_XCASE   0000004
736 #define TARGET_ECHO    0000010
737 #define TARGET_ECHOE   0000020
738 #define TARGET_ECHOK   0000040
739 #define TARGET_ECHONL  0000100
740 #define TARGET_NOFLSH  0000200
741 #define TARGET_TOSTOP  0000400
742 #define TARGET_ECHOCTL 0001000
743 #define TARGET_ECHOPRT 0002000
744 #define TARGET_ECHOKE  0004000
745 #define TARGET_FLUSHO  0010000
746 #define TARGET_PENDIN  0040000
747 #define TARGET_IEXTEN  0100000
748
749 /* c_cc character offsets */
750 #define TARGET_VINTR    0
751 #define TARGET_VQUIT    1
752 #define TARGET_VERASE   2
753 #define TARGET_VKILL    3
754 #define TARGET_VEOF     4
755 #define TARGET_VTIME    5
756 #define TARGET_VMIN     6
757 #define TARGET_VSWTC    7
758 #define TARGET_VSTART   8
759 #define TARGET_VSTOP    9
760 #define TARGET_VSUSP    10
761 #define TARGET_VEOL     11
762 #define TARGET_VREPRINT 12
763 #define TARGET_VDISCARD 13
764 #define TARGET_VWERASE  14
765 #define TARGET_VLNEXT   15
766 #define TARGET_VEOL2    16
767
768 #define TARGET_LDT_ENTRIES      8192
769 #define TARGET_LDT_ENTRY_SIZE   8
770
771 #define TARGET_GDT_ENTRY_TLS_ENTRIES   3
772 #define TARGET_GDT_ENTRY_TLS_MIN       6
773 #define TARGET_GDT_ENTRY_TLS_MAX       (TARGET_GDT_ENTRY_TLS_MIN + TARGET_GDT_ENTRY_TLS_ENTRIES - 1)
774
775 struct target_modify_ldt_ldt_s {
776     unsigned int  entry_number;
777     target_ulong base_addr;
778     unsigned int limit;
779     unsigned int flags;
780 };
781
782
783 #define TARGET_MAP_SHARED       0x01            /* Share changes */
784 #define TARGET_MAP_PRIVATE      0x02            /* Changes are private */
785 #define TARGET_MAP_TYPE 0x0f            /* Mask for type of mapping */
786 #define TARGET_MAP_FIXED        0x10            /* Interpret addr exactly */
787 #define TARGET_MAP_ANONYMOUS    0x20            /* don't use a file */
788
789 #define TARGET_MAP_GROWSDOWN    0x0100          /* stack-like segment */
790 #define TARGET_MAP_DENYWRITE    0x0800          /* ETXTBSY */
791 #define TARGET_MAP_EXECUTABLE   0x1000          /* mark it as an executable */
792 #define TARGET_MAP_LOCKED       0x2000          /* pages are locked */
793 #define TARGET_MAP_NORESERVE    0x4000          /* don't check for reservations */
794
795 /* vm86 defines */
796
797 #define TARGET_BIOSSEG          0x0f000
798
799 #define TARGET_CPU_086          0
800 #define TARGET_CPU_186          1
801 #define TARGET_CPU_286          2
802 #define TARGET_CPU_386          3
803 #define TARGET_CPU_486          4
804 #define TARGET_CPU_586          5
805
806 #define TARGET_VM86_SIGNAL      0       /* return due to signal */
807 #define TARGET_VM86_UNKNOWN     1       /* unhandled GP fault - IO-instruction or similar */
808 #define TARGET_VM86_INTx        2       /* int3/int x instruction (ARG = x) */
809 #define TARGET_VM86_STI 3       /* sti/popf/iret instruction enabled virtual interrupts */
810
811 /*
812  * Additional return values when invoking new vm86()
813  */
814 #define TARGET_VM86_PICRETURN   4       /* return due to pending PIC request */
815 #define TARGET_VM86_TRAP        6       /* return due to DOS-debugger request */
816
817 /*
818  * function codes when invoking new vm86()
819  */
820 #define TARGET_VM86_PLUS_INSTALL_CHECK  0
821 #define TARGET_VM86_ENTER               1
822 #define TARGET_VM86_ENTER_NO_BYPASS     2
823 #define TARGET_VM86_REQUEST_IRQ 3
824 #define TARGET_VM86_FREE_IRQ            4
825 #define TARGET_VM86_GET_IRQ_BITS        5
826 #define TARGET_VM86_GET_AND_RESET_IRQ   6
827
828 /*
829  * This is the stack-layout seen by the user space program when we have
830  * done a translation of "SAVE_ALL" from vm86 mode. The real kernel layout
831  * is 'kernel_vm86_regs' (see below).
832  */
833
834 struct target_vm86_regs {
835 /*
836  * normal regs, with special meaning for the segment descriptors..
837  */
838         target_long ebx;
839         target_long ecx;
840         target_long edx;
841         target_long esi;
842         target_long edi;
843         target_long ebp;
844         target_long eax;
845         target_long __null_ds;
846         target_long __null_es;
847         target_long __null_fs;
848         target_long __null_gs;
849         target_long orig_eax;
850         target_long eip;
851         unsigned short cs, __csh;
852         target_long eflags;
853         target_long esp;
854         unsigned short ss, __ssh;
855 /*
856  * these are specific to v86 mode:
857  */
858         unsigned short es, __esh;
859         unsigned short ds, __dsh;
860         unsigned short fs, __fsh;
861         unsigned short gs, __gsh;
862 };
863
864 struct target_revectored_struct {
865         target_ulong __map[8];                  /* 256 bits */
866 };
867
868 struct target_vm86_struct {
869         struct target_vm86_regs regs;
870         target_ulong flags;
871         target_ulong screen_bitmap;
872         target_ulong cpu_type;
873         struct target_revectored_struct int_revectored;
874         struct target_revectored_struct int21_revectored;
875 };
876
877 /*
878  * flags masks
879  */
880 #define TARGET_VM86_SCREEN_BITMAP       0x0001
881
882 struct target_vm86plus_info_struct {
883         target_ulong flags;
884 #define TARGET_force_return_for_pic (1 << 0)
885 #define TARGET_vm86dbg_active       (1 << 1)  /* for debugger */
886 #define TARGET_vm86dbg_TFpendig     (1 << 2)  /* for debugger */
887 #define TARGET_is_vm86pus           (1 << 31) /* for vm86 internal use */
888         unsigned char vm86dbg_intxxtab[32];   /* for debugger */
889 };
890
891 struct target_vm86plus_struct {
892         struct target_vm86_regs regs;
893         target_ulong flags;
894         target_ulong screen_bitmap;
895         target_ulong cpu_type;
896         struct target_revectored_struct int_revectored;
897         struct target_revectored_struct int21_revectored;
898         struct target_vm86plus_info_struct vm86plus;
899 };
900
901 /* ipcs */
902
903 #define TARGET_SEMOP           1
904 #define TARGET_SEMGET          2
905 #define TARGET_SEMCTL          3 
906 #define TARGET_MSGSND          11 
907 #define TARGET_MSGRCV          12
908 #define TARGET_MSGGET          13
909 #define TARGET_MSGCTL          14
910 #define TARGET_SHMAT           21
911 #define TARGET_SHMDT           22
912 #define TARGET_SHMGET          23
913 #define TARGET_SHMCTL          24
914
915 struct target_msgbuf {
916         int mtype;
917         char mtext[1];
918 };
919
920 struct target_ipc_kludge {
921         unsigned int    msgp;   /* Really (struct msgbuf *) */
922         int msgtyp;
923 };      
924
925 struct alpha_msgbuf {
926         long    mtype;
927         char    mtext[4096];
928 };
929
930 struct target_ipc_perm {
931         int     key;
932         unsigned short  uid;
933         unsigned short  gid;
934         unsigned short  cuid;
935         unsigned short  cgid;
936         unsigned short  mode;
937         unsigned short  seq;
938 };
939
940 struct target_msqid_ds {
941         struct target_ipc_perm  msg_perm;
942         unsigned int            msg_first;      /* really struct target_msg* */
943         unsigned int            msg_last;       /* really struct target_msg* */
944         unsigned int            msg_stime;      /* really target_time_t */
945         unsigned int            msg_rtime;      /* really target_time_t */
946         unsigned int            msg_ctime;      /* really target_time_t */
947         unsigned int            wwait;          /* really struct wait_queue* */
948         unsigned int            rwait;          /* really struct wait_queue* */
949         unsigned short          msg_cbytes;
950         unsigned short          msg_qnum;
951         unsigned short          msg_qbytes;
952         unsigned short          msg_lspid;
953         unsigned short          msg_lrpid;
954 };
955
956 struct target_shmid_ds {
957         struct target_ipc_perm  shm_perm;
958         int                     shm_segsz;
959         unsigned int            shm_atime;      /* really target_time_t */
960         unsigned int            shm_dtime;      /* really target_time_t */
961         unsigned int            shm_ctime;      /* really target_time_t */
962         unsigned short          shm_cpid;
963         unsigned short          shm_lpid;
964         short                   shm_nattch;
965         unsigned short          shm_npages;
966         unsigned long           *shm_pages;
967         void                    *attaches;      /* really struct shm_desc * */
968 };
969
970 #define TARGET_IPC_RMID 0
971 #define TARGET_IPC_SET  1
972 #define TARGET_IPC_STAT 2
973
974 union target_semun {
975     int val;
976     unsigned int buf;   /* really struct semid_ds * */
977     unsigned int array; /* really unsigned short * */
978     unsigned int __buf; /* really struct seminfo * */
979     unsigned int __pad; /* really void* */
980 };
981
982 #define TARGET_F_DUPFD         0       /* dup */
983 #define TARGET_F_GETFD         1       /* get close_on_exec */
984 #define TARGET_F_SETFD         2       /* set/clear close_on_exec */
985 #define TARGET_F_GETFL         3       /* get file->f_flags */
986 #define TARGET_F_SETFL         4       /* set file->f_flags */
987 #define TARGET_F_GETLK         5
988 #define TARGET_F_SETLK         6
989 #define TARGET_F_SETLKW        7
990
991 #define TARGET_F_SETOWN        8       /*  for sockets. */
992 #define TARGET_F_GETOWN        9       /*  for sockets. */
993 #define TARGET_F_SETSIG        10      /*  for sockets. */
994 #define TARGET_F_GETSIG        11      /*  for sockets. */
995
996 #define TARGET_F_GETLK64       12      /*  using 'struct flock64' */
997 #define TARGET_F_SETLK64       13
998 #define TARGET_F_SETLKW64      14
999
1000 struct target_flock {
1001         short l_type;
1002         short l_whence;
1003         target_ulong l_start;
1004         target_ulong l_len;
1005         int l_pid;
1006 };
1007
1008 struct target_flock64 {
1009         short  l_type;
1010         short  l_whence;
1011         unsigned long long l_start;
1012         unsigned long long l_len;
1013         int  l_pid;
1014 };
1015
1016 /* soundcard defines (XXX: move them to generic file syscall_defs.h) */
1017
1018 #define TARGET_SNDCTL_COPR_HALT           0xc0144307
1019 #define TARGET_SNDCTL_COPR_LOAD           0xcfb04301
1020 #define TARGET_SNDCTL_COPR_RCODE          0xc0144303
1021 #define TARGET_SNDCTL_COPR_RCVMSG         0x8fa44309
1022 #define TARGET_SNDCTL_COPR_RDATA          0xc0144302
1023 #define TARGET_SNDCTL_COPR_RESET          0x00004300
1024 #define TARGET_SNDCTL_COPR_RUN            0xc0144306
1025 #define TARGET_SNDCTL_COPR_SENDMSG        0xcfa44308
1026 #define TARGET_SNDCTL_COPR_WCODE          0x40144305
1027 #define TARGET_SNDCTL_COPR_WDATA          0x40144304
1028 #define TARGET_SNDCTL_DSP_CHANNELS        0xc0045006
1029 #define TARGET_SNDCTL_DSP_GETBLKSIZE      0xc0045004
1030 #define TARGET_SNDCTL_DSP_GETCAPS         0x8004500f
1031 #define TARGET_SNDCTL_DSP_GETFMTS         0x8004500b
1032 #define TARGET_SNDCTL_DSP_GETIPTR         0x800c5011
1033 #define TARGET_SNDCTL_DSP_GETISPACE       0x8010500d
1034 #define TARGET_SNDCTL_DSP_GETOPTR         0x800c5012
1035 #define TARGET_SNDCTL_DSP_GETOSPACE       0x8010500c
1036 #define TARGET_SNDCTL_DSP_GETTRIGGER      0x80045010
1037 #define TARGET_SNDCTL_DSP_MAPINBUF        0x80085013
1038 #define TARGET_SNDCTL_DSP_MAPOUTBUF       0x80085014
1039 #define TARGET_SNDCTL_DSP_NONBLOCK        0x0000500e
1040 #define TARGET_SNDCTL_DSP_POST            0x00005008
1041 #define TARGET_SNDCTL_DSP_RESET           0x00005000
1042 #define TARGET_SNDCTL_DSP_SAMPLESIZE      0xc0045005
1043 #define TARGET_SNDCTL_DSP_SETDUPLEX       0x00005016
1044 #define TARGET_SNDCTL_DSP_SETFMT          0xc0045005
1045 #define TARGET_SNDCTL_DSP_SETFRAGMENT     0xc004500a
1046 #define TARGET_SNDCTL_DSP_SETSYNCRO       0x00005015
1047 #define TARGET_SNDCTL_DSP_SETTRIGGER      0x40045010
1048 #define TARGET_SNDCTL_DSP_SPEED           0xc0045002
1049 #define TARGET_SNDCTL_DSP_STEREO          0xc0045003
1050 #define TARGET_SNDCTL_DSP_SUBDIVIDE       0xc0045009
1051 #define TARGET_SNDCTL_DSP_SYNC            0x00005001
1052 #define TARGET_SNDCTL_FM_4OP_ENABLE       0x4004510f
1053 #define TARGET_SNDCTL_FM_LOAD_INSTR       0x40285107
1054 #define TARGET_SNDCTL_MIDI_INFO           0xc074510c
1055 #define TARGET_SNDCTL_MIDI_MPUCMD         0xc0216d02
1056 #define TARGET_SNDCTL_MIDI_MPUMODE        0xc0046d01
1057 #define TARGET_SNDCTL_MIDI_PRETIME        0xc0046d00
1058 #define TARGET_SNDCTL_PMGR_ACCESS         0xcfb85110
1059 #define TARGET_SNDCTL_PMGR_IFACE          0xcfb85001
1060 #define TARGET_SNDCTL_SEQ_CTRLRATE        0xc0045103
1061 #define TARGET_SNDCTL_SEQ_GETINCOUNT      0x80045105
1062 #define TARGET_SNDCTL_SEQ_GETOUTCOUNT     0x80045104
1063 #define TARGET_SNDCTL_SEQ_NRMIDIS         0x8004510b
1064 #define TARGET_SNDCTL_SEQ_NRSYNTHS        0x8004510a
1065 #define TARGET_SNDCTL_SEQ_OUTOFBAND       0x40085112
1066 #define TARGET_SNDCTL_SEQ_PANIC           0x00005111
1067 #define TARGET_SNDCTL_SEQ_PERCMODE        0x40045106
1068 #define TARGET_SNDCTL_SEQ_RESET           0x00005100
1069 #define TARGET_SNDCTL_SEQ_RESETSAMPLES    0x40045109
1070 #define TARGET_SNDCTL_SEQ_SYNC            0x00005101
1071 #define TARGET_SNDCTL_SEQ_TESTMIDI        0x40045108
1072 #define TARGET_SNDCTL_SEQ_THRESHOLD       0x4004510d
1073 #define TARGET_SNDCTL_SEQ_TRESHOLD        0x4004510d
1074 #define TARGET_SNDCTL_SYNTH_INFO          0xc08c5102
1075 #define TARGET_SNDCTL_SYNTH_MEMAVL        0xc004510e
1076 #define TARGET_SNDCTL_TMR_CONTINUE        0x00005404
1077 #define TARGET_SNDCTL_TMR_METRONOME       0x40045407
1078 #define TARGET_SNDCTL_TMR_SELECT          0x40045408
1079 #define TARGET_SNDCTL_TMR_SOURCE          0xc0045406
1080 #define TARGET_SNDCTL_TMR_START           0x00005402
1081 #define TARGET_SNDCTL_TMR_STOP            0x00005403
1082 #define TARGET_SNDCTL_TMR_TEMPO           0xc0045405
1083 #define TARGET_SNDCTL_TMR_TIMEBASE        0xc0045401
1084 #define TARGET_SOUND_PCM_WRITE_FILTER     0xc0045007
1085 #define TARGET_SOUND_PCM_READ_RATE        0x80045002
1086 #define TARGET_SOUND_PCM_READ_CHANNELS    0x80045006
1087 #define TARGET_SOUND_PCM_READ_BITS        0x80045005
1088 #define TARGET_SOUND_PCM_READ_FILTER      0x80045007
1089 #define TARGET_SOUND_MIXER_INFO           0x80304d65
1090 #define TARGET_SOUND_MIXER_ACCESS         0xc0804d66
1091 #define TARGET_SOUND_MIXER_PRIVATE1       0xc0044d6f
1092 #define TARGET_SOUND_MIXER_PRIVATE2       0xc0044d70
1093 #define TARGET_SOUND_MIXER_PRIVATE3       0xc0044d71
1094 #define TARGET_SOUND_MIXER_PRIVATE4       0xc0044d72
1095 #define TARGET_SOUND_MIXER_PRIVATE5       0xc0044d73
1096 #define TARGET_SOUND_MIXER_READ_VOLUME    0x80044d00
1097 #define TARGET_SOUND_MIXER_READ_BASS      0x80044d01
1098 #define TARGET_SOUND_MIXER_READ_TREBLE    0x80044d02
1099 #define TARGET_SOUND_MIXER_READ_SYNTH     0x80044d03
1100 #define TARGET_SOUND_MIXER_READ_PCM       0x80044d04
1101 #define TARGET_SOUND_MIXER_READ_SPEAKER   0x80044d05
1102 #define TARGET_SOUND_MIXER_READ_LINE      0x80044d06
1103 #define TARGET_SOUND_MIXER_READ_MIC       0x80044d07
1104 #define TARGET_SOUND_MIXER_READ_CD        0x80044d08
1105 #define TARGET_SOUND_MIXER_READ_IMIX      0x80044d09
1106 #define TARGET_SOUND_MIXER_READ_ALTPCM    0x80044d0a
1107 #define TARGET_SOUND_MIXER_READ_RECLEV    0x80044d0b
1108 #define TARGET_SOUND_MIXER_READ_IGAIN     0x80044d0c
1109 #define TARGET_SOUND_MIXER_READ_OGAIN     0x80044d0d
1110 #define TARGET_SOUND_MIXER_READ_LINE1     0x80044d0e
1111 #define TARGET_SOUND_MIXER_READ_LINE2     0x80044d0f
1112 #define TARGET_SOUND_MIXER_READ_LINE3     0x80044d10
1113 #define TARGET_SOUND_MIXER_READ_MUTE      0x80044d1f
1114 #define TARGET_SOUND_MIXER_READ_ENHANCE   0x80044d1f
1115 #define TARGET_SOUND_MIXER_READ_LOUD      0x80044d1f
1116 #define TARGET_SOUND_MIXER_READ_RECSRC    0x80044dff
1117 #define TARGET_SOUND_MIXER_READ_DEVMASK   0x80044dfe
1118 #define TARGET_SOUND_MIXER_READ_RECMASK   0x80044dfd
1119 #define TARGET_SOUND_MIXER_READ_STEREODEVS  0x80044dfb
1120 #define TARGET_SOUND_MIXER_READ_CAPS      0x80044dfc
1121 #define TARGET_SOUND_MIXER_WRITE_VOLUME   0xc0044d00
1122 #define TARGET_SOUND_MIXER_WRITE_BASS     0xc0044d01
1123 #define TARGET_SOUND_MIXER_WRITE_TREBLE   0xc0044d02
1124 #define TARGET_SOUND_MIXER_WRITE_SYNTH    0xc0044d03
1125 #define TARGET_SOUND_MIXER_WRITE_PCM      0xc0044d04
1126 #define TARGET_SOUND_MIXER_WRITE_SPEAKER  0xc0044d05
1127 #define TARGET_SOUND_MIXER_WRITE_LINE     0xc0044d06
1128 #define TARGET_SOUND_MIXER_WRITE_MIC      0xc0044d07
1129 #define TARGET_SOUND_MIXER_WRITE_CD       0xc0044d08
1130 #define TARGET_SOUND_MIXER_WRITE_IMIX     0xc0044d09
1131 #define TARGET_SOUND_MIXER_WRITE_ALTPCM   0xc0044d0a
1132 #define TARGET_SOUND_MIXER_WRITE_RECLEV   0xc0044d0b
1133 #define TARGET_SOUND_MIXER_WRITE_IGAIN    0xc0044d0c
1134 #define TARGET_SOUND_MIXER_WRITE_OGAIN    0xc0044d0d
1135 #define TARGET_SOUND_MIXER_WRITE_LINE1    0xc0044d0e
1136 #define TARGET_SOUND_MIXER_WRITE_LINE2    0xc0044d0f
1137 #define TARGET_SOUND_MIXER_WRITE_LINE3    0xc0044d10
1138 #define TARGET_SOUND_MIXER_WRITE_MUTE     0xc0044d1f
1139 #define TARGET_SOUND_MIXER_WRITE_ENHANCE  0xc0044d1f
1140 #define TARGET_SOUND_MIXER_WRITE_LOUD     0xc0044d1f
1141 #define TARGET_SOUND_MIXER_WRITE_RECSRC   0xc0044dff
1142
1143 #define TARGET_VFAT_IOCTL_READDIR_BOTH    0x82187201
1144 #define TARGET_VFAT_IOCTL_READDIR_SHORT   0x82187202
1145
1146 #define TARGET_SIOCATMARK       0x8905