-----BEGIN PGP SIGNATURE-----
iQIcBAABAgAGBQJa+dImAAoJEPMMOL0/L748umMP/R9miqzm3/Pj1gssD/yA5lZE 7rx/d14Sefo2T/L1kmg6vbbyOJyLnHf9DtTI/JCgOnC9otOQ1IKfeI4c0coJjI5R G0yNHswLB+VMIJ830ivF0QE4Z8f6K1UbBD9y+iQfpFk55rrT+dt9U3YJBrCY7bQ8 Sk+2dFpk+oVh9oz3GPHRkWua/KGMDrqCjAOlkVCXyNZuJ8yp69wHWI2j81nFQv3v 1AnXOm6bbjy9zwRuRUJ6yco2vu8uXyor/usA465C66A5XZ7xcrgKIZQge3hV31fo 4BmnxEviMKM5dM013e2nk0Hh5YwG/Vv+t8YYgco79Mcy9QJIEO4J1JXedUYZ3FJ/ JhV5nTcYNi1hQMkSxzXWoxyOMElwL8DaPQIZS7c++pOSXCS9oD/baBuPzC/dWBTH VThuCYd1EsBe8ZFkgph/oUMYZQHcS2/paGE1RuHlLXVOqd1k9v/d27yxngo1/wn7 +zesaWkp9aQOC6pij23cgKAq8S1X8KeaOM0UK+KmMNSr1h9nQY146D3/SOqUfAfS 2DzW7PBnUHFzi6uXE99ZiUSSWWIyIjJEgAOnqnZCrl5LbPCKnjp4/BYupxoUwAWF Nr9Gk34R2FhoqqJtplzYWxXfyyCFujQMXHUe/yYx5ITG18totKb+09GbeeSep8Is myxrDirmbaqCnj8zfd+M =yjsX -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-2.13-pull-request' into staging # gpg: Signature made Mon 14 May 2018 19:15:02 BST # gpg: using RSA key F30C38BD3F2FBE3C # gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" # gpg: aka "Laurent Vivier <laurent@vivier.eu>" # gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" # Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C * remotes/vivier2/tags/linux-user-for-2.13-pull-request: linux-user: correctly align types in thunking code linux-user: fix UNAME_MACHINE for sparc/sparc64 linux-user: add sparc/sparc64 specific errno linux-user: fix conversion of flock/flock64 l_type field linux-user: update sparc/syscall_nr.h to linux header 4.16 linux-user: fix flock/flock64 padding linux-user: define correct fcntl() values for sparc Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
						commit
						f39ddb3a08
					
				| @ -149,20 +149,32 @@ static inline int thunk_type_align(const argtype *type_ptr, int is_host) | ||||
