| 57 |
#define TARGET_IOC_WRITE 1U |
#define TARGET_IOC_WRITE 1U |
| 58 |
#define TARGET_IOC_READ 2U |
#define TARGET_IOC_READ 2U |
| 59 |
|
|
| 60 |
#elif defined(TARGET_PPC) || defined(TARGET_ALPHA) || defined(TARGET_SPARC) |
#elif defined(TARGET_PPC) || defined(TARGET_ALPHA) || \ |
| 61 |
|
defined(TARGET_SPARC) || defined(TARGET_MIPS) |
| 62 |
|
|
| 63 |
#define TARGET_IOC_SIZEBITS 13 |
#define TARGET_IOC_SIZEBITS 13 |
| 64 |
#define TARGET_IOC_DIRBITS 3 |
#define TARGET_IOC_DIRBITS 3 |
| 293 |
int do_sigaction(int sig, const struct target_sigaction *act, |
int do_sigaction(int sig, const struct target_sigaction *act, |
| 294 |
struct target_sigaction *oact); |
struct target_sigaction *oact); |
| 295 |
|
|
| 296 |
#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) || defined(TARGET_PPC) |
#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) || defined(TARGET_PPC) || defined(TARGET_MIPS) |
| 297 |
|
|
| 298 |
#if !defined(TARGET_SPARC) |
#if defined(TARGET_SPARC) |
| 299 |
|
#define TARGET_SA_NOCLDSTOP 8u |
| 300 |
|
#define TARGET_SA_NOCLDWAIT 0x100u |
| 301 |
|
#define TARGET_SA_SIGINFO 0x200u |
| 302 |
|
#define TARGET_SA_ONSTACK 1u |
| 303 |
|
#define TARGET_SA_RESTART 2u |
| 304 |
|
#define TARGET_SA_NODEFER 0x20u |
| 305 |
|
#define TARGET_SA_RESETHAND 4u |
| 306 |
|
#elif defined(TARGET_MIPS) |
| 307 |
|
#define TARGET_SA_NOCLDSTOP 0x00000001 |
| 308 |
|
#define TARGET_SA_NOCLDWAIT 0x00010000 |
| 309 |
|
#define TARGET_SA_SIGINFO 0x00000008 |
| 310 |
|
#define TARGET_SA_ONSTACK 0x08000000 |
| 311 |
|
#define TARGET_SA_NODEFER 0x40000000 |
| 312 |
|
#define TARGET_SA_RESTART 0x10000000 |
| 313 |
|
#define TARGET_SA_RESETHAND 0x80000000 |
| 314 |
|
#define TARGET_SA_RESTORER 0x04000000 /* Only for o32 */ |
| 315 |
|
#else |
| 316 |
#define TARGET_SA_NOCLDSTOP 0x00000001 |
#define TARGET_SA_NOCLDSTOP 0x00000001 |
| 317 |
#define TARGET_SA_NOCLDWAIT 0x00000002 /* not supported yet */ |
#define TARGET_SA_NOCLDWAIT 0x00000002 /* not supported yet */ |
| 318 |
#define TARGET_SA_SIGINFO 0x00000004 |
#define TARGET_SA_SIGINFO 0x00000004 |
| 321 |
#define TARGET_SA_NODEFER 0x40000000 |
#define TARGET_SA_NODEFER 0x40000000 |
| 322 |
#define TARGET_SA_RESETHAND 0x80000000 |
#define TARGET_SA_RESETHAND 0x80000000 |
| 323 |
#define TARGET_SA_RESTORER 0x04000000 |
#define TARGET_SA_RESTORER 0x04000000 |
|
#else /* TARGET_SPARC */ |
|
|
#define TARGET_SA_NOCLDSTOP 8u |
|
|
#define TARGET_SA_NOCLDWAIT 0x100u |
|
|
#define TARGET_SA_SIGINFO 0x200u |
|
|
#define TARGET_SA_ONSTACK 1u |
|
|
#define TARGET_SA_RESTART 2u |
|
|
#define TARGET_SA_NODEFER 0x20u |
|
|
#define TARGET_SA_RESETHAND 4u |
|
| 324 |
#endif |
#endif |
| 325 |
|
|
| 326 |
#if defined(TARGET_SPARC) |
#if defined(TARGET_SPARC) |
| 363 |
#define TARGET_SIG_UNBLOCK 0x02 /* for unblocking signals */ |
#define TARGET_SIG_UNBLOCK 0x02 /* for unblocking signals */ |
| 364 |
#define TARGET_SIG_SETMASK 0x04 /* for setting the signal mask */ |
#define TARGET_SIG_SETMASK 0x04 /* for setting the signal mask */ |
| 365 |
|
|
| 366 |
|
#elif defined(TARGET_MIPS) |
| 367 |
|
|
| 368 |
|
#define TARGET_SIGHUP 1 /* Hangup (POSIX). */ |
| 369 |
|
#define TARGET_SIGINT 2 /* Interrupt (ANSI). */ |
| 370 |
|
#define TARGET_SIGQUIT 3 /* Quit (POSIX). */ |
| 371 |
|
#define TARGET_SIGILL 4 /* Illegal instruction (ANSI). */ |
| 372 |
|
#define TARGET_SIGTRAP 5 /* Trace trap (POSIX). */ |
| 373 |
|
#define TARGET_SIGIOT 6 /* IOT trap (4.2 BSD). */ |
| 374 |
|
#define TARGET_SIGABRT TARGET_SIGIOT /* Abort (ANSI). */ |
| 375 |
|
#define TARGET_SIGEMT 7 |
| 376 |
|
#define TARGET_SIGSTKFLT 7 /* XXX: incorrect */ |
| 377 |
|
#define TARGET_SIGFPE 8 /* Floating-point exception (ANSI). */ |
| 378 |
|
#define TARGET_SIGKILL 9 /* Kill, unblockable (POSIX). */ |
| 379 |
|
#define TARGET_SIGBUS 10 /* BUS error (4.2 BSD). */ |
| 380 |
|
#define TARGET_SIGSEGV 11 /* Segmentation violation (ANSI). */ |
| 381 |
|
#define TARGET_SIGSYS 12 |
| 382 |
|
#define TARGET_SIGPIPE 13 /* Broken pipe (POSIX). */ |
| 383 |
|
#define TARGET_SIGALRM 14 /* Alarm clock (POSIX). */ |
| 384 |
|
#define TARGET_SIGTERM 15 /* Termination (ANSI). */ |
| 385 |
|
#define TARGET_SIGUSR1 16 /* User-defined signal 1 (POSIX). */ |
| 386 |
|
#define TARGET_SIGUSR2 17 /* User-defined signal 2 (POSIX). */ |
| 387 |
|
#define TARGET_SIGCHLD 18 /* Child status has changed (POSIX). */ |
| 388 |
|
#define TARGET_SIGCLD TARGET_SIGCHLD /* Same as TARGET_SIGCHLD (System V). */ |
| 389 |
|
#define TARGET_SIGPWR 19 /* Power failure restart (System V). */ |
| 390 |
|
#define TARGET_SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */ |
| 391 |
|
#define TARGET_SIGURG 21 /* Urgent condition on socket (4.2 BSD). */ |
| 392 |
|
#define TARGET_SIGIO 22 /* I/O now possible (4.2 BSD). */ |
| 393 |
|
#define TARGET_SIGPOLL TARGET_SIGIO /* Pollable event occurred (System V). */ |
| 394 |
|
#define TARGET_SIGSTOP 23 /* Stop, unblockable (POSIX). */ |
| 395 |
|
#define TARGET_SIGTSTP 24 /* Keyboard stop (POSIX). */ |
| 396 |
|
#define TARGET_SIGCONT 25 /* Continue (POSIX). */ |
| 397 |
|
#define TARGET_SIGTTIN 26 /* Background read from tty (POSIX). */ |
| 398 |
|
#define TARGET_SIGTTOU 27 /* Background write to tty (POSIX). */ |
| 399 |
|
#define TARGET_SIGVTALRM 28 /* Virtual alarm clock (4.2 BSD). */ |
| 400 |
|
#define TARGET_SIGPROF 29 /* Profiling alarm clock (4.2 BSD). */ |
| 401 |
|
#define TARGET_SIGXCPU 30 /* CPU limit exceeded (4.2 BSD). */ |
| 402 |
|
#define TARGET_SIGXFSZ 31 /* File size limit exceeded (4.2 BSD). */ |
| 403 |
|
#define TARGET_SIGRTMIN 32 |
| 404 |
|
|
| 405 |
|
#define TARGET_SIG_BLOCK 1 /* for blocking signals */ |
| 406 |
|
#define TARGET_SIG_UNBLOCK 2 /* for unblocking signals */ |
| 407 |
|
#define TARGET_SIG_SETMASK 3 /* for setting the signal mask */ |
| 408 |
|
|
| 409 |
#else |
#else |
| 410 |
|
|
| 411 |
#define TARGET_SIGHUP 1 |
#define TARGET_SIGHUP 1 |
| 847 |
#define TARGET_MAP_PRIVATE 0x02 /* Changes are private */ |
#define TARGET_MAP_PRIVATE 0x02 /* Changes are private */ |
| 848 |
#define TARGET_MAP_TYPE 0x0f /* Mask for type of mapping */ |
#define TARGET_MAP_TYPE 0x0f /* Mask for type of mapping */ |
| 849 |
#define TARGET_MAP_FIXED 0x10 /* Interpret addr exactly */ |
#define TARGET_MAP_FIXED 0x10 /* Interpret addr exactly */ |
| 850 |
|
#if defined(TARGET_MIPS) |
| 851 |
|
#define TARGET_MAP_ANONYMOUS 0x0800 /* don't use a file */ |
| 852 |
|
#define TARGET_MAP_GROWSDOWN 0x1000 /* stack-like segment */ |
| 853 |
|
#define TARGET_MAP_DENYWRITE 0x2000 /* ETXTBSY */ |
| 854 |
|
#define TARGET_MAP_EXECUTABLE 0x4000 /* mark it as an executable */ |
| 855 |
|
#define TARGET_MAP_LOCKED 0x8000 /* pages are locked */ |
| 856 |
|
#define TARGET_MAP_NORESERVE 0x0400 /* don't check for reservations */ |
| 857 |
|
#else |
| 858 |
#define TARGET_MAP_ANONYMOUS 0x20 /* don't use a file */ |
#define TARGET_MAP_ANONYMOUS 0x20 /* don't use a file */ |
|
|
|
| 859 |
#define TARGET_MAP_GROWSDOWN 0x0100 /* stack-like segment */ |
#define TARGET_MAP_GROWSDOWN 0x0100 /* stack-like segment */ |
| 860 |
#define TARGET_MAP_DENYWRITE 0x0800 /* ETXTBSY */ |
#define TARGET_MAP_DENYWRITE 0x0800 /* ETXTBSY */ |
| 861 |
#define TARGET_MAP_EXECUTABLE 0x1000 /* mark it as an executable */ |
#define TARGET_MAP_EXECUTABLE 0x1000 /* mark it as an executable */ |
| 862 |
#define TARGET_MAP_LOCKED 0x2000 /* pages are locked */ |
#define TARGET_MAP_LOCKED 0x2000 /* pages are locked */ |
| 863 |
#define TARGET_MAP_NORESERVE 0x4000 /* don't check for reservations */ |
#define TARGET_MAP_NORESERVE 0x4000 /* don't check for reservations */ |
| 864 |
|
#endif |
| 865 |
|
|
| 866 |
#if defined(TARGET_I386) || defined(TARGET_ARM) |
#if defined(TARGET_I386) || defined(TARGET_ARM) |
| 867 |
struct target_stat { |
struct target_stat { |
| 1028 |
target_ulong __unused5; |
target_ulong __unused5; |
| 1029 |
}; |
}; |
| 1030 |
|
|
| 1031 |
#endif /* defined(TARGET_PPC) */ |
#elif defined(TARGET_MIPS) |
| 1032 |
|
|
| 1033 |
|
struct target_stat { |
| 1034 |
|
unsigned st_dev; |
| 1035 |
|
target_long st_pad1[3]; /* Reserved for network id */ |
| 1036 |
|
target_ulong st_ino; |
| 1037 |
|
unsigned int st_mode; |
| 1038 |
|
unsigned int st_nlink; |
| 1039 |
|
int st_uid; |
| 1040 |
|
int st_gid; |
| 1041 |
|
unsigned st_rdev; |
| 1042 |
|
target_long st_pad2[2]; |
| 1043 |
|
target_long st_size; |
| 1044 |
|
target_long st_pad3; |
| 1045 |
|
/* |
| 1046 |
|
* Actually this should be timestruc_t st_atime, st_mtime and st_ctime |
| 1047 |
|
* but we don't have it under Linux. |
| 1048 |
|
*/ |
| 1049 |
|
target_long target_st_atime; |
| 1050 |
|
target_long target_st_atime_nsec; |
| 1051 |
|
target_long target_st_mtime; |
| 1052 |
|
target_long target_st_mtime_nsec; |
| 1053 |
|
target_long target_st_ctime; |
| 1054 |
|
target_long target_st_ctime_nsec; |
| 1055 |
|
target_long st_blksize; |
| 1056 |
|
target_long st_blocks; |
| 1057 |
|
target_long st_pad4[14]; |
| 1058 |
|
}; |
| 1059 |
|
|
| 1060 |
|
/* |
| 1061 |
|
* This matches struct stat64 in glibc2.1, hence the absolutely insane |
| 1062 |
|
* amounts of padding around dev_t's. The memory layout is the same as of |
| 1063 |
|
* struct stat of the 64-bit kernel. |
| 1064 |
|
*/ |
| 1065 |
|
|
| 1066 |
|
struct target_stat64 { |
| 1067 |
|
target_ulong st_dev; |
| 1068 |
|
target_ulong st_pad0[3]; /* Reserved for st_dev expansion */ |
| 1069 |
|
|
| 1070 |
|
uint64_t st_ino; |
| 1071 |
|
|
| 1072 |
|
unsigned int st_mode; |
| 1073 |
|
unsigned int st_nlink; |
| 1074 |
|
|
| 1075 |
|
int st_uid; |
| 1076 |
|
int st_gid; |
| 1077 |
|
|
| 1078 |
|
target_ulong st_rdev; |
| 1079 |
|
target_ulong st_pad1[3]; /* Reserved for st_rdev expansion */ |
| 1080 |
|
|
| 1081 |
|
int64_t st_size; |
| 1082 |
|
|
| 1083 |
|
/* |
| 1084 |
|
* Actually this should be timestruc_t st_atime, st_mtime and st_ctime |
| 1085 |
|
* but we don't have it under Linux. |
| 1086 |
|
*/ |
| 1087 |
|
target_long target_st_atime; |
| 1088 |
|
target_ulong target_st_atime_nsec; /* Reserved for st_atime expansion */ |
| 1089 |
|
|
| 1090 |
|
target_long target_st_mtime; |
| 1091 |
|
target_ulong target_st_mtime_nsec; /* Reserved for st_mtime expansion */ |
| 1092 |
|
|
| 1093 |
|
target_long target_st_ctime; |
| 1094 |
|
target_ulong target_st_ctime_nsec; /* Reserved for st_ctime expansion */ |
| 1095 |
|
|
| 1096 |
|
target_ulong st_blksize; |
| 1097 |
|
target_ulong st_pad2; |
| 1098 |
|
|
| 1099 |
|
int64_t st_blocks; |
| 1100 |
|
}; |
| 1101 |
|
#else |
| 1102 |
|
#error unsupported CPU |
| 1103 |
|
#endif |
| 1104 |
|
|
| 1105 |
#define TARGET_F_DUPFD 0 /* dup */ |
#define TARGET_F_DUPFD 0 /* dup */ |
| 1106 |
#define TARGET_F_GETFD 1 /* get close_on_exec */ |
#define TARGET_F_GETFD 1 /* get close_on_exec */ |
| 1140 |
#define TARGET_O_TRUNC 01000 /* not fcntl */ |
#define TARGET_O_TRUNC 01000 /* not fcntl */ |
| 1141 |
#define TARGET_O_APPEND 02000 |
#define TARGET_O_APPEND 02000 |
| 1142 |
#define TARGET_O_NONBLOCK 04000 |
#define TARGET_O_NONBLOCK 04000 |
| 1143 |
#define TARGET_O_NDELAY O_NONBLOCK |
#define TARGET_O_NDELAY TARGET_O_NONBLOCK |
| 1144 |
#define TARGET_O_SYNC 010000 |
#define TARGET_O_SYNC 010000 |
| 1145 |
#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ |
#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ |
| 1146 |
#define TARGET_O_DIRECTORY 040000 /* must be a directory */ |
#define TARGET_O_DIRECTORY 040000 /* must be a directory */ |
| 1158 |
#define TARGET_O_TRUNC 01000 /* not fcntl */ |
#define TARGET_O_TRUNC 01000 /* not fcntl */ |
| 1159 |
#define TARGET_O_APPEND 02000 |
#define TARGET_O_APPEND 02000 |
| 1160 |
#define TARGET_O_NONBLOCK 04000 |
#define TARGET_O_NONBLOCK 04000 |
| 1161 |
#define TARGET_O_NDELAY O_NONBLOCK |
#define TARGET_O_NDELAY TARGET_O_NONBLOCK |
| 1162 |
#define TARGET_O_SYNC 010000 |
#define TARGET_O_SYNC 010000 |
| 1163 |
#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ |
#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ |
| 1164 |
#define TARGET_O_DIRECTORY 040000 /* must be a directory */ |
#define TARGET_O_DIRECTORY 040000 /* must be a directory */ |
| 1177 |
#define TARGET_O_EXCL 0x0800 /* not fcntl */ |
#define TARGET_O_EXCL 0x0800 /* not fcntl */ |
| 1178 |
#define TARGET_O_SYNC 0x2000 |
#define TARGET_O_SYNC 0x2000 |
| 1179 |
#define TARGET_O_NONBLOCK 0x4000 |
#define TARGET_O_NONBLOCK 0x4000 |
| 1180 |
#define TARGET_O_NDELAY (0x0004 | O_NONBLOCK) |
#define TARGET_O_NDELAY (0x0004 | TARGET_O_NONBLOCK) |
| 1181 |
#define TARGET_O_NOCTTY 0x8000 /* not fcntl */ |
#define TARGET_O_NOCTTY 0x8000 /* not fcntl */ |
| 1182 |
#define TARGET_O_DIRECTORY 0x10000 /* must be a directory */ |
#define TARGET_O_DIRECTORY 0x10000 /* must be a directory */ |
| 1183 |
#define TARGET_O_NOFOLLOW 0x20000 /* don't follow links */ |
#define TARGET_O_NOFOLLOW 0x20000 /* don't follow links */ |
| 1184 |
#define TARGET_O_LARGEFILE 0x40000 |
#define TARGET_O_LARGEFILE 0x40000 |
| 1185 |
#define TARGET_O_DIRECT 0x100000 /* direct disk access hint */ |
#define TARGET_O_DIRECT 0x100000 /* direct disk access hint */ |
| 1186 |
|
#elif defined(TARGET_MIPS) |
| 1187 |
|
#define TARGET_O_ACCMODE 0x0003 |
| 1188 |
|
#define TARGET_O_RDONLY 0x0000 |
| 1189 |
|
#define TARGET_O_WRONLY 0x0001 |
| 1190 |
|
#define TARGET_O_RDWR 0x0002 |
| 1191 |
|
#define TARGET_O_APPEND 0x0008 |
| 1192 |
|
#define TARGET_O_SYNC 0x0010 |
| 1193 |
|
#define TARGET_O_NONBLOCK 0x0080 |
| 1194 |
|
#define TARGET_O_CREAT 0x0100 /* not fcntl */ |
| 1195 |
|
#define TARGET_O_TRUNC 0x0200 /* not fcntl */ |
| 1196 |
|
#define TARGET_O_EXCL 0x0400 /* not fcntl */ |
| 1197 |
|
#define TARGET_O_NOCTTY 0x0800 /* not fcntl */ |
| 1198 |
|
#define TARGET_FASYNC 0x1000 /* fcntl, for BSD compatibility */ |
| 1199 |
|
#define TARGET_O_LARGEFILE 0x2000 /* allow large file opens */ |
| 1200 |
|
#define TARGET_O_DIRECT 0x8000 /* direct disk access hint */ |
| 1201 |
|
#define TARGET_O_DIRECTORY 0x10000 /* must be a directory */ |
| 1202 |
|
#define TARGET_O_NOFOLLOW 0x20000 /* don't follow links */ |
| 1203 |
|
#define TARGET_O_NOATIME 0x40000 |
| 1204 |
|
#define TARGET_O_NDELAY TARGET_O_NONBLOCK |
| 1205 |
#else |
#else |
| 1206 |
#define TARGET_O_ACCMODE 0003 |
#define TARGET_O_ACCMODE 0003 |
| 1207 |
#define TARGET_O_RDONLY 00 |
#define TARGET_O_RDONLY 00 |
| 1213 |
#define TARGET_O_TRUNC 01000 /* not fcntl */ |
#define TARGET_O_TRUNC 01000 /* not fcntl */ |
| 1214 |
#define TARGET_O_APPEND 02000 |
#define TARGET_O_APPEND 02000 |
| 1215 |
#define TARGET_O_NONBLOCK 04000 |
#define TARGET_O_NONBLOCK 04000 |
| 1216 |
#define TARGET_O_NDELAY O_NONBLOCK |
#define TARGET_O_NDELAY TARGET_O_NONBLOCK |
| 1217 |
#define TARGET_O_SYNC 010000 |
#define TARGET_O_SYNC 010000 |
| 1218 |
#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ |
#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ |
| 1219 |
#define TARGET_O_DIRECT 040000 /* direct disk access hint */ |
#define TARGET_O_DIRECT 040000 /* direct disk access hint */ |