a54064a054a08a5ed5fd0dd4c6f29623bf55823e
[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
241 #define TARGET_SIG_BLOCK          0    /* for blocking signals */
242 #define TARGET_SIG_UNBLOCK        1    /* for unblocking signals */
243 #define TARGET_SIG_SETMASK        2    /* for setting the signal mask */
244
245 struct target_stat {
246         unsigned short st_dev;
247         unsigned short __pad1;
248         unsigned long st_ino;
249         unsigned short st_mode;
250         unsigned short st_nlink;
251         unsigned short st_uid;
252         unsigned short st_gid;
253         unsigned short st_rdev;
254         unsigned short __pad2;
255         unsigned long  st_size;
256         unsigned long  st_blksize;
257         unsigned long  st_blocks;
258         unsigned long  st_atime;
259         unsigned long  __unused1;
260         unsigned long  st_mtime;
261         unsigned long  __unused2;
262         unsigned long  st_ctime;
263         unsigned long  __unused3;
264         unsigned long  __unused4;
265         unsigned long  __unused5;
266 };
267
268 /* This matches struct stat64 in glibc2.1, hence the absolutely
269  * insane amounts of padding around dev_t's.
270  */
271 struct target_stat64 {
272         unsigned short  st_dev;
273         unsigned char   __pad0[10];
274
275 #define STAT64_HAS_BROKEN_ST_INO        1
276         unsigned long   __st_ino;
277
278         unsigned int    st_mode;
279         unsigned int    st_nlink;
280
281         unsigned long   st_uid;
282         unsigned long   st_gid;
283
284         unsigned short  st_rdev;
285         unsigned char   __pad3[10];
286
287         long long       st_size;
288         unsigned long   st_blksize;
289
290         unsigned long   st_blocks;      /* Number 512-byte blocks allocated. */
291         unsigned long   __pad4;         /* future possible st_blocks high bits */
292
293         unsigned long   st_atime;
294         unsigned long   __pad5;
295
296         unsigned long   st_mtime;
297         unsigned long   __pad6;
298
299         unsigned long   st_ctime;
300         unsigned long   __pad7;         /* will be high 32 bits of ctime someday */
301
302         unsigned long long      st_ino;
303 };
304
305 typedef unsigned long old_sigset_t;             /* at least 32 bits */
306
307 struct target_old_sigaction {
308         target_ulong _sa_handler;
309         target_ulong sa_mask;
310         target_ulong sa_flags;
311         void (*sa_restorer)(void);
312 };
313
314 struct target_sigaction {
315         target_ulong _sa_handler;
316         target_sigset_t sa_mask;
317         target_ulong sa_flags;
318         target_ulong sa_restorer;
319 };
320
321 typedef union target_sigval {
322         int sival_int;
323         void *sival_ptr;
324 } target_sigval_t;
325
326 #define TARGET_SI_MAX_SIZE      128
327 #define TARGET_SI_PAD_SIZE      ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3)
328
329 typedef struct target_siginfo {
330         int si_signo;
331         int si_errno;
332         int si_code;
333
334         union {
335                 int _pad[TARGET_SI_PAD_SIZE];
336
337                 /* kill() */
338                 struct {
339                         pid_t _pid;             /* sender's pid */
340                         uid_t _uid;             /* sender's uid */
341                 } _kill;
342
343                 /* POSIX.1b timers */
344                 struct {
345                         unsigned int _timer1;
346                         unsigned int _timer2;
347                 } _timer;
348
349                 /* POSIX.1b signals */
350                 struct {
351                         pid_t _pid;             /* sender's pid */
352                         uid_t _uid;             /* sender's uid */
353                         sigval_t _sigval;
354                 } _rt;
355
356                 /* SIGCHLD */
357                 struct {
358                         pid_t _pid;             /* which child */
359                         uid_t _uid;             /* sender's uid */
360                         int _status;            /* exit code */
361                         clock_t _utime;
362                         clock_t _stime;
363                 } _sigchld;
364
365                 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
366                 struct {
367                         void *_addr; /* faulting insn/memory ref. */
368                 } _sigfault;
369
370                 /* SIGPOLL */
371                 struct {
372                         int _band;      /* POLL_IN, POLL_OUT, POLL_MSG */
373                         int _fd;
374                 } _sigpoll;
375         } _sifields;
376 } target_siginfo_t;
377
378 /* ioctls */
379
380 /*
381  * The following is for compatibility across the various Linux
382  * platforms.  The i386 ioctl numbering scheme doesn't really enforce
383  * a type field.  De facto, however, the top 8 bits of the lower 16
384  * bits are indeed used as a type field, so we might just as well make
385  * this explicit here.  Please be sure to use the decoding macros
386  * below from now on.
387  */
388 #define TARGET_IOC_NRBITS       8
389 #define TARGET_IOC_TYPEBITS     8
390 #define TARGET_IOC_SIZEBITS     14
391 #define TARGET_IOC_DIRBITS      2
392
393 #define TARGET_IOC_NRMASK       ((1 << TARGET_IOC_NRBITS)-1)
394 #define TARGET_IOC_TYPEMASK     ((1 << TARGET_IOC_TYPEBITS)-1)
395 #define TARGET_IOC_SIZEMASK     ((1 << TARGET_IOC_SIZEBITS)-1)
396 #define TARGET_IOC_DIRMASK      ((1 << TARGET_IOC_DIRBITS)-1)
397
398 #define TARGET_IOC_NRSHIFT      0
399 #define TARGET_IOC_TYPESHIFT    (TARGET_IOC_NRSHIFT+TARGET_IOC_NRBITS)
400 #define TARGET_IOC_SIZESHIFT    (TARGET_IOC_TYPESHIFT+TARGET_IOC_TYPEBITS)
401 #define TARGET_IOC_DIRSHIFT     (TARGET_IOC_SIZESHIFT+TARGET_IOC_SIZEBITS)
402
403 /*
404  * Direction bits.
405  */
406 #define TARGET_IOC_NONE 0U
407 #define TARGET_IOC_WRITE        1U
408 #define TARGET_IOC_READ 2U
409
410 #define TARGET_IOC(dir,type,nr,size) \
411         (((dir)  << TARGET_IOC_DIRSHIFT) | \
412          ((type) << TARGET_IOC_TYPESHIFT) | \
413          ((nr)   << TARGET_IOC_NRSHIFT) | \
414          ((size) << TARGET_IOC_SIZESHIFT))
415
416 /* used to create numbers */
417 #define TARGET_IO(type,nr)              TARGET_IOC(TARGET_IOC_NONE,(type),(nr),0)
418 #define TARGET_IOR(type,nr,size)        TARGET_IOC(TARGET_IOC_READ,(type),(nr),sizeof(size))
419 #define TARGET_IOW(type,nr,size)        TARGET_IOC(TARGET_IOC_WRITE,(type),(nr),sizeof(size))
420 #define TARGET_IOWR(type,nr,size)       TARGET_IOC(TARGET_IOC_READ|TARGET_IOC_WRITE,(type),(nr),sizeof(size))
421
422 /* 0x54 is just a magic number to make these relatively unique ('T') */
423
424 #define TARGET_TCGETS           0x5401
425 #define TARGET_TCSETS           0x5402
426 #define TARGET_TCSETSW          0x5403
427 #define TARGET_TCSETSF          0x5404
428 #define TARGET_TCGETA           0x5405
429 #define TARGET_TCSETA           0x5406
430 #define TARGET_TCSETAW          0x5407
431 #define TARGET_TCSETAF          0x5408
432 #define TARGET_TCSBRK           0x5409
433 #define TARGET_TCXONC           0x540A
434 #define TARGET_TCFLSH           0x540B
435 #define TARGET_TIOCEXCL 0x540C
436 #define TARGET_TIOCNXCL 0x540D
437 #define TARGET_TIOCSCTTY        0x540E
438 #define TARGET_TIOCGPGRP        0x540F
439 #define TARGET_TIOCSPGRP        0x5410
440 #define TARGET_TIOCOUTQ 0x5411
441 #define TARGET_TIOCSTI          0x5412
442 #define TARGET_TIOCGWINSZ       0x5413
443 #define TARGET_TIOCSWINSZ       0x5414
444 #define TARGET_TIOCMGET 0x5415
445 #define TARGET_TIOCMBIS 0x5416
446 #define TARGET_TIOCMBIC 0x5417
447 #define TARGET_TIOCMSET 0x5418
448 #define TARGET_TIOCGSOFTCAR     0x5419
449 #define TARGET_TIOCSSOFTCAR     0x541A
450 #define TARGET_FIONREAD 0x541B
451 #define TARGET_TIOCINQ          FIONREAD
452 #define TARGET_TIOCLINUX        0x541C
453 #define TARGET_TIOCCONS 0x541D
454 #define TARGET_TIOCGSERIAL      0x541E
455 #define TARGET_TIOCSSERIAL      0x541F
456 #define TARGET_TIOCPKT          0x5420
457 #define TARGET_FIONBIO          0x5421
458 #define TARGET_TIOCNOTTY        0x5422
459 #define TARGET_TIOCSETD 0x5423
460 #define TARGET_TIOCGETD 0x5424
461 #define TARGET_TCSBRKP          0x5425  /* Needed for POSIX tcsendbreak() */
462 #define TARGET_TIOCTTYGSTRUCT   0x5426  /* For debugging only */
463 #define TARGET_TIOCSBRK 0x5427  /* BSD compatibility */
464 #define TARGET_TIOCCBRK 0x5428  /* BSD compatibility */
465 #define TARGET_TIOCGSID 0x5429  /* Return the session ID of FD */
466 #define TARGET_TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
467 #define TARGET_TIOCSPTLCK       _IOW('T',0x31, int)  /* Lock/unlock Pty */
468
469 #define TARGET_FIONCLEX 0x5450  /* these numbers need to be adjusted. */
470 #define TARGET_FIOCLEX          0x5451
471 #define TARGET_FIOASYNC 0x5452
472 #define TARGET_TIOCSERCONFIG    0x5453
473 #define TARGET_TIOCSERGWILD     0x5454
474 #define TARGET_TIOCSERSWILD     0x5455
475 #define TARGET_TIOCGLCKTRMIOS   0x5456
476 #define TARGET_TIOCSLCKTRMIOS   0x5457
477 #define TARGET_TIOCSERGSTRUCT   0x5458 /* For debugging only */
478 #define TARGET_TIOCSERGETLSR   0x5459 /* Get line status register */
479 #define TARGET_TIOCSERGETMULTI 0x545A /* Get multiport config  */
480 #define TARGET_TIOCSERSETMULTI 0x545B /* Set multiport config */
481
482 #define TARGET_TIOCMIWAIT       0x545C  /* wait for a change on serial input line(s) */
483 #define TARGET_TIOCGICOUNT      0x545D  /* read serial port inline interrupt counts */
484 #define TARGET_TIOCGHAYESESP   0x545E  /* Get Hayes ESP configuration */
485 #define TARGET_TIOCSHAYESESP   0x545F  /* Set Hayes ESP configuration */
486
487 /* Used for packet mode */
488 #define TARGET_TIOCPKT_DATA              0
489 #define TARGET_TIOCPKT_FLUSHREAD         1
490 #define TARGET_TIOCPKT_FLUSHWRITE        2
491 #define TARGET_TIOCPKT_STOP              4
492 #define TARGET_TIOCPKT_START             8
493 #define TARGET_TIOCPKT_NOSTOP           16
494 #define TARGET_TIOCPKT_DOSTOP           32
495
496 #define TARGET_TIOCSER_TEMT    0x01     /* Transmitter physically empty */
497
498 /* from asm/termbits.h */
499
500 #define TARGET_NCCS 19
501
502 struct target_termios {
503     unsigned int c_iflag;               /* input mode flags */
504     unsigned int c_oflag;               /* output mode flags */
505     unsigned int c_cflag;               /* control mode flags */
506     unsigned int c_lflag;               /* local mode flags */
507     unsigned char c_line;                    /* line discipline */
508     unsigned char c_cc[TARGET_NCCS];                /* control characters */
509 };
510
511 /* c_iflag bits */
512 #define TARGET_IGNBRK  0000001
513 #define TARGET_BRKINT  0000002
514 #define TARGET_IGNPAR  0000004
515 #define TARGET_PARMRK  0000010
516 #define TARGET_INPCK   0000020
517 #define TARGET_ISTRIP  0000040
518 #define TARGET_INLCR   0000100
519 #define TARGET_IGNCR   0000200
520 #define TARGET_ICRNL   0000400
521 #define TARGET_IUCLC   0001000
522 #define TARGET_IXON    0002000
523 #define TARGET_IXANY   0004000
524 #define TARGET_IXOFF   0010000
525 #define TARGET_IMAXBEL 0020000
526
527 /* c_oflag bits */
528 #define TARGET_OPOST   0000001
529 #define TARGET_OLCUC   0000002
530 #define TARGET_ONLCR   0000004
531 #define TARGET_OCRNL   0000010
532 #define TARGET_ONOCR   0000020
533 #define TARGET_ONLRET  0000040
534 #define TARGET_OFILL   0000100
535 #define TARGET_OFDEL   0000200
536 #define TARGET_NLDLY   0000400
537 #define   TARGET_NL0   0000000
538 #define   TARGET_NL1   0000400
539 #define TARGET_CRDLY   0003000
540 #define   TARGET_CR0   0000000
541 #define   TARGET_CR1   0001000
542 #define   TARGET_CR2   0002000
543 #define   TARGET_CR3   0003000
544 #define TARGET_TABDLY  0014000
545 #define   TARGET_TAB0  0000000
546 #define   TARGET_TAB1  0004000
547 #define   TARGET_TAB2  0010000
548 #define   TARGET_TAB3  0014000
549 #define   TARGET_XTABS 0014000
550 #define TARGET_BSDLY   0020000
551 #define   TARGET_BS0   0000000
552 #define   TARGET_BS1   0020000
553 #define TARGET_VTDLY   0040000
554 #define   TARGET_VT0   0000000
555 #define   TARGET_VT1   0040000
556 #define TARGET_FFDLY   0100000
557 #define   TARGET_FF0   0000000
558 #define   TARGET_FF1   0100000
559
560 /* c_cflag bit meaning */
561 #define TARGET_CBAUD   0010017
562 #define  TARGET_B0     0000000         /* hang up */
563 #define  TARGET_B50    0000001
564 #define  TARGET_B75    0000002
565 #define  TARGET_B110   0000003
566 #define  TARGET_B134   0000004
567 #define  TARGET_B150   0000005
568 #define  TARGET_B200   0000006
569 #define  TARGET_B300   0000007
570 #define  TARGET_B600   0000010
571 #define  TARGET_B1200  0000011
572 #define  TARGET_B1800  0000012
573 #define  TARGET_B2400  0000013
574 #define  TARGET_B4800  0000014
575 #define  TARGET_B9600  0000015
576 #define  TARGET_B19200 0000016
577 #define  TARGET_B38400 0000017
578 #define TARGET_EXTA B19200
579 #define TARGET_EXTB B38400
580 #define TARGET_CSIZE   0000060
581 #define   TARGET_CS5   0000000
582 #define   TARGET_CS6   0000020
583 #define   TARGET_CS7   0000040
584 #define   TARGET_CS8   0000060
585 #define TARGET_CSTOPB  0000100
586 #define TARGET_CREAD   0000200
587 #define TARGET_PARENB  0000400
588 #define TARGET_PARODD  0001000
589 #define TARGET_HUPCL   0002000
590 #define TARGET_CLOCAL  0004000
591 #define TARGET_CBAUDEX 0010000
592 #define  TARGET_B57600  0010001
593 #define  TARGET_B115200 0010002
594 #define  TARGET_B230400 0010003
595 #define  TARGET_B460800 0010004
596 #define TARGET_CIBAUD    002003600000  /* input baud rate (not used) */
597 #define TARGET_CRTSCTS   020000000000          /* flow control */
598
599 /* c_lflag bits */
600 #define TARGET_ISIG    0000001
601 #define TARGET_ICANON  0000002
602 #define TARGET_XCASE   0000004
603 #define TARGET_ECHO    0000010
604 #define TARGET_ECHOE   0000020
605 #define TARGET_ECHOK   0000040
606 #define TARGET_ECHONL  0000100
607 #define TARGET_NOFLSH  0000200
608 #define TARGET_TOSTOP  0000400
609 #define TARGET_ECHOCTL 0001000
610 #define TARGET_ECHOPRT 0002000
611 #define TARGET_ECHOKE  0004000
612 #define TARGET_FLUSHO  0010000
613 #define TARGET_PENDIN  0040000
614 #define TARGET_IEXTEN  0100000
615
616 /* c_cc character offsets */
617 #define TARGET_VINTR    0
618 #define TARGET_VQUIT    1
619 #define TARGET_VERASE   2
620 #define TARGET_VKILL    3
621 #define TARGET_VEOF     4
622 #define TARGET_VTIME    5
623 #define TARGET_VMIN     6
624 #define TARGET_VSWTC    7
625 #define TARGET_VSTART   8
626 #define TARGET_VSTOP    9
627 #define TARGET_VSUSP    10
628 #define TARGET_VEOL     11
629 #define TARGET_VREPRINT 12
630 #define TARGET_VDISCARD 13
631 #define TARGET_VWERASE  14
632 #define TARGET_VLNEXT   15
633 #define TARGET_VEOL2    16
634
635 /* soundcard defines (XXX: move them to generic file syscall_defs.h) */
636
637 #define TARGET_SNDCTL_COPR_HALT           0xc0144307
638 #define TARGET_SNDCTL_COPR_LOAD           0xcfb04301
639 #define TARGET_SNDCTL_COPR_RCODE          0xc0144303
640 #define TARGET_SNDCTL_COPR_RCVMSG         0x8fa44309
641 #define TARGET_SNDCTL_COPR_RDATA          0xc0144302
642 #define TARGET_SNDCTL_COPR_RESET          0x00004300
643 #define TARGET_SNDCTL_COPR_RUN            0xc0144306
644 #define TARGET_SNDCTL_COPR_SENDMSG        0xcfa44308
645 #define TARGET_SNDCTL_COPR_WCODE          0x40144305
646 #define TARGET_SNDCTL_COPR_WDATA          0x40144304
647 #define TARGET_SNDCTL_DSP_CHANNELS        0xc0045006
648 #define TARGET_SNDCTL_DSP_GETBLKSIZE      0xc0045004
649 #define TARGET_SNDCTL_DSP_GETCAPS         0x8004500f
650 #define TARGET_SNDCTL_DSP_GETFMTS         0x8004500b
651 #define TARGET_SNDCTL_DSP_GETIPTR         0x800c5011
652 #define TARGET_SNDCTL_DSP_GETISPACE       0x8010500d
653 #define TARGET_SNDCTL_DSP_GETOPTR         0x800c5012
654 #define TARGET_SNDCTL_DSP_GETOSPACE       0x8010500c
655 #define TARGET_SNDCTL_DSP_GETTRIGGER      0x80045010
656 #define TARGET_SNDCTL_DSP_MAPINBUF        0x80085013
657 #define TARGET_SNDCTL_DSP_MAPOUTBUF       0x80085014
658 #define TARGET_SNDCTL_DSP_NONBLOCK        0x0000500e
659 #define TARGET_SNDCTL_DSP_POST            0x00005008
660 #define TARGET_SNDCTL_DSP_RESET           0x00005000
661 #define TARGET_SNDCTL_DSP_SAMPLESIZE      0xc0045005
662 #define TARGET_SNDCTL_DSP_SETDUPLEX       0x00005016
663 #define TARGET_SNDCTL_DSP_SETFMT          0xc0045005
664 #define TARGET_SNDCTL_DSP_SETFRAGMENT     0xc004500a
665 #define TARGET_SNDCTL_DSP_SETSYNCRO       0x00005015
666 #define TARGET_SNDCTL_DSP_SETTRIGGER      0x40045010
667 #define TARGET_SNDCTL_DSP_SPEED           0xc0045002
668 #define TARGET_SNDCTL_DSP_STEREO          0xc0045003
669 #define TARGET_SNDCTL_DSP_SUBDIVIDE       0xc0045009
670 #define TARGET_SNDCTL_DSP_SYNC            0x00005001
671 #define TARGET_SNDCTL_FM_4OP_ENABLE       0x4004510f
672 #define TARGET_SNDCTL_FM_LOAD_INSTR       0x40285107
673 #define TARGET_SNDCTL_MIDI_INFO           0xc074510c
674 #define TARGET_SNDCTL_MIDI_MPUCMD         0xc0216d02
675 #define TARGET_SNDCTL_MIDI_MPUMODE        0xc0046d01
676 #define TARGET_SNDCTL_MIDI_PRETIME        0xc0046d00
677 #define TARGET_SNDCTL_PMGR_ACCESS         0xcfb85110
678 #define TARGET_SNDCTL_PMGR_IFACE          0xcfb85001
679 #define TARGET_SNDCTL_SEQ_CTRLRATE        0xc0045103
680 #define TARGET_SNDCTL_SEQ_GETINCOUNT      0x80045105
681 #define TARGET_SNDCTL_SEQ_GETOUTCOUNT     0x80045104
682 #define TARGET_SNDCTL_SEQ_NRMIDIS         0x8004510b
683 #define TARGET_SNDCTL_SEQ_NRSYNTHS        0x8004510a
684 #define TARGET_SNDCTL_SEQ_OUTOFBAND       0x40085112
685 #define TARGET_SNDCTL_SEQ_PANIC           0x00005111
686 #define TARGET_SNDCTL_SEQ_PERCMODE        0x40045106
687 #define TARGET_SNDCTL_SEQ_RESET           0x00005100
688 #define TARGET_SNDCTL_SEQ_RESETSAMPLES    0x40045109
689 #define TARGET_SNDCTL_SEQ_SYNC            0x00005101
690 #define TARGET_SNDCTL_SEQ_TESTMIDI        0x40045108
691 #define TARGET_SNDCTL_SEQ_THRESHOLD       0x4004510d
692 #define TARGET_SNDCTL_SEQ_TRESHOLD        0x4004510d
693 #define TARGET_SNDCTL_SYNTH_INFO          0xc08c5102
694 #define TARGET_SNDCTL_SYNTH_MEMAVL        0xc004510e
695 #define TARGET_SNDCTL_TMR_CONTINUE        0x00005404
696 #define TARGET_SNDCTL_TMR_METRONOME       0x40045407
697 #define TARGET_SNDCTL_TMR_SELECT          0x40045408
698 #define TARGET_SNDCTL_TMR_SOURCE          0xc0045406
699 #define TARGET_SNDCTL_TMR_START           0x00005402
700 #define TARGET_SNDCTL_TMR_STOP            0x00005403
701 #define TARGET_SNDCTL_TMR_TEMPO           0xc0045405
702 #define TARGET_SNDCTL_TMR_TIMEBASE        0xc0045401
703 #define TARGET_SOUND_PCM_WRITE_FILTER     0xc0045007
704 #define TARGET_SOUND_PCM_READ_RATE        0x80045002
705 #define TARGET_SOUND_PCM_READ_CHANNELS    0x80045006
706 #define TARGET_SOUND_PCM_READ_BITS        0x80045005
707 #define TARGET_SOUND_PCM_READ_FILTER      0x80045007
708 #define TARGET_SOUND_MIXER_INFO           0x80304d65
709 #define TARGET_SOUND_MIXER_ACCESS         0xc0804d66
710 #define TARGET_SOUND_MIXER_PRIVATE1       0xc0044d6f
711 #define TARGET_SOUND_MIXER_PRIVATE2       0xc0044d70
712 #define TARGET_SOUND_MIXER_PRIVATE3       0xc0044d71
713 #define TARGET_SOUND_MIXER_PRIVATE4       0xc0044d72
714 #define TARGET_SOUND_MIXER_PRIVATE5       0xc0044d73
715 #define TARGET_SOUND_MIXER_READ_VOLUME    0x80044d00
716 #define TARGET_SOUND_MIXER_READ_BASS      0x80044d01
717 #define TARGET_SOUND_MIXER_READ_TREBLE    0x80044d02
718 #define TARGET_SOUND_MIXER_READ_SYNTH     0x80044d03
719 #define TARGET_SOUND_MIXER_READ_PCM       0x80044d04
720 #define TARGET_SOUND_MIXER_READ_SPEAKER   0x80044d05
721 #define TARGET_SOUND_MIXER_READ_LINE      0x80044d06
722 #define TARGET_SOUND_MIXER_READ_MIC       0x80044d07
723 #define TARGET_SOUND_MIXER_READ_CD        0x80044d08
724 #define TARGET_SOUND_MIXER_READ_IMIX      0x80044d09
725 #define TARGET_SOUND_MIXER_READ_ALTPCM    0x80044d0a
726 #define TARGET_SOUND_MIXER_READ_RECLEV    0x80044d0b
727 #define TARGET_SOUND_MIXER_READ_IGAIN     0x80044d0c
728 #define TARGET_SOUND_MIXER_READ_OGAIN     0x80044d0d
729 #define TARGET_SOUND_MIXER_READ_LINE1     0x80044d0e
730 #define TARGET_SOUND_MIXER_READ_LINE2     0x80044d0f
731 #define TARGET_SOUND_MIXER_READ_LINE3     0x80044d10
732 #define TARGET_SOUND_MIXER_READ_MUTE      0x80044d1f
733 #define TARGET_SOUND_MIXER_READ_ENHANCE   0x80044d1f
734 #define TARGET_SOUND_MIXER_READ_LOUD      0x80044d1f
735 #define TARGET_SOUND_MIXER_READ_RECSRC    0x80044dff
736 #define TARGET_SOUND_MIXER_READ_DEVMASK   0x80044dfe
737 #define TARGET_SOUND_MIXER_READ_RECMASK   0x80044dfd
738 #define TARGET_SOUND_MIXER_READ_STEREODEVS  0x80044dfb
739 #define TARGET_SOUND_MIXER_READ_CAPS      0x80044dfc
740 #define TARGET_SOUND_MIXER_WRITE_VOLUME   0xc0044d00
741 #define TARGET_SOUND_MIXER_WRITE_BASS     0xc0044d01
742 #define TARGET_SOUND_MIXER_WRITE_TREBLE   0xc0044d02
743 #define TARGET_SOUND_MIXER_WRITE_SYNTH    0xc0044d03
744 #define TARGET_SOUND_MIXER_WRITE_PCM      0xc0044d04
745 #define TARGET_SOUND_MIXER_WRITE_SPEAKER  0xc0044d05
746 #define TARGET_SOUND_MIXER_WRITE_LINE     0xc0044d06
747 #define TARGET_SOUND_MIXER_WRITE_MIC      0xc0044d07
748 #define TARGET_SOUND_MIXER_WRITE_CD       0xc0044d08
749 #define TARGET_SOUND_MIXER_WRITE_IMIX     0xc0044d09
750 #define TARGET_SOUND_MIXER_WRITE_ALTPCM   0xc0044d0a
751 #define TARGET_SOUND_MIXER_WRITE_RECLEV   0xc0044d0b
752 #define TARGET_SOUND_MIXER_WRITE_IGAIN    0xc0044d0c
753 #define TARGET_SOUND_MIXER_WRITE_OGAIN    0xc0044d0d
754 #define TARGET_SOUND_MIXER_WRITE_LINE1    0xc0044d0e
755 #define TARGET_SOUND_MIXER_WRITE_LINE2    0xc0044d0f
756 #define TARGET_SOUND_MIXER_WRITE_LINE3    0xc0044d10
757 #define TARGET_SOUND_MIXER_WRITE_MUTE     0xc0044d1f
758 #define TARGET_SOUND_MIXER_WRITE_ENHANCE  0xc0044d1f
759 #define TARGET_SOUND_MIXER_WRITE_LOUD     0xc0044d1f
760 #define TARGET_SOUND_MIXER_WRITE_RECSRC   0xc0044dff
761
762 #define TARGET_LDT_ENTRIES      8192
763 #define TARGET_LDT_ENTRY_SIZE   8
764
765 struct target_modify_ldt_ldt_s {
766     unsigned int  entry_number;
767     target_ulong base_addr;
768     unsigned int limit;
769     unsigned int flags;
770 };
771