|     case TYPE_CHAR: | ||||
|         return 1; | ||||
|     case TYPE_SHORT: | ||||
|         return 2; | ||||
|         if (is_host) { | ||||
|             return __alignof__(short); | ||||
|         } else { | ||||
|             return ABI_SHORT_ALIGNMENT; | ||||
|         } | ||||
|     case TYPE_INT: | ||||
|         return 4; | ||||
|         if (is_host) { | ||||
|             return __alignof__(int); | ||||
|         } else { | ||||
|             return ABI_INT_ALIGNMENT; | ||||
|         } | ||||
|     case TYPE_LONGLONG: | ||||
|     case TYPE_ULONGLONG: | ||||
|         return 8; | ||||
|         if (is_host) { | ||||
|             return __alignof__(long long); | ||||
|         } else { | ||||
|             return ABI_LLONG_ALIGNMENT; | ||||
|         } | ||||
|     case TYPE_LONG: | ||||
|     case TYPE_ULONG: | ||||
|     case TYPE_PTRVOID: | ||||
|     case TYPE_PTR: | ||||
|         if (is_host) { | ||||
|             return sizeof(void *); | ||||
|             return __alignof__(long); | ||||
|         } else { | ||||
|             return TARGET_ABI_BITS / 8; | ||||
|             return ABI_LONG_ALIGNMENT; | ||||
|         } | ||||
|         break; | ||||
|     case TYPE_OLDDEVT: | ||||
|  | ||||
| @ -22,6 +22,7 @@ | ||||
| #define TARGET_NR_capset		 22 /* Linux Specific				   */ | ||||
| #define TARGET_NR_setuid              23 /* Implemented via setreuid in SunOS           */ | ||||
| #define TARGET_NR_getuid              24 /* Common                                      */ | ||||
| #define TARGET_NR_vmsplice            25 | ||||
| #define TARGET_NR_ptrace              26 /* Common                                      */ | ||||
| #define TARGET_NR_alarm               27 /* Implemented via setitimer in SunOS          */ | ||||
| #define TARGET_NR_sigaltstack	 28 /* Common					   */ | ||||
| @ -135,6 +136,7 @@ | ||||
| #define TARGET_NR_rmdir              137 /* Common                                      */ | ||||
| #define TARGET_NR_utimes             138 /* SunOS Specific                              */ | ||||
| #define TARGET_NR_stat64		139 /* Linux sparc32 Specific			   */ | ||||
| #define TARGET_NR_sendfile64         140 | ||||
| #define TARGET_NR_getpeername        141 /* Common                                      */ | ||||
| #define TARGET_NR_futex              142 /* gethostid under SunOS                       */ | ||||
| #define TARGET_NR_gettid             143 /* ENOSYS under SunOS                          */ | ||||
| @ -145,29 +147,51 @@ | ||||
| #define TARGET_NR_pciconfig_read	148 /* ENOSYS under SunOS                          */ | ||||
| #define TARGET_NR_pciconfig_write	149 /* ENOSYS under SunOS                          */ | ||||
| #define TARGET_NR_getsockname        150 /* Common                                      */ | ||||
| #define TARGET_NR_inotify_init       151 | ||||
| #define TARGET_NR_inotify_add_watch  152 | ||||
| #define TARGET_NR_poll               153 /* Common                                      */ | ||||
| #define TARGET_NR_getdents64		154 /* Linux specific				   */ | ||||
| #define TARGET_NR_fcntl64		155 /* Linux sparc32 Specific                      */ | ||||
| #define TARGET_NR_inotify_rm_watch   156 | ||||
| #define TARGET_NR_statfs             157 /* Common                                      */ | ||||
| #define TARGET_NR_fstatfs            158 /* Common                                      */ | ||||
| #define TARGET_NR_umount             159 /* Common                                      */ | ||||
| #define TARGET_NR_sched_set_affinity 160 | ||||
| #define TARGET_NR_sched_get_affinity 161 | ||||
| #define TARGET_NR_getdomainname      162 /* SunOS Specific                              */ | ||||
| #define TARGET_NR_setdomainname      163 /* Common                                      */ | ||||
| #define TARGET_NR_quotactl           165 /* Common                                      */ | ||||
| #define TARGET_NR_set_tid_address    166 /* Linux specific, exportfs under SunOS        */ | ||||
| #define TARGET_NR_mount              167 /* Common                                      */ | ||||
| #define TARGET_NR_ustat              168 /* Common                                      */ | ||||
| #define TARGET_NR_setxattr           169 | ||||
| #define TARGET_NR_lsetxattr          170 | ||||
| #define TARGET_NR_fsetxattr          171 | ||||
| #define TARGET_NR_getxattr           172 | ||||
| #define TARGET_NR_lgetxattr          173 | ||||
| #define TARGET_NR_getdents           174 /* Common                                      */ | ||||
| #define TARGET_NR_setsid             175 /* Common                                      */ | ||||
| #define TARGET_NR_fchdir             176 /* Common                                      */ | ||||
| #define TARGET_NR_fgetxattr          177 | ||||
| #define TARGET_NR_listxattr          178 | ||||
| #define TARGET_NR_llistxattr         179 | ||||
| #define TARGET_NR_flistxattr         180 | ||||
| #define TARGET_NR_removexattr        181 | ||||
| #define TARGET_NR_lremovexattr       182 | ||||
| #define TARGET_NR_sigpending         183 /* Common                                      */ | ||||
| #define TARGET_NR_query_module	184 /* Linux Specific				   */ | ||||
| #define TARGET_NR_setpgid            185 /* Common                                      */ | ||||
| #define TARGET_NR_fremovexattr       186 | ||||
| #define TARGET_NR_tkill              187 /* SunOS: fpathconf                            */ | ||||
| #define TARGET_NR_exit_group	     188 /* Linux specific, sysconf undef SunOS         */ | ||||
| #define TARGET_NR_uname              189 /* Linux Specific                              */ | ||||
| #define TARGET_NR_init_module        190 /* Linux Specific                              */ | ||||
| #define TARGET_NR_personality        191 /* Linux Specific                              */ | ||||
| #define TARGET_NR_remap_file_pages   192 | ||||
| #define TARGET_NR_epoll_create       193 | ||||
| #define TARGET_NR_epoll_ctl          194 | ||||
| #define TARGET_NR_epoll_wait         195 | ||||
| #define TARGET_NR_ioprio_set         196 | ||||
| #define TARGET_NR_getppid            197 /* Linux Specific                              */ | ||||
| #define TARGET_NR_sigaction          198 /* Linux Specific                              */ | ||||
| #define TARGET_NR_sgetmask           199 /* Linux Specific                              */ | ||||
| @ -189,6 +213,7 @@ | ||||
| #define TARGET_NR_ipc                215 /* Linux Specific                              */ | ||||
| #define TARGET_NR_sigreturn          216 /* Linux Specific                              */ | ||||
| #define TARGET_NR_clone              217 /* Linux Specific                              */ | ||||
| #define TARGET_NR_ioprio_get         218 | ||||
| #define TARGET_NR_adjtimex           219 /* Linux Specific                              */ | ||||
| #define TARGET_NR_sigprocmask        220 /* Linux Specific                              */ | ||||
| #define TARGET_NR_create_module      221 /* Linux Specific                              */ | ||||
| @ -202,6 +227,7 @@ | ||||
| #define TARGET_NR_setfsgid           229 /* Linux Specific                              */ | ||||
| #define TARGET_NR__newselect         230 /* Linux Specific                              */ | ||||
| #define TARGET_NR_time               231 /* Linux Specific                              */ | ||||
| #define TARGET_NR_splice             232 | ||||
| #define TARGET_NR_stime              233 /* Linux Specific                              */ | ||||
| #define TARGET_NR_statfs64           234 /* Linux Specific                              */ | ||||
| #define TARGET_NR_fstatfs64          235 /* Linux Specific                              */ | ||||
| @ -224,7 +250,7 @@ | ||||
| #define TARGET_NR_getsid             252 | ||||
| #define TARGET_NR_fdatasync          253 | ||||
| #define TARGET_NR_nfsservctl         254 | ||||
| #define TARGET_NR_aplib              255 | ||||
| #define TARGET_NR_sync_file_range    255 | ||||
| #define TARGET_NR_clock_settime	256 | ||||
| #define TARGET_NR_clock_gettime	257 | ||||
| #define TARGET_NR_clock_getres	258 | ||||
| @ -326,3 +352,7 @@ | ||||
| #define TARGET_NR_listen                354 | ||||
| #define TARGET_NR_setsockopt            355 | ||||
| #define TARGET_NR_mlock2                356 | ||||
| #define TARGET_NR_copy_file_range       357 | ||||
| #define TARGET_NR_preadv2               358 | ||||
| #define TARGET_NR_pwritev2              359 | ||||
| #define TARGET_NR_statx                 360 | ||||
|  | ||||
							
								
								
									
										207
									
								
								linux-user/sparc/target_errno.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								linux-user/sparc/target_errno.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,207 @@ | ||||
