* [Qemu-devel] [PULL 1/7] linux-user: define correct fcntl() values for sparc
2018-05-14 18:19 [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Laurent Vivier
@ 2018-05-14 18:19 ` Laurent Vivier
2018-05-14 18:19 ` [Qemu-devel] [PULL 2/7] linux-user: fix flock/flock64 padding Laurent Vivier
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2018-05-14 18:19 UTC (permalink / raw)
To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Message-Id: <20180509231123.20864-2-laurent@vivier.eu>
---
linux-user/syscall_defs.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 361bb83a29..ec3f561685 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -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
--
2.14.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 2/7] linux-user: fix flock/flock64 padding
2018-05-14 18:19 [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Laurent Vivier
2018-05-14 18:19 ` [Qemu-devel] [PULL 1/7] linux-user: define correct fcntl() values for sparc Laurent Vivier
@ 2018-05-14 18:19 ` Laurent Vivier
2018-05-14 18:19 ` [Qemu-devel] [PULL 3/7] linux-user: update sparc/syscall_nr.h to linux header 4.16 Laurent Vivier
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2018-05-14 18:19 UTC (permalink / raw)
To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier
include/uapi/asm-generic/fcntl.h insert a padding macro at
the end of the structures flock and flock64.
This macro is defined to "short __unused;" on sparc,
and "long pad[4]" on mips.
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Message-Id: <20180509231123.20864-3-laurent@vivier.eu>
---
linux-user/syscall_defs.h | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index ec3f561685..e4cd87cc00 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -2643,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;
@@ -2652,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 {
@@ -2663,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 {
--
2.14.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 3/7] linux-user: update sparc/syscall_nr.h to linux header 4.16
2018-05-14 18:19 [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Laurent Vivier
2018-05-14 18:19 ` [Qemu-devel] [PULL 1/7] linux-user: define correct fcntl() values for sparc Laurent Vivier
2018-05-14 18:19 ` [Qemu-devel] [PULL 2/7] linux-user: fix flock/flock64 padding Laurent Vivier
@ 2018-05-14 18:19 ` Laurent Vivier
2018-05-14 18:19 ` [Qemu-devel] [PULL 4/7] linux-user: fix conversion of flock/flock64 l_type field Laurent Vivier
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2018-05-14 18:19 UTC (permalink / raw)
To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier
And kill sys_aplib, add sys_sync_file_range:
on sparc, since linux 2.6.17, aplib syscall has been replaced
by sync_file_range syscall.
(289eee6fa78e ["SPARC]: Wire up sys_sync_file_range() into syscall tables.")
The syscall has been removed in linux v2.5.71
(6196166fad "[SPARC64]: Kill sys_aplib.")
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Message-Id: <20180509231123.20864-4-laurent@vivier.eu>
---
linux-user/sparc/syscall_nr.h | 32 +++++++++++++++++++++++++++++++-
linux-user/sparc64/syscall_nr.h | 20 ++++++++++++--------
2 files changed, 43 insertions(+), 9 deletions(-)
diff --git a/linux-user/sparc/syscall_nr.h b/linux-user/sparc/syscall_nr.h
index e713c9d5f4..2d77e19bec 100644
--- a/linux-user/sparc/syscall_nr.h
+++ b/linux-user/sparc/syscall_nr.h
@@ -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
diff --git a/linux-user/sparc64/syscall_nr.h b/linux-user/sparc64/syscall_nr.h
index 2b49ead267..9391645598 100644
--- a/linux-user/sparc64/syscall_nr.h
+++ b/linux-user/sparc64/syscall_nr.h
@@ -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
--
2.14.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 4/7] linux-user: fix conversion of flock/flock64 l_type field
2018-05-14 18:19 [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Laurent Vivier
` (2 preceding siblings ...)
2018-05-14 18:19 ` [Qemu-devel] [PULL 3/7] linux-user: update sparc/syscall_nr.h to linux header 4.16 Laurent Vivier
@ 2018-05-14 18:19 ` Laurent Vivier
2018-05-14 18:19 ` [Qemu-devel] [PULL 5/7] linux-user: add sparc/sparc64 specific errno Laurent Vivier
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2018-05-14 18:19 UTC (permalink / raw)
To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier
As l_type values (F_RDLCK, F_WRLCK, F_UNLCK, F_EXLCK, F_SHLCK)
are not bitmasks, we can't use target_to_host_bitmask() and
host_to_target_bitmask() to convert them.
Introduce target_to_host_flock() and host_to_target_flock()
to convert values between host and target.
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Message-Id: <20180509231123.20864-5-laurent@vivier.eu>
---
linux-user/syscall.c | 66 ++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 48 insertions(+), 18 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index e4825747f9..af8603f1b7 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -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);
--
2.14.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 5/7] linux-user: add sparc/sparc64 specific errno
2018-05-14 18:19 [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Laurent Vivier
` (3 preceding siblings ...)
2018-05-14 18:19 ` [Qemu-devel] [PULL 4/7] linux-user: fix conversion of flock/flock64 l_type field Laurent Vivier
@ 2018-05-14 18:19 ` Laurent Vivier
2018-05-14 18:19 ` [Qemu-devel] [PULL 6/7] linux-user: fix UNAME_MACHINE for sparc/sparc64 Laurent Vivier
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2018-05-14 18:19 UTC (permalink / raw)
To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier
Copied from linux/arch/sparc/include/uapi/asm/errno.h
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Message-Id: <20180509231123.20864-6-laurent@vivier.eu>
---
linux-user/sparc/target_errno.h | 207 ++++++++++++++++++++++++++++++++++++
linux-user/sparc/target_syscall.h | 2 +
linux-user/sparc64/target_syscall.h | 3 +-
3 files changed, 211 insertions(+), 1 deletion(-)
create mode 100644 linux-user/sparc/target_errno.h
diff --git a/linux-user/sparc/target_errno.h b/linux-user/sparc/target_errno.h
new file mode 100644
index 0000000000..9b846899cd
--- /dev/null
+++ b/linux-user/sparc/target_errno.h
@@ -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
diff --git a/linux-user/sparc/target_syscall.h b/linux-user/sparc/target_syscall.h
index 5f09abfe89..3725875fcf 100644
--- a/linux-user/sparc/target_syscall.h
+++ b/linux-user/sparc/target_syscall.h
@@ -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;
diff --git a/linux-user/sparc64/target_syscall.h b/linux-user/sparc64/target_syscall.h
index 2cbbaaed1b..34f49df4a1 100644
--- a/linux-user/sparc64/target_syscall.h
+++ b/linux-user/sparc64/target_syscall.h
@@ -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;
@@ -29,5 +31,4 @@ static inline abi_ulong target_shmlba(CPUSPARCState *env)
{
return MAX(TARGET_PAGE_SIZE, 16 * 1024);
}
-
#endif /* SPARC64_TARGET_SYSCALL_H */
--
2.14.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 6/7] linux-user: fix UNAME_MACHINE for sparc/sparc64
2018-05-14 18:19 [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Laurent Vivier
` (4 preceding siblings ...)
2018-05-14 18:19 ` [Qemu-devel] [PULL 5/7] linux-user: add sparc/sparc64 specific errno Laurent Vivier
@ 2018-05-14 18:19 ` Laurent Vivier
2018-05-14 18:19 ` [Qemu-devel] [PULL 7/7] linux-user: correctly align types in thunking code Laurent Vivier
2018-05-15 10:11 ` [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Peter Maydell
7 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2018-05-14 18:19 UTC (permalink / raw)
To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier
"sun4" is not recognized by config.guess.
linux defines sparc and sparc64 in arch/sparc/Makefile.
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Message-Id: <20180509231123.20864-7-laurent@vivier.eu>
---
linux-user/sparc/target_syscall.h | 2 +-
linux-user/sparc64/target_syscall.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/linux-user/sparc/target_syscall.h b/linux-user/sparc/target_syscall.h
index 3725875fcf..b9160a771b 100644
--- a/linux-user/sparc/target_syscall.h
+++ b/linux-user/sparc/target_syscall.h
@@ -11,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
diff --git a/linux-user/sparc64/target_syscall.h b/linux-user/sparc64/target_syscall.h
index 34f49df4a1..3073a23e03 100644
--- a/linux-user/sparc64/target_syscall.h
+++ b/linux-user/sparc64/target_syscall.h
@@ -12,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
--
2.14.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 7/7] linux-user: correctly align types in thunking code
2018-05-14 18:19 [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Laurent Vivier
` (5 preceding siblings ...)
2018-05-14 18:19 ` [Qemu-devel] [PULL 6/7] linux-user: fix UNAME_MACHINE for sparc/sparc64 Laurent Vivier
@ 2018-05-14 18:19 ` Laurent Vivier
2018-05-15 10:11 ` [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Peter Maydell
7 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2018-05-14 18:19 UTC (permalink / raw)
To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier
This is a follow up
of patch:
commit c2e3dee6e03527baf8698698cce76b1a3174969a
Author: Laurent Vivier <laurent@vivier.eu>
Date: Sun Feb 13 23:37:34 2011 +0100
linux-user: Define target alignment size
In my case m68k aligns "int" on 2 not 4. You can check this with the
following program:
int main(void)
{
struct rtentry rt;
printf("rt_pad1 %ld %zd\n", offsetof(struct rtentry, rt_pad1),
sizeof(rt.rt_pad1));
printf("rt_dst %ld %zd\n", offsetof(struct rtentry, rt_dst),
sizeof(rt.rt_dst));
printf("rt_gateway %ld %zd\n", offsetof(struct rtentry, rt_gateway),
sizeof(rt.rt_gateway));
printf("rt_genmask %ld %zd\n", offsetof(struct rtentry, rt_genmask),
sizeof(rt.rt_genmask));
printf("rt_flags %ld %zd\n", offsetof(struct rtentry, rt_flags),
sizeof(rt.rt_flags));
printf("rt_pad2 %ld %zd\n", offsetof(struct rtentry, rt_pad2),
sizeof(rt.rt_pad2));
printf("rt_pad3 %ld %zd\n", offsetof(struct rtentry, rt_pad3),
sizeof(rt.rt_pad3));
printf("rt_pad4 %ld %zd\n", offsetof(struct rtentry, rt_pad4),
sizeof(rt.rt_pad4));
printf("rt_metric %ld %zd\n", offsetof(struct rtentry, rt_metric),
sizeof(rt.rt_metric));
printf("rt_dev %ld %zd\n", offsetof(struct rtentry, rt_dev),
sizeof(rt.rt_dev));
printf("rt_mtu %ld %zd\n", offsetof(struct rtentry, rt_mtu),
sizeof(rt.rt_mtu));
printf("rt_window %ld %zd\n", offsetof(struct rtentry, rt_window),
sizeof(rt.rt_window));
printf("rt_irtt %ld %zd\n", offsetof(struct rtentry, rt_irtt),
sizeof(rt.rt_irtt));
}
And result is :
i386
rt_pad1 0 4
rt_dst 4 16
rt_gateway 20 16
rt_genmask 36 16
rt_flags 52 2
rt_pad2 54 2
rt_pad3 56 4
rt_pad4 62 2
rt_metric 64 2
rt_dev 68 4
rt_mtu 72 4
rt_window 76 4
rt_irtt 80 2
m68k
rt_pad1 0 4
rt_dst 4 16
rt_gateway 20 16
rt_genmask 36 16
rt_flags 52 2
rt_pad2 54 2
rt_pad3 56 4
rt_pad4 62 2
rt_metric 64 2
rt_dev 66 4
rt_mtu 70 4
rt_window 74 4
rt_irtt 78 2
This affects the "route" command :
WITHOUT this patch:
$ sudo route add -net default gw 10.0.3.1 window 1024 irtt 2 eth0
$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.3.1 0.0.0.0 UG 0 67108866 32768 eth0
10.0.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
WITH this patch:
$ sudo route add -net default gw 10.0.3.1 window 1024 irtt 2 eth0
$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.3.1 0.0.0.0 UG 0 1024 2 eth0
10.0.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20180510205949.26455-1-laurent@vivier.eu>
---
include/exec/user/thunk.h | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/include/exec/user/thunk.h b/include/exec/user/thunk.h
index f19ef4b230..8f55b233b3 100644
--- a/include/exec/user/thunk.h
+++ b/include/exec/user/thunk.h
@@ -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:
--
2.14.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches
2018-05-14 18:19 [Qemu-devel] [PULL 0/7] Linux user for 2.13 patches Laurent Vivier
` (6 preceding siblings ...)
2018-05-14 18:19 ` [Qemu-devel] [PULL 7/7] linux-user: correctly align types in thunking code Laurent Vivier
@ 2018-05-15 10:11 ` Peter Maydell
7 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2018-05-15 10:11 UTC (permalink / raw)
To: Laurent Vivier; +Cc: QEMU Developers, Riku Voipio
On 14 May 2018 at 19:19, Laurent Vivier <laurent@vivier.eu> wrote:
> The following changes since commit c74e62ee3e2dc2955e07d004c71badecb68a84eb:
>
> Merge remote-tracking branch 'remotes/rth/tags/cota-target-pull-request' into staging (2018-05-11 15:41:29 +0100)
>
> are available in the Git repository at:
>
> git://github.com/vivier/qemu.git tags/linux-user-for-2.13-pull-request
>
> for you to fetch changes up to f606e4d6258fa82c3f6c1cc762ebe483db5f5db6:
>
> linux-user: correctly align types in thunking code (2018-05-14 12:01:21 +0200)
>
> ----------------------------------------------------------------
> Mostly sparc fixes, allowing to do a "debootstrap --second-stage",
> including some structures alignment fixes.
> This series fixes following LTP 20180118 tests on a x86_64 host:
> armhf: epoll_wait02 getpriority01 nice03 pselect01 pselect01_64
> arm64: epoll_wait02 getpriority01 nice03 poll02 pselect01 pselect01_64 select04
> s390x: epoll_wait02 getpriority01 nice03 poll02 pselect01 pselect01_64 select04
> mips: epoll_wait02 getpriority01 nice03 poll02 pselect01 pselect01_64
> mips64el: epoll_wait02 getpriority01 nice03 pselect01 pselect01_64 select04
> mipsel: epoll_wait02 getpriority01 nice03 madvise06 poll02 select04
> ppc64: epoll_wait02 getpriority01 nice03 poll02 select04
> ppc64el: getpriority01 nice03 pselect01 select04
> sh4: getpriority01 nice03 madvise06 poll02 pselect01 select04
> ----------------------------------------------------------------
>
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread