qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 0/6] linux-user: fix sparc32plus
@ 2018-05-09 23:11 Laurent Vivier
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 1/6] linux-user: define correct fcntl() values for sparc Laurent Vivier
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Laurent Vivier @ 2018-05-09 23:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: Max Filippov, Laurent Vivier, Riku Voipio, Eric Blake

This series fixes several problems with sparc and
allows to debootstrap a chroot using qemu-sparc32plus and
debian sparc/wheezy.

For the moment, networking doesn't work.

v2:
   - Add a patch to fix UNAME_MACHINE
   - move sparc errno definitions to linux-user/sparc/target_errno.h
   - add common switch macro to convert flock l_type to/from target
     to/from host
   - return -TARGET_EINVAL is l_type cannot be converted

Laurent Vivier (6):
  linux-user: define correct fcntl() values for sparc
  linux-user: fix flock/flock64 padding
  linux-user: update sparc/syscall_nr.h to linux header 4.16
  linux-user: fix conversion of flock/flock64 l_type field
  linux-user: add sparc/sparc64 specific errno
  linux-user: fix UNAME_MACHINE for sparc/sparc64

 linux-user/sparc/syscall_nr.h       |  32 +++++-
 linux-user/sparc/target_errno.h     | 207 ++++++++++++++++++++++++++++++++++++
 linux-user/sparc/target_syscall.h   |   4 +-
 linux-user/sparc64/syscall_nr.h     |  20 ++--
 linux-user/sparc64/target_syscall.h |   5 +-
 linux-user/syscall.c                |  66 ++++++++----
 linux-user/syscall_defs.h           |  25 ++++-
 7 files changed, 326 insertions(+), 33 deletions(-)
 create mode 100644 linux-user/sparc/target_errno.h

-- 
2.14.3

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Qemu-devel] [PATCH v2 1/6] linux-user: define correct fcntl() values for sparc
  2018-05-09 23:11 [Qemu-devel] [PATCH v2 0/6] linux-user: fix sparc32plus Laurent Vivier
@ 2018-05-09 23:11 ` Laurent Vivier
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 2/6] linux-user: fix flock/flock64 padding Laurent Vivier
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Laurent Vivier @ 2018-05-09 23:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: Max Filippov, Laurent Vivier, Riku Voipio, Eric Blake

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
---
 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] 12+ messages in thread

* [Qemu-devel] [PATCH v2 2/6] linux-user: fix flock/flock64 padding
  2018-05-09 23:11 [Qemu-devel] [PATCH v2 0/6] linux-user: fix sparc32plus Laurent Vivier
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 1/6] linux-user: define correct fcntl() values for sparc Laurent Vivier
@ 2018-05-09 23:11 ` Laurent Vivier
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 3/6] linux-user: update sparc/syscall_nr.h to linux header 4.16 Laurent Vivier
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Laurent Vivier @ 2018-05-09 23:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: Max Filippov, Laurent Vivier, Riku Voipio, Eric Blake

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>
---
 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] 12+ messages in thread

* [Qemu-devel] [PATCH v2 3/6] linux-user: update sparc/syscall_nr.h to linux header 4.16
  2018-05-09 23:11 [Qemu-devel] [PATCH v2 0/6] linux-user: fix sparc32plus Laurent Vivier
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 1/6] linux-user: define correct fcntl() values for sparc Laurent Vivier
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 2/6] linux-user: fix flock/flock64 padding Laurent Vivier
@ 2018-05-09 23:11 ` Laurent Vivier
  2018-05-10  3:58   ` Max Filippov
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 4/6] linux-user: fix conversion of flock/flock64 l_type field Laurent Vivier
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Laurent Vivier @ 2018-05-09 23:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: Max Filippov, Laurent Vivier, Riku Voipio, Eric Blake

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>
---
 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] 12+ messages in thread