| #ifndef SPARC_TARGET_ERRNO_H | ||||
| #define SPARC_TARGET_ERRNO_H | ||||
| 
 | ||||
| /* Target errno definitions taken from asm-sparc/errno.h */ | ||||
| #undef TARGET_EWOULDBLOCK | ||||
| #define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */ | ||||
| #undef TARGET_EINPROGRESS | ||||
| #define TARGET_EINPROGRESS     36 /* Operation now in progress */ | ||||
| #undef TARGET_EALREADY | ||||
| #define TARGET_EALREADY        37 /* Operation already in progress */ | ||||
| #undef TARGET_ENOTSOCK | ||||
| #define TARGET_ENOTSOCK        38 /* Socket operation on non-socket */ | ||||
| #undef TARGET_EDESTADDRREQ | ||||
| #define TARGET_EDESTADDRREQ    39 /* Destination address required */ | ||||
| #undef TARGET_EMSGSIZE | ||||
| #define TARGET_EMSGSIZE        40 /* Message too long */ | ||||
| #undef TARGET_EPROTOTYPE | ||||
| #define TARGET_EPROTOTYPE      41 /* Protocol wrong type for socket */ | ||||
| #undef TARGET_ENOPROTOOPT | ||||
| #define TARGET_ENOPROTOOPT     42 /* Protocol not available */ | ||||
| #undef TARGET_EPROTONOSUPPORT | ||||
| #define TARGET_EPROTONOSUPPORT  43 /* Protocol not supported */ | ||||
| #undef TARGET_ESOCKTNOSUPPORT | ||||
| #define TARGET_ESOCKTNOSUPPORT  44 /* Socket type not supported */ | ||||
| #undef TARGET_EOPNOTSUPP | ||||
| #define TARGET_EOPNOTSUPP      45 /* Op not supported on transport endpoint */ | ||||
| #undef TARGET_EPFNOSUPPORT | ||||
| #define TARGET_EPFNOSUPPORT    46 /* Protocol family not supported */ | ||||
| #undef TARGET_EAFNOSUPPORT | ||||
| #define TARGET_EAFNOSUPPORT    47 /* Address family not supported by protocol */ | ||||
| #undef TARGET_EADDRINUSE | ||||
| #define TARGET_EADDRINUSE      48 /* Address already in use */ | ||||
| #undef TARGET_EADDRNOTAVAIL | ||||
| #define TARGET_EADDRNOTAVAIL   49 /* Cannot assign requested address */ | ||||
| #undef TARGET_ENETDOWN | ||||
| #define TARGET_ENETDOWN        50 /* Network is down */ | ||||
| #undef TARGET_ENETUNREACH | ||||
| #define TARGET_ENETUNREACH     51 /* Network is unreachable */ | ||||
| #undef TARGET_ENETRESET | ||||
| #define TARGET_ENETRESET       52 /* Net dropped connection because of reset */ | ||||
| #undef TARGET_ECONNABORTED | ||||
| #define TARGET_ECONNABORTED    53 /* Software caused connection abort */ | ||||
| #undef TARGET_ECONNRESET | ||||
| #define TARGET_ECONNRESET      54 /* Connection reset by peer */ | ||||
| #undef TARGET_ENOBUFS | ||||
| #define TARGET_ENOBUFS         55 /* No buffer space available */ | ||||
| #undef TARGET_EISCONN | ||||
| #define TARGET_EISCONN         56 /* Transport endpoint is already connected */ | ||||
| #undef TARGET_ENOTCONN | ||||
| #define TARGET_ENOTCONN        57 /* Transport endpoint is not connected */ | ||||
| #undef TARGET_ESHUTDOWN | ||||
| #define TARGET_ESHUTDOWN       58 /* No send after transport endpoint shutdown*/ | ||||
| #undef TARGET_ETOOMANYREFS | ||||
| #define TARGET_ETOOMANYREFS    59 /* Too many references: cannot splice */ | ||||
| #undef TARGET_ETIMEDOUT | ||||
| #define TARGET_ETIMEDOUT       60 /* Connection timed out */ | ||||
| #undef TARGET_ECONNREFUSED | ||||
| #define TARGET_ECONNREFUSED    61 /* Connection refused */ | ||||
| #undef TARGET_ELOOP | ||||
| #define TARGET_ELOOP           62 /* Too many symbolic links encountered */ | ||||
| #undef TARGET_ENAMETOOLONG | ||||
| #define TARGET_ENAMETOOLONG    63 /* File name too long */ | ||||
| #undef TARGET_EHOSTDOWN | ||||
| #define TARGET_EHOSTDOWN       64 /* Host is down */ | ||||
| #undef TARGET_EHOSTUNREACH | ||||
| #define TARGET_EHOSTUNREACH    65 /* No route to host */ | ||||
| #undef TARGET_ENOTEMPTY | ||||
| #define TARGET_ENOTEMPTY       66 /* Directory not empty */ | ||||
| #undef TARGET_EPROCLIM | ||||
| #define TARGET_EPROCLIM        67 /* SUNOS: Too many processes */ | ||||
| #undef TARGET_EUSERS | ||||
| #define TARGET_EUSERS          68 /* Too many users */ | ||||
| #undef TARGET_EDQUOT | ||||
| #define TARGET_EDQUOT          69 /* Quota exceeded */ | ||||
| #undef TARGET_ESTALE | ||||
| #define TARGET_ESTALE          70 /* Stale file handle */ | ||||
| #undef TARGET_EREMOTE | ||||
| #define TARGET_EREMOTE         71 /* Object is remote */ | ||||
| #undef TARGET_ENOSTR | ||||
| #define TARGET_ENOSTR          72 /* Device not a stream */ | ||||
| #undef TARGET_ETIME | ||||
| #define TARGET_ETIME           73 /* Timer expired */ | ||||
| #undef TARGET_ENOSR | ||||
| #define TARGET_ENOSR           74 /* Out of streams resources */ | ||||
| #undef TARGET_ENOMSG | ||||
| #define TARGET_ENOMSG          75 /* No message of desired type */ | ||||
| #undef TARGET_EBADMSG | ||||
| #define TARGET_EBADMSG         76 /* Not a data message */ | ||||
| #undef TARGET_EIDRM | ||||
| #define TARGET_EIDRM           77 /* Identifier removed */ | ||||
| #undef TARGET_EDEADLK | ||||
| #define TARGET_EDEADLK         78 /* Resource deadlock would occur */ | ||||
| #undef TARGET_ENOLCK | ||||
| #define TARGET_ENOLCK          79 /* No record locks available */ | ||||
| #undef TARGET_ENONET | ||||
| #define TARGET_ENONET          80 /* Machine is not on the network */ | ||||
| #undef TARGET_ERREMOTE | ||||
| #define TARGET_ERREMOTE        81 /* SunOS: Too many lvls of remote in path */ | ||||
| #undef TARGET_ENOLINK | ||||
| #define TARGET_ENOLINK         82 /* Link has been severed */ | ||||
| #undef TARGET_EADV | ||||
| #define TARGET_EADV            83 /* Advertise error */ | ||||
| #undef TARGET_ESRMNT | ||||
| #define TARGET_ESRMNT          84 /* Srmount error */ | ||||
| #undef TARGET_ECOMM | ||||
| #define TARGET_ECOMM           85 /* Communication error on send */ | ||||
| #undef TARGET_EPROTO | ||||
| #define TARGET_EPROTO          86 /* Protocol error */ | ||||
| #undef TARGET_EMULTIHOP | ||||
| #define TARGET_EMULTIHOP       87 /* Multihop attempted */ | ||||
| #undef TARGET_EDOTDOT | ||||
| #define TARGET_EDOTDOT         88 /* RFS specific error */ | ||||
| #undef TARGET_EREMCHG | ||||
| #define TARGET_EREMCHG         89 /* Remote address changed */ | ||||
| #undef TARGET_ENOSYS | ||||
| #define TARGET_ENOSYS          90 /* Function not implemented */ | ||||
| #undef TARGET_ESTRPIPE | ||||
| #define TARGET_ESTRPIPE        91 /* Streams pipe error */ | ||||
| #undef TARGET_EOVERFLOW | ||||
| #define TARGET_EOVERFLOW       92 /* Value too large for defined data type */ | ||||
| #undef TARGET_EBADFD | ||||
| #define TARGET_EBADFD          93 /* File descriptor in bad state */ | ||||
| #undef TARGET_ECHRNG | ||||
| #define TARGET_ECHRNG          94 /* Channel number out of range */ | ||||
| #undef TARGET_EL2NSYNC | ||||
| #define TARGET_EL2NSYNC        95 /* Level 2 not synchronized */ | ||||
| #undef TARGET_EL3HLT | ||||
| #define TARGET_EL3HLT          96 /* Level 3 halted */ | ||||
| #undef TARGET_EL3RST | ||||
| #define TARGET_EL3RST          97 /* Level 3 reset */ | ||||
| #undef TARGET_ELNRNG | ||||
| #define TARGET_ELNRNG          98 /* Link number out of range */ | ||||
| #undef TARGET_EUNATCH | ||||
| #define TARGET_EUNATCH         99 /* Protocol driver not attached */ | ||||
| #undef TARGET_ENOCSI | ||||
| #define TARGET_ENOCSI          100 /* No CSI structure available */ | ||||
| #undef TARGET_EL2HLT | ||||
| #define TARGET_EL2HLT          101 /* Level 2 halted */ | ||||
| #undef TARGET_EBADE | ||||
| #define TARGET_EBADE           102 /* Invalid exchange */ | ||||
| #undef TARGET_EBADR | ||||
| #define TARGET_EBADR           103 /* Invalid request descriptor */ | ||||
| #undef TARGET_EXFULL | ||||
| #define TARGET_EXFULL          104 /* Exchange full */ | ||||
| #undef TARGET_ENOANO | ||||
| #define TARGET_ENOANO          105 /* No anode */ | ||||
| #undef TARGET_EBADRQC | ||||
| #define TARGET_EBADRQC         106 /* Invalid request code */ | ||||
| #undef TARGET_EBADSLT | ||||
| #define TARGET_EBADSLT         107 /* Invalid slot */ | ||||
| #undef TARGET_EDEADLOCK | ||||
| #define TARGET_EDEADLOCK       108 /* File locking deadlock error */ | ||||
| #undef TARGET_EBFONT | ||||
| #define TARGET_EBFONT          109 /* Bad font file format */ | ||||
| #undef TARGET_ELIBEXEC | ||||
| #define TARGET_ELIBEXEC        110 /* Cannot exec a shared library directly */ | ||||
| #undef TARGET_ENODATA | ||||
| #define TARGET_ENODATA         111 /* No data available */ | ||||
| #undef TARGET_ELIBBAD | ||||
| #define TARGET_ELIBBAD         112 /* Accessing a corrupted shared library */ | ||||
| #undef TARGET_ENOPKG | ||||
| #define TARGET_ENOPKG          113 /* Package not installed */ | ||||
| #undef TARGET_ELIBACC | ||||
| #define TARGET_ELIBACC         114 /* Can not access a needed shared library */ | ||||
| #undef TARGET_ENOTUNIQ | ||||
| #define TARGET_ENOTUNIQ        115 /* Name not unique on network */ | ||||
| #undef TARGET_ERESTART | ||||
| #define TARGET_ERESTART        116 /* Interrupted syscall should be restarted */ | ||||
| #undef TARGET_EUCLEAN | ||||
| #define TARGET_EUCLEAN         117 /* Structure needs cleaning */ | ||||
| #undef TARGET_ENOTNAM | ||||
| #define TARGET_ENOTNAM         118 /* Not a XENIX named type file */ | ||||
| #undef TARGET_ENAVAIL | ||||
| #define TARGET_ENAVAIL         119 /* No XENIX semaphores available */ | ||||
| #undef TARGET_EISNAM | ||||
| #define TARGET_EISNAM          120 /* Is a named type file */ | ||||
| #undef TARGET_EREMOTEIO | ||||
| #define TARGET_EREMOTEIO       121 /* Remote I/O error */ | ||||
| #undef TARGET_EILSEQ | ||||
| #define TARGET_EILSEQ          122 /* Illegal byte sequence */ | ||||
| #undef TARGET_ELIBMAX | ||||
| #define TARGET_ELIBMAX         123 /* Atmpt to link in too many shared libs */ | ||||
| #undef TARGET_ELIBSCN | ||||
| #define TARGET_ELIBSCN         124 /* .lib section in a.out corrupted */ | ||||
| #undef TARGET_ENOMEDIUM | ||||
| #define TARGET_ENOMEDIUM       125 /* No medium found */ | ||||
| #undef TARGET_EMEDIUMTYPE | ||||
| #define TARGET_EMEDIUMTYPE     126 /* Wrong medium type */ | ||||
| #undef TARGET_ECANCELED | ||||
| #define TARGET_ECANCELED       127 /* Operation Cancelled */ | ||||
| #undef TARGET_ENOKEY | ||||
| #define TARGET_ENOKEY          128 /* Required key not available */ | ||||
| #undef TARGET_EKEYEXPIRED | ||||
| #define TARGET_EKEYEXPIRED     129 /* Key has expired */ | ||||
| #undef TARGET_EKEYREVOKED | ||||
| #define TARGET_EKEYREVOKED     130 /* Key has been revoked */ | ||||
| #undef TARGET_EKEYREJECTED | ||||
| #define TARGET_EKEYREJECTED    131 /* Key was rejected by service */ | ||||
| #undef TARGET_EOWNERDEAD | ||||
| #define TARGET_EOWNERDEAD      132 /* Owner died */ | ||||
| #undef TARGET_ENOTRECOVERABLE | ||||
| #define TARGET_ENOTRECOVERABLE  133 /* State not recoverable */ | ||||
| #undef TARGET_ERFKILL | ||||
| #define TARGET_ERFKILL         134 /* Operation not possible due to RF-kill */ | ||||
| #undef TARGET_EHWPOISON | ||||
| #define TARGET_EHWPOISON       135 /* Memory page has hardware error */ | ||||
| #endif | ||||
| @ -1,6 +1,8 @@ | ||||
| #ifndef SPARC_TARGET_SYSCALL_H | ||||
| #define SPARC_TARGET_SYSCALL_H | ||||
| 
 | ||||
| #include "target_errno.h" | ||||
| 
 | ||||
| struct target_pt_regs { | ||||
| 	abi_ulong psr; | ||||
| 	abi_ulong pc; | ||||
| @ -9,7 +11,7 @@ struct target_pt_regs { | ||||
| 	abi_ulong u_regs[16]; | ||||
| }; | ||||
| 
 | ||||
| #define UNAME_MACHINE "sun4" | ||||
| #define UNAME_MACHINE "sparc" | ||||
| #define UNAME_MINIMUM_RELEASE "2.6.32" | ||||
| 
 | ||||
| /* SPARC kernels don't define this in their Kconfig, but they have the
 | ||||
|  | ||||
| @ -23,7 +23,7 @@ | ||||
| #define TARGET_NR_capset		 22 /* Linux Specific				   */ | ||||
| #define TARGET_NR_setuid              23 /* Implemented via setreuid in SunOS           */ | ||||
| #define TARGET_NR_getuid              24 /* Common                                      */ | ||||
| /* #define TARGET_NR_time alias	 25    ENOSYS under SunOS			   */ | ||||
| #define TARGET_NR_vmsplice            25 | ||||
| #define TARGET_NR_ptrace              26 /* Common                                      */ | ||||
| #define TARGET_NR_alarm               27 /* Implemented via setitimer in SunOS          */ | ||||
| #define TARGET_NR_sigaltstack	 28 /* Common					   */ | ||||
| @ -149,8 +149,8 @@ | ||||
| #define TARGET_NR_pciconfig_read	148 /* ENOSYS under SunOS                          */ | ||||
| #define TARGET_NR_pciconfig_write	149 /* ENOSYS under SunOS                          */ | ||||
| #define TARGET_NR_getsockname        150 /* Common                                      */ | ||||
| /* #define TARGET_NR_getmsg          151    SunOS Specific                              */ | ||||
| /* #define TARGET_NR_putmsg          152    SunOS Specific                              */ | ||||
| #define TARGET_NR_inotify_init       151 | ||||
| #define TARGET_NR_inotify_add_watch  152 | ||||
| #define TARGET_NR_poll               153 /* Common                                      */ | ||||
| #define TARGET_NR_getdents64		154 /* Linux specific				   */ | ||||
| #define TARGET_NR_fcntl64            155 /* Linux sparc32 Specific                      */ | ||||
| @ -194,7 +194,7 @@ | ||||
| #define TARGET_NR_epoll_create       193 /* Linux Specific                              */ | ||||
| #define TARGET_NR_epoll_ctl          194 /* Linux Specific                              */ | ||||
| #define TARGET_NR_epoll_wait         195 /* Linux Specific                              */ | ||||
| /* #define TARGET_NR_ulimit          196    Linux Specific                              */ | ||||
| #define TARGET_NR_ioprio_set         196 | ||||
| #define TARGET_NR_getppid            197 /* Linux Specific                              */ | ||||
| #define TARGET_NR_sigaction          198 /* Linux Specific                              */ | ||||
| #define TARGET_NR_sgetmask           199 /* Linux Specific                              */ | ||||
| @ -216,7 +216,7 @@ | ||||
| #define TARGET_NR_ipc                215 /* Linux Specific                              */ | ||||
| #define TARGET_NR_sigreturn          216 /* Linux Specific                              */ | ||||
| #define TARGET_NR_clone              217 /* Linux Specific                              */ | ||||
| /* #define TARGET_NR_modify_ldt      218    Linux Specific - i386 specific, unused      */ | ||||
| #define TARGET_NR_ioprio_get         218 | ||||
| #define TARGET_NR_adjtimex           219 /* Linux Specific                              */ | ||||
| #define TARGET_NR_sigprocmask        220 /* Linux Specific                              */ | ||||
| #define TARGET_NR_create_module      221 /* Linux Specific                              */ | ||||
| @ -230,7 +230,7 @@ | ||||
| #define TARGET_NR_setfsgid           229 /* Linux Specific                              */ | ||||
| #define TARGET_NR__newselect         230 /* Linux Specific                              */ | ||||
| #define TARGET_NR_time               231 /* Linux sparc32                               */ | ||||
| /* #define TARGET_NR_oldstat         232    Linux Specific                              */ | ||||
| #define TARGET_NR_splice             232 | ||||
| #define TARGET_NR_stime              233 /* Linux Specific                              */ | ||||
| #define TARGET_NR_statfs64           234 /* Linux Specific                              */ | ||||
| #define TARGET_NR_fstatfs64          235 /* Linux Specific                              */ | ||||
| @ -253,7 +253,7 @@ | ||||
| #define TARGET_NR_getsid             252 | ||||
| #define TARGET_NR_fdatasync          253 | ||||
| #define TARGET_NR_nfsservctl         254 | ||||
| #define TARGET_NR_aplib              255 | ||||
| #define TARGET_NR_sync_file_range    255 | ||||
| #define TARGET_NR_clock_settime	256 | ||||
| #define TARGET_NR_clock_gettime	257 | ||||
| #define TARGET_NR_clock_getres	258 | ||||
| @ -310,7 +310,7 @@ | ||||
| #define TARGET_NR_epoll_pwait	309 | ||||
| #define TARGET_NR_utimensat		310 | ||||
| #define TARGET_NR_signalfd		311 | ||||
| #define TARGET_NR_timerfd		312 | ||||
| #define TARGET_NR_timerfd_create        312 | ||||
| #define TARGET_NR_eventfd		313 | ||||
| #define TARGET_NR_fallocate		314 | ||||
| #define TARGET_NR_timerfd_settime	315 | ||||
| @ -355,3 +355,7 @@ | ||||
| #define TARGET_NR_listen                354 | ||||
| #define TARGET_NR_setsockopt            355 | ||||
| #define TARGET_NR_mlock2                356 | ||||
| #define TARGET_NR_copy_file_range       357 | ||||
| #define TARGET_NR_preadv2               358 | ||||
| #define TARGET_NR_pwritev2              359 | ||||
| #define TARGET_NR_statx                 360 | ||||
|  | ||||
| @ -1,6 +1,8 @@ | ||||
| #ifndef SPARC64_TARGET_SYSCALL_H | ||||
| #define SPARC64_TARGET_SYSCALL_H | ||||
| 
 | ||||
| #include "../sparc/target_errno.h" | ||||
| 
 | ||||
| struct target_pt_regs { | ||||
| 	abi_ulong u_regs[16]; | ||||
| 	abi_ulong tstate; | ||||
| @ -10,7 +12,7 @@ struct target_pt_regs { | ||||
| 	abi_ulong fprs; | ||||
| }; | ||||
| 
 | ||||
| #define UNAME_MACHINE "sun4u" | ||||
| #define UNAME_MACHINE "sparc64" | ||||
| #define UNAME_MINIMUM_RELEASE "2.6.32" | ||||
| 
 | ||||
| /* SPARC kernels don't define this in their Kconfig, but they have the
 | ||||
| @ -29,5 +31,4 @@ static inline abi_ulong target_shmlba(CPUSPARCState *env) | ||||
| { | ||||
|     return MAX(TARGET_PAGE_SIZE, 16 * 1024); | ||||
| } | ||||
| 
 | ||||
| #endif /* SPARC64_TARGET_SYSCALL_H */ | ||||
|  | ||||
| @ -6546,28 +6546,50 @@ static int target_to_host_fcntl_cmd(int cmd) | ||||
|     return -TARGET_EINVAL; | ||||
| } | ||||
| 
 | ||||
| #define TRANSTBL_CONVERT(a) { -1, TARGET_##a, -1, a } | ||||
| static const bitmask_transtbl flock_tbl[] = { | ||||
|     TRANSTBL_CONVERT(F_RDLCK), | ||||
|     TRANSTBL_CONVERT(F_WRLCK), | ||||
|     TRANSTBL_CONVERT(F_UNLCK), | ||||
|     TRANSTBL_CONVERT(F_EXLCK), | ||||
|     TRANSTBL_CONVERT(F_SHLCK), | ||||
|     { 0, 0, 0, 0 } | ||||
| }; | ||||
| #define FLOCK_TRANSTBL \ | ||||
|     switch (type) { \ | ||||
|     TRANSTBL_CONVERT(F_RDLCK); \ | ||||
|     TRANSTBL_CONVERT(F_WRLCK); \ | ||||
|     TRANSTBL_CONVERT(F_UNLCK); \ | ||||
|     TRANSTBL_CONVERT(F_EXLCK); \ | ||||
|     TRANSTBL_CONVERT(F_SHLCK); \ | ||||
|     } | ||||
| 
 | ||||
| static int target_to_host_flock(int type) | ||||
| { | ||||
| #define TRANSTBL_CONVERT(a) case TARGET_##a: return a | ||||
|     FLOCK_TRANSTBL | ||||
| #undef  TRANSTBL_CONVERT | ||||
|     return -TARGET_EINVAL; | ||||
| } | ||||
| 
 | ||||
| static int host_to_target_flock(int type) | ||||
| { | ||||
| #define TRANSTBL_CONVERT(a) case a: return TARGET_##a | ||||
|     FLOCK_TRANSTBL | ||||
| #undef  TRANSTBL_CONVERT | ||||
|     /* if we don't know how to convert the value coming
 | ||||
|      * from the host we copy to the target field as-is | ||||
|      */ | ||||
|     return type; | ||||
| } | ||||
| 
 | ||||
| static inline abi_long copy_from_user_flock(struct flock64 *fl, | ||||
|                                             abi_ulong target_flock_addr) | ||||
| { | ||||
|     struct target_flock *target_fl; | ||||
|     short l_type; | ||||
|     int l_type; | ||||
| 
 | ||||
|     if (!lock_user_struct(VERIFY_READ, target_fl, target_flock_addr, 1)) { | ||||
|         return -TARGET_EFAULT; | ||||
|     } | ||||
| 
 | ||||
|     __get_user(l_type, &target_fl->l_type); | ||||
|     fl->l_type = target_to_host_bitmask(l_type, flock_tbl); | ||||
|     l_type = target_to_host_flock(l_type); | ||||
|     if (l_type < 0) { | ||||
|         return l_type; | ||||
|     } | ||||
|     fl->l_type = l_type; | ||||
|     __get_user(fl->l_whence, &target_fl->l_whence); | ||||
|     __get_user(fl->l_start, &target_fl->l_start); | ||||
|     __get_user(fl->l_len, &target_fl->l_len); | ||||
| @ -6586,7 +6608,7 @@ static inline abi_long copy_to_user_flock(abi_ulong target_flock_addr, | ||||
|         return -TARGET_EFAULT; | ||||
|     } | ||||
| 
 | ||||
|     l_type = host_to_target_bitmask(fl->l_type, flock_tbl); | ||||
|     l_type = host_to_target_flock(fl->l_type); | ||||
|     __put_user(l_type, &target_fl->l_type); | ||||
|     __put_user(fl->l_whence, &target_fl->l_whence); | ||||
|     __put_user(fl->l_start, &target_fl->l_start); | ||||
| @ -6604,14 +6626,18 @@ static inline abi_long copy_from_user_oabi_flock64(struct flock64 *fl, | ||||
|                                                    abi_ulong target_flock_addr) | ||||
| { | ||||
|     struct target_oabi_flock64 *target_fl; | ||||
|     short l_type; | ||||
|     int l_type; | ||||
| 
 | ||||
|     if (!lock_user_struct(VERIFY_READ, target_fl, target_flock_addr, 1)) { | ||||
|         return -TARGET_EFAULT; | ||||
|     } | ||||
| 
 | ||||
|     __get_user(l_type, &target_fl->l_type); | ||||
|     fl->l_type = target_to_host_bitmask(l_type, flock_tbl); | ||||
|     l_type = target_to_host_flock(l_type); | ||||
|     if (l_type < 0) { | ||||
|         return l_type; | ||||
|     } | ||||
|     fl->l_type = l_type; | ||||
|     __get_user(fl->l_whence, &target_fl->l_whence); | ||||
|     __get_user(fl->l_start, &target_fl->l_start); | ||||
|     __get_user(fl->l_len, &target_fl->l_len); | ||||
| @ -6630,7 +6656,7 @@ static inline abi_long copy_to_user_oabi_flock64(abi_ulong target_flock_addr, | ||||
|         return -TARGET_EFAULT; | ||||
|     } | ||||
| 
 | ||||
|     l_type = host_to_target_bitmask(fl->l_type, flock_tbl); | ||||
|     l_type = host_to_target_flock(fl->l_type); | ||||
|     __put_user(l_type, &target_fl->l_type); | ||||
|     __put_user(fl->l_whence, &target_fl->l_whence); | ||||
|     __put_user(fl->l_start, &target_fl->l_start); | ||||
| @ -6645,14 +6671,18 @@ static inline abi_long copy_from_user_flock64(struct flock64 *fl, | ||||
|                                               abi_ulong target_flock_addr) | ||||
| { | ||||
|     struct target_flock64 *target_fl; | ||||
|     short l_type; | ||||
|     int l_type; | ||||
| 
 | ||||
|     if (!lock_user_struct(VERIFY_READ, target_fl, target_flock_addr, 1)) { | ||||
|         return -TARGET_EFAULT; | ||||
|     } | ||||
| 
 | ||||
|     __get_user(l_type, &target_fl->l_type); | ||||
|     fl->l_type = target_to_host_bitmask(l_type, flock_tbl); | ||||
|     l_type = target_to_host_flock(l_type); | ||||
|     if (l_type < 0) { | ||||
|         return l_type; | ||||
|     } | ||||
|     fl->l_type = l_type; | ||||
|     __get_user(fl->l_whence, &target_fl->l_whence); | ||||
|     __get_user(fl->l_start, &target_fl->l_start); | ||||
|     __get_user(fl->l_len, &target_fl->l_len); | ||||
| @ -6671,7 +6701,7 @@ static inline abi_long copy_to_user_flock64(abi_ulong target_flock_addr, | ||||
|         return -TARGET_EFAULT; | ||||
|     } | ||||
| 
 | ||||
|     l_type = host_to_target_bitmask(fl->l_type, flock_tbl); | ||||
|     l_type = host_to_target_flock(fl->l_type); | ||||
|     __put_user(l_type, &target_fl->l_type); | ||||
|     __put_user(fl->l_whence, &target_fl->l_whence); | ||||
|     __put_user(fl->l_start, &target_fl->l_start); | ||||
|  | ||||
| @ -2441,6 +2441,15 @@ struct target_statfs64 { | ||||
| #define TARGET_F_SETLKW        7 | ||||
| #define TARGET_F_GETOWN        11       /*  for sockets. */ | ||||
| #define TARGET_F_SETOWN        12       /*  for sockets. */ | ||||
| #elif defined(TARGET_SPARC) | ||||
| #define TARGET_F_RDLCK         1 | ||||
| #define TARGET_F_WRLCK         2 | ||||
| #define TARGET_F_UNLCK         3 | ||||
| #define TARGET_F_GETOWN        5       /*  for sockets. */ | ||||
| #define TARGET_F_SETOWN        6       /*  for sockets. */ | ||||
| #define TARGET_F_GETLK         7 | ||||
| #define TARGET_F_SETLK         8 | ||||
| #define TARGET_F_SETLKW        9 | ||||
| #else | ||||
| #define TARGET_F_GETLK         5 | ||||
| #define TARGET_F_SETLK         6 | ||||
| @ -2634,6 +2643,17 @@ struct target_statfs64 { | ||||
| #define TARGET_O_SYNC    (TARGET___O_SYNC | TARGET_O_DSYNC) | ||||
| #endif | ||||
| 
 | ||||
| #if defined(TARGET_SPARC) | ||||
| #define TARGET_ARCH_FLOCK_PAD abi_short __unused; | ||||
| #define TARGET_ARCH_FLOCK64_PAD abi_short __unused; | ||||
| #elif defined(TARGET_MIPS) | ||||
| #define TARGET_ARCH_FLOCK_PAD abi_long pad[4]; | ||||
| #define TARGET_ARCH_FLOCK64_PAD | ||||
| #else | ||||
| #define TARGET_ARCH_FLOCK_PAD | ||||
| #define TARGET_ARCH_FLOCK64_PAD | ||||
| #endif | ||||
| 
 | ||||
| struct target_flock { | ||||
|     short l_type; | ||||
|     short l_whence; | ||||
| @ -2643,9 +2663,7 @@ struct target_flock { | ||||
|     abi_long l_sysid; | ||||
| #endif | ||||
|     int l_pid; | ||||
| #if defined(TARGET_MIPS) | ||||
|     abi_long pad[4]; | ||||
| #endif | ||||
|     TARGET_ARCH_FLOCK_PAD | ||||
| }; | ||||
| 
 | ||||
| struct target_flock64 { | ||||
| @ -2654,6 +2672,7 @@ struct target_flock64 { | ||||
|     abi_llong l_start; | ||||
|     abi_llong l_len; | ||||
|     abi_int   l_pid; | ||||
|     TARGET_ARCH_FLOCK64_PAD | ||||
| }; | ||||
| 
 | ||||
| struct target_f_owner_ex { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Peter Maydell
						Peter Maydell