* [Qemu-devel] [PATCH v2 4/6] linux-user: fix conversion of flock/flock64 l_type field
  2018-05-09 23:11 [Qemu-devel] [PATCH v2 0/6] linux-user: fix sparc32plus Laurent Vivier
                   ` (2 preceding siblings ...)
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 3/6] linux-user: update sparc/syscall_nr.h to linux header 4.16 Laurent Vivier
@ 2018-05-09 23:11 ` Laurent Vivier
  2018-05-10  3:28   ` Max Filippov
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 5/6] linux-user: add sparc/sparc64 specific errno Laurent Vivier
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 6/6] linux-user: fix UNAME_MACHINE for sparc/sparc64 Laurent Vivier
  5 siblings, 1 reply; 12+ messages in thread
From: Laurent Vivier @ 2018-05-09 23:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: Max Filippov, Laurent Vivier, Riku Voipio, Eric Blake

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>
---

Notes:
    v2:
      - add common switch macro to convert to/from target to/from host
      - return -TARGET_EINVAL is l_type cannot be converted

 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] 12+ messages in thread

* [Qemu-devel] [PATCH v2 5/6] linux-user: add sparc/sparc64 specific errno
  2018-05-09 23:11 [Qemu-devel] [PATCH v2 0/6] linux-user: fix sparc32plus Laurent Vivier
                   ` (3 preceding siblings ...)
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 4/6] linux-user: fix conversion of flock/flock64 l_type field Laurent Vivier
@ 2018-05-09 23:11 ` Laurent Vivier
  2018-05-10  3:29   ` Max Filippov
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 6/6] linux-user: fix UNAME_MACHINE for sparc/sparc64 Laurent Vivier
  5 siblings, 1 reply; 12+ messages in thread
From: Laurent Vivier @ 2018-05-09 23:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: Max Filippov, Laurent Vivier, Riku Voipio, Eric Blake

Copied from linux/arch/sparc/include/uapi/asm/errno.h

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---

Notes:
    v2:
      - move sparc errno definitions to linux-user/sparc/target_errno.h

 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] 12+ messages in thread

* [Qemu-devel] [PATCH v2 6/6] linux-user: fix UNAME_MACHINE for sparc/sparc64
  2018-05-09 23:11 [Qemu-devel] [PATCH v2 0/6] linux-user: fix sparc32plus Laurent Vivier
                   ` (4 preceding siblings ...)
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 5/6] linux-user: add sparc/sparc64 specific errno Laurent Vivier
@ 2018-05-09 23:11 ` Laurent Vivier
  2018-05-10  0:42   ` Philippe Mathieu-Daudé
  2018-05-10  3:37   ` Max Filippov
  5 siblings, 2 replies; 12+ messages in thread
From: Laurent Vivier @ 2018-05-09 23:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: Max Filippov, Laurent Vivier, Riku Voipio, Eric Blake

"sun4" is not recognized by config.guess.
linux defines sparc and sparc64 in arch/sparc/Makefile.

Signed-off-by: Laurent Vivier <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] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2 6/6] linux-user: fix UNAME_MACHINE for sparc/sparc64
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 6/6] linux-user: fix UNAME_MACHINE for sparc/sparc64 Laurent Vivier
@ 2018-05-10  0:42   ` Philippe Mathieu-Daudé
  2018-05-10  3:37   ` Max Filippov
  1 sibling, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-05-10  0:42 UTC (permalink / raw)
  To: Laurent Vivier, qemu-devel; +Cc: Max Filippov, Riku Voipio

On 05/09/2018 08:11 PM, Laurent Vivier wrote:
> "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>

> ---
>  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
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2 4/6] linux-user: fix conversion of flock/flock64 l_type field
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 4/6] linux-user: fix conversion of flock/flock64 l_type field Laurent Vivier
@ 2018-05-10  3:28   ` Max Filippov
  0 siblings, 0 replies; 12+ messages in thread
From: Max Filippov @ 2018-05-10  3:28 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: qemu-devel, Riku Voipio, Eric Blake

On Wed, May 9, 2018 at 4:11 PM, Laurent Vivier <laurent@vivier.eu> wrote:
> 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>
> ---
>
> Notes:
>     v2:
>       - add common switch macro to convert to/from target to/from host
>       - return -TARGET_EINVAL is l_type cannot be converted
>
>  linux-user/syscall.c | 66 ++++++++++++++++++++++++++++++++++++++--------------
>  1 file changed, 48 insertions(+), 18 deletions(-)

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>

-- 
Thanks.
-- Max

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2 5/6] linux-user: add sparc/sparc64 specific errno
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 5/6] linux-user: add sparc/sparc64 specific errno Laurent Vivier
@ 2018-05-10  3:29   ` Max Filippov
  0 siblings, 0 replies; 12+ messages in thread
From: Max Filippov @ 2018-05-10  3:29 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: qemu-devel, Riku Voipio, Eric Blake

On Wed, May 9, 2018 at 4:11 PM, Laurent Vivier <laurent@vivier.eu> wrote:
> Copied from linux/arch/sparc/include/uapi/asm/errno.h
>
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
>
> Notes:
>     v2:
>       - move sparc errno definitions to linux-user/sparc/target_errno.h
>
>  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

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>

-- 
Thanks.
-- Max

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2 6/6] linux-user: fix UNAME_MACHINE for sparc/sparc64
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 6/6] linux-user: fix UNAME_MACHINE for sparc/sparc64 Laurent Vivier
  2018-05-10  0:42   ` Philippe Mathieu-Daudé
@ 2018-05-10  3:37   ` Max Filippov
  1 sibling, 0 replies; 12+ messages in thread
From: Max Filippov @ 2018-05-10  3:37 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: qemu-devel, Riku Voipio, Eric Blake

On Wed, May 9, 2018 at 4:11 PM, Laurent Vivier <laurent@vivier.eu> wrote:
> "sun4" is not recognized by config.guess.
> linux defines sparc and sparc64 in arch/sparc/Makefile.
>
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
>  linux-user/sparc/target_syscall.h   | 2 +-
>  linux-user/sparc64/target_syscall.h | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>

-- 
Thanks.
-- Max

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2 3/6] linux-user: update sparc/syscall_nr.h to linux header 4.16
  2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 3/6] linux-user: update sparc/syscall_nr.h to linux header 4.16 Laurent Vivier
@ 2018-05-10  3:58   ` Max Filippov
  0 siblings, 0 replies; 12+ messages in thread
From: Max Filippov @ 2018-05-10  3:58 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: qemu-devel, Riku Voipio, Eric Blake

On Wed, May 9, 2018 at 4:11 PM, Laurent Vivier <laurent@vivier.eu> wrote:
> 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>
> ---
>  linux-user/sparc/syscall_nr.h   | 32 +++++++++++++++++++++++++++++++-
>  linux-user/sparc64/syscall_nr.h | 20 ++++++++++++--------
>  2 files changed, 43 insertions(+), 9 deletions(-)

Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>

-- 
Thanks.
-- Max

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2018-05-10  3:58 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-09 23:11 [Qemu-devel] [PATCH v2 0/6] linux-user: fix sparc32plus Laurent Vivier
2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 1/6] linux-user: define correct fcntl() values for sparc Laurent Vivier
2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 2/6] linux-user: fix flock/flock64 padding Laurent Vivier
2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 3/6] linux-user: update sparc/syscall_nr.h to linux header 4.16 Laurent Vivier
2018-05-10  3:58   ` Max Filippov
2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 4/6] linux-user: fix conversion of flock/flock64 l_type field Laurent Vivier
2018-05-10  3:28   ` Max Filippov
2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 5/6] linux-user: add sparc/sparc64 specific errno Laurent Vivier
2018-05-10  3:29   ` Max Filippov
2018-05-09 23:11 ` [Qemu-devel] [PATCH v2 6/6] linux-user: fix UNAME_MACHINE for sparc/sparc64 Laurent Vivier
2018-05-10  0:42   ` Philippe Mathieu-Daudé
2018-05-10  3:37   ` Max Filippov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).