All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor
@ 2021-07-08 14:11 Philippe Mathieu-Daudé
  2021-07-08 14:11 ` [PATCH v2 1/8] linux-user/syscall: Fix RF-kill errno (typo in ERFKILL) Philippe Mathieu-Daudé
                   ` (7 more replies)
  0 siblings, 8 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 14:11 UTC (permalink / raw)
  To: qemu-devel
  Cc: Taylor Simpson, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

Hi,

This series extract code related to target errno conversion
(to/from host) into a separate header.

Since v1:
- addressed Taylor / Richard / Laurent review comments

Supersedes: <20210704183755.655002-1-f4bug@amsat.org>
Based-on: <20210708100756.212085-1-laurent@vivier.eu>

Philippe Mathieu-Daudé (8):
  linux-user/syscall: Fix RF-kill errno (typo in ERFKILL)
  linux-user/sparc: Rename target_errno.h -> target_errno_defs.h
  linux-user: Extract target errno to 'target_errno_defs.h'
  linux-user/alpha: Move errno definitions to 'target_errno_defs.h'
  linux-user/hppa: Move errno definitions to 'target_errno_defs.h'
  linux-user/mips: Move errno definitions to 'target_errno_defs.h'
  linux-user/syscall: Introduce errno_exists()
  linux-user: Simplify host <-> target errno conversion using macros

 linux-user/aarch64/target_errno_defs.h        |   6 +
 linux-user/alpha/target_errno_defs.h          | 200 ++++++++++++++++
 linux-user/alpha/target_syscall.h             | 194 ----------------
 linux-user/arm/target_errno_defs.h            |   6 +
 linux-user/cris/target_errno_defs.h           |   6 +
 .../target_errno_defs.h}                      |   4 +-
 linux-user/hexagon/target_errno_defs.h        |   6 +
 linux-user/hppa/target_errno_defs.h           | 216 +++++++++++++++++
 linux-user/hppa/target_syscall.h              | 210 -----------------
 linux-user/i386/target_errno_defs.h           |   6 +
 linux-user/m68k/target_errno_defs.h           |   6 +
 linux-user/microblaze/target_errno_defs.h     |   6 +
 linux-user/mips/target_errno_defs.h           | 217 ++++++++++++++++++
 linux-user/mips/target_syscall.h              | 211 -----------------
 linux-user/mips64/target_errno_defs.h         | 217 ++++++++++++++++++
 linux-user/mips64/target_syscall.h            | 211 -----------------
 linux-user/nios2/target_errno_defs.h          |   6 +
 linux-user/openrisc/target_errno_defs.h       |   6 +
 linux-user/ppc/target_errno_defs.h            |   6 +
 linux-user/riscv/target_errno_defs.h          |   6 +
 linux-user/s390x/target_errno_defs.h          |   6 +
 linux-user/sh4/target_errno_defs.h            |   6 +
 .../{target_errno.h => target_errno_defs.h}   |   6 +-
 linux-user/sparc/target_syscall.h             |   2 -
 linux-user/syscall_defs.h                     |   2 +-
 linux-user/x86_64/target_errno_defs.h         |   6 +
 linux-user/xtensa/target_errno_defs.h         |   6 +
 linux-user/syscall.c                          | 174 +++-----------
 linux-user/errnos.c.inc                       | 140 +++++++++++
 linux-user/safe-syscall.S                     |   2 +-
 30 files changed, 1114 insertions(+), 982 deletions(-)
 create mode 100644 linux-user/aarch64/target_errno_defs.h
 create mode 100644 linux-user/alpha/target_errno_defs.h
 create mode 100644 linux-user/arm/target_errno_defs.h
 create mode 100644 linux-user/cris/target_errno_defs.h
 rename linux-user/{errno_defs.h => generic/target_errno_defs.h} (99%)
 create mode 100644 linux-user/hexagon/target_errno_defs.h
 create mode 100644 linux-user/hppa/target_errno_defs.h
 create mode 100644 linux-user/i386/target_errno_defs.h
 create mode 100644 linux-user/m68k/target_errno_defs.h
 create mode 100644 linux-user/microblaze/target_errno_defs.h
 create mode 100644 linux-user/mips/target_errno_defs.h
 create mode 100644 linux-user/mips64/target_errno_defs.h
 create mode 100644 linux-user/nios2/target_errno_defs.h
 create mode 100644 linux-user/openrisc/target_errno_defs.h
 create mode 100644 linux-user/ppc/target_errno_defs.h
 create mode 100644 linux-user/riscv/target_errno_defs.h
 create mode 100644 linux-user/s390x/target_errno_defs.h
 create mode 100644 linux-user/sh4/target_errno_defs.h
 rename linux-user/sparc/{target_errno.h => target_errno_defs.h} (98%)
 create mode 100644 linux-user/x86_64/target_errno_defs.h
 create mode 100644 linux-user/xtensa/target_errno_defs.h
 create mode 100644 linux-user/errnos.c.inc

-- 
2.31.1



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

* [PATCH v2 1/8] linux-user/syscall: Fix RF-kill errno (typo in ERFKILL)
  2021-07-08 14:11 [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor Philippe Mathieu-Daudé
@ 2021-07-08 14:11 ` Philippe Mathieu-Daudé
  2021-07-08 15:19   ` Laurent Vivier
  2021-07-08 15:33   ` Richard Henderson
  2021-07-08 14:11 ` [PATCH v2 2/8] linux-user/sparc: Rename target_errno.h -> target_errno_defs.h Philippe Mathieu-Daudé
                   ` (6 subsequent siblings)
  7 siblings, 2 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 14:11 UTC (permalink / raw)
  To: qemu-devel
  Cc: Taylor Simpson, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

Affected targets: alpha, hppa, mips/64, sparc

Fixes: fe8ed7d5794 ("linux-user: Handle ERFKILL and EHWPOISON")
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 linux-user/syscall.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 2e826206d22..4842a1987b7 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -629,7 +629,7 @@ static uint16_t host_to_target_errno_table[ERRNO_TABLE_SIZE] = {
 #ifdef ENOMSG
     [ENOMSG]            = TARGET_ENOMSG,
 #endif
-#ifdef ERKFILL
+#ifdef ERFKILL
     [ERFKILL]           = TARGET_ERFKILL,
 #endif
 #ifdef EHWPOISON
-- 
2.31.1



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

* [PATCH v2 2/8] linux-user/sparc: Rename target_errno.h -> target_errno_defs.h
  2021-07-08 14:11 [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor Philippe Mathieu-Daudé
  2021-07-08 14:11 ` [PATCH v2 1/8] linux-user/syscall: Fix RF-kill errno (typo in ERFKILL) Philippe Mathieu-Daudé
@ 2021-07-08 14:11 ` Philippe Mathieu-Daudé
  2021-07-08 15:20   ` Laurent Vivier
  2021-07-08 15:34   ` Richard Henderson
  2021-07-08 14:11 ` [PATCH v2 3/8] linux-user: Extract target errno to 'target_errno_defs.h' Philippe Mathieu-Daudé
                   ` (5 subsequent siblings)
  7 siblings, 2 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 14:11 UTC (permalink / raw)
  To: qemu-devel
  Cc: Taylor Simpson, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

We want to have one generic target_errno.h (API to access target
errno), and will add target errno definitions in target_errno_defs.h.
The sparc target already have its errnos in an header, simply rename
it.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 linux-user/sparc/{target_errno.h => target_errno_defs.h} | 4 ++--
 linux-user/sparc/target_syscall.h                        | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
 rename linux-user/sparc/{target_errno.h => target_errno_defs.h} (99%)

diff --git a/linux-user/sparc/target_errno.h b/linux-user/sparc/target_errno_defs.h
similarity index 99%
rename from linux-user/sparc/target_errno.h
rename to linux-user/sparc/target_errno_defs.h
index 9b846899cd4..e0008109867 100644
--- a/linux-user/sparc/target_errno.h
+++ b/linux-user/sparc/target_errno_defs.h
@@ -1,5 +1,5 @@
-#ifndef SPARC_TARGET_ERRNO_H
-#define SPARC_TARGET_ERRNO_H
+#ifndef SPARC_TARGET_ERRNO_DEFS_H
+#define SPARC_TARGET_ERRNO_DEFS_H
 
 /* Target errno definitions taken from asm-sparc/errno.h */
 #undef TARGET_EWOULDBLOCK
diff --git a/linux-user/sparc/target_syscall.h b/linux-user/sparc/target_syscall.h
index 15d531f3897..dad501d008c 100644
--- a/linux-user/sparc/target_syscall.h
+++ b/linux-user/sparc/target_syscall.h
@@ -1,7 +1,7 @@
 #ifndef SPARC_TARGET_SYSCALL_H
 #define SPARC_TARGET_SYSCALL_H
 
-#include "target_errno.h"
+#include "target_errno_defs.h"
 
 #if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
 struct target_pt_regs {
-- 
2.31.1



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

* [PATCH v2 3/8] linux-user: Extract target errno to 'target_errno_defs.h'
  2021-07-08 14:11 [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor Philippe Mathieu-Daudé
  2021-07-08 14:11 ` [PATCH v2 1/8] linux-user/syscall: Fix RF-kill errno (typo in ERFKILL) Philippe Mathieu-Daudé
  2021-07-08 14:11 ` [PATCH v2 2/8] linux-user/sparc: Rename target_errno.h -> target_errno_defs.h Philippe Mathieu-Daudé
@ 2021-07-08 14:11 ` Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:33   ` Richard Henderson
  2021-07-08 14:11 ` [PATCH v2 4/8] linux-user/alpha: Move errno definitions " Philippe Mathieu-Daudé
                   ` (4 subsequent siblings)
  7 siblings, 2 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 14:11 UTC (permalink / raw)
  To: qemu-devel
  Cc: Taylor Simpson, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

We want to access the target errno indepently of the rest of the
linux-user code. Move the header containing the generic errno
definitions ('errno_defs.h') to 'generic/target_errno_defs.h',
create a new 'target_errno_defs.h' in each target which itself
includes 'generic/target_errno_defs.h'.

Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 linux-user/aarch64/target_errno_defs.h                   | 6 ++++++
 linux-user/alpha/target_errno_defs.h                     | 6 ++++++
 linux-user/arm/target_errno_defs.h                       | 6 ++++++
 linux-user/cris/target_errno_defs.h                      | 6 ++++++
 linux-user/{errno_defs.h => generic/target_errno_defs.h} | 4 ++--
 linux-user/hexagon/target_errno_defs.h                   | 6 ++++++
 linux-user/hppa/target_errno_defs.h                      | 6 ++++++
 linux-user/i386/target_errno_defs.h                      | 6 ++++++
 linux-user/m68k/target_errno_defs.h                      | 6 ++++++
 linux-user/microblaze/target_errno_defs.h                | 6 ++++++
 linux-user/mips/target_errno_defs.h                      | 6 ++++++
 linux-user/mips64/target_errno_defs.h                    | 6 ++++++
 linux-user/nios2/target_errno_defs.h                     | 6 ++++++
 linux-user/openrisc/target_errno_defs.h                  | 6 ++++++
 linux-user/ppc/target_errno_defs.h                       | 6 ++++++
 linux-user/riscv/target_errno_defs.h                     | 6 ++++++
 linux-user/s390x/target_errno_defs.h                     | 6 ++++++
 linux-user/sh4/target_errno_defs.h                       | 6 ++++++
 linux-user/sparc/target_errno_defs.h                     | 2 ++
 linux-user/sparc/target_syscall.h                        | 2 --
 linux-user/syscall_defs.h                                | 2 +-
 linux-user/x86_64/target_errno_defs.h                    | 6 ++++++
 linux-user/xtensa/target_errno_defs.h                    | 6 ++++++
 linux-user/safe-syscall.S                                | 2 +-
 24 files changed, 120 insertions(+), 6 deletions(-)
 create mode 100644 linux-user/aarch64/target_errno_defs.h
 create mode 100644 linux-user/alpha/target_errno_defs.h
 create mode 100644 linux-user/arm/target_errno_defs.h
 create mode 100644 linux-user/cris/target_errno_defs.h
 rename linux-user/{errno_defs.h => generic/target_errno_defs.h} (99%)
 create mode 100644 linux-user/hexagon/target_errno_defs.h
 create mode 100644 linux-user/hppa/target_errno_defs.h
 create mode 100644 linux-user/i386/target_errno_defs.h
 create mode 100644 linux-user/m68k/target_errno_defs.h
 create mode 100644 linux-user/microblaze/target_errno_defs.h
 create mode 100644 linux-user/mips/target_errno_defs.h
 create mode 100644 linux-user/mips64/target_errno_defs.h
 create mode 100644 linux-user/nios2/target_errno_defs.h
 create mode 100644 linux-user/openrisc/target_errno_defs.h
 create mode 100644 linux-user/ppc/target_errno_defs.h
 create mode 100644 linux-user/riscv/target_errno_defs.h
 create mode 100644 linux-user/s390x/target_errno_defs.h
 create mode 100644 linux-user/sh4/target_errno_defs.h
 create mode 100644 linux-user/x86_64/target_errno_defs.h
 create mode 100644 linux-user/xtensa/target_errno_defs.h

diff --git a/linux-user/aarch64/target_errno_defs.h b/linux-user/aarch64/target_errno_defs.h
new file mode 100644
index 00000000000..eee9762ba32
--- /dev/null
+++ b/linux-user/aarch64/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef AARCH64_TARGET_ERRNO_DEFS_H
+#define AARCH64_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/alpha/target_errno_defs.h b/linux-user/alpha/target_errno_defs.h
new file mode 100644
index 00000000000..54770108c02
--- /dev/null
+++ b/linux-user/alpha/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef ALPHA_TARGET_ERRNO_DEFS_H
+#define ALPHA_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/arm/target_errno_defs.h b/linux-user/arm/target_errno_defs.h
new file mode 100644
index 00000000000..448cc407662
--- /dev/null
+++ b/linux-user/arm/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef ARM_TARGET_ERRNO_DEFS_H
+#define ARM_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/cris/target_errno_defs.h b/linux-user/cris/target_errno_defs.h
new file mode 100644
index 00000000000..02c040982df
--- /dev/null
+++ b/linux-user/cris/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef CRIS_TARGET_ERRNO_DEFS_H
+#define CRIS_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/errno_defs.h b/linux-user/generic/target_errno_defs.h
similarity index 99%
rename from linux-user/errno_defs.h
rename to linux-user/generic/target_errno_defs.h
index aaf5208d62d..17d85e0b61b 100644
--- a/linux-user/errno_defs.h
+++ b/linux-user/generic/target_errno_defs.h
@@ -5,8 +5,8 @@
  * Taken from asm-generic/errno-base.h and asm-generic/errno.h
  */
 
-#ifndef LINUX_USER_ERRNO_DEFS_H
-#define LINUX_USER_ERRNO_DEFS_H
+#ifndef GENERIC_TARGET_ERRNO_DEFS_H
+#define GENERIC_TARGET_ERRNO_DEFS_H
 
 #define TARGET_EPERM            1      /* Operation not permitted */
 #define TARGET_ENOENT           2      /* No such file or directory */
diff --git a/linux-user/hexagon/target_errno_defs.h b/linux-user/hexagon/target_errno_defs.h
new file mode 100644
index 00000000000..0644ae802b4
--- /dev/null
+++ b/linux-user/hexagon/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef HEXAGON_TARGET_ERRNO_DEFS_H
+#define HEXAGON_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/hppa/target_errno_defs.h b/linux-user/hppa/target_errno_defs.h
new file mode 100644
index 00000000000..d6e9676ce25
--- /dev/null
+++ b/linux-user/hppa/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef HPPA_TARGET_ERRNO_DEFS_H
+#define HPPA_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/i386/target_errno_defs.h b/linux-user/i386/target_errno_defs.h
new file mode 100644
index 00000000000..d34466d583f
--- /dev/null
+++ b/linux-user/i386/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef I386_TARGET_ERRNO_DEFS_H
+#define I386_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/m68k/target_errno_defs.h b/linux-user/m68k/target_errno_defs.h
new file mode 100644
index 00000000000..91c51b79cdc
--- /dev/null
+++ b/linux-user/m68k/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef M68K_TARGET_ERRNO_DEFS_H
+#define M68K_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/microblaze/target_errno_defs.h b/linux-user/microblaze/target_errno_defs.h
new file mode 100644
index 00000000000..7be53eb2365
--- /dev/null
+++ b/linux-user/microblaze/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef MICROBLAZE_TARGET_ERRNO_DEFS_H
+#define MICROBLAZE_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/mips/target_errno_defs.h b/linux-user/mips/target_errno_defs.h
new file mode 100644
index 00000000000..daef95ea703
--- /dev/null
+++ b/linux-user/mips/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef MIPS_TARGET_ERRNO_DEFS_H
+#define MIPS_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/mips64/target_errno_defs.h b/linux-user/mips64/target_errno_defs.h
new file mode 100644
index 00000000000..82b0a704f62
--- /dev/null
+++ b/linux-user/mips64/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef MIPS64_TARGET_ERRNO_DEFS_H
+#define MIPS64_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/nios2/target_errno_defs.h b/linux-user/nios2/target_errno_defs.h
new file mode 100644
index 00000000000..daceaf30347
--- /dev/null
+++ b/linux-user/nios2/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef NIOS2_TARGET_ERRNO_DEFS_H
+#define NIOS2_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/openrisc/target_errno_defs.h b/linux-user/openrisc/target_errno_defs.h
new file mode 100644
index 00000000000..1d32c8798f7
--- /dev/null
+++ b/linux-user/openrisc/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef OR1K_TARGET_ERRNO_DEFS_H
+#define OR1K_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/ppc/target_errno_defs.h b/linux-user/ppc/target_errno_defs.h
new file mode 100644
index 00000000000..01b25bb5d06
--- /dev/null
+++ b/linux-user/ppc/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef PPC_TARGET_ERRNO_DEFS_H
+#define PPC_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/riscv/target_errno_defs.h b/linux-user/riscv/target_errno_defs.h
new file mode 100644
index 00000000000..785614ba0a5
--- /dev/null
+++ b/linux-user/riscv/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef RISCV_TARGET_ERRNO_DEFS_H
+#define RISCV_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/s390x/target_errno_defs.h b/linux-user/s390x/target_errno_defs.h
new file mode 100644
index 00000000000..bca1c3b4a10
--- /dev/null
+++ b/linux-user/s390x/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef S390X_TARGET_ERRNO_DEFS_H
+#define S390X_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/sh4/target_errno_defs.h b/linux-user/sh4/target_errno_defs.h
new file mode 100644
index 00000000000..de2de2d3f8d
--- /dev/null
+++ b/linux-user/sh4/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef SH4_TARGET_ERRNO_DEFS_H
+#define SH4_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/sparc/target_errno_defs.h b/linux-user/sparc/target_errno_defs.h
index e0008109867..416acbb4593 100644
--- a/linux-user/sparc/target_errno_defs.h
+++ b/linux-user/sparc/target_errno_defs.h
@@ -1,6 +1,8 @@
 #ifndef SPARC_TARGET_ERRNO_DEFS_H
 #define SPARC_TARGET_ERRNO_DEFS_H
 
+#include "../generic/target_errno_defs.h"
+
 /* Target errno definitions taken from asm-sparc/errno.h */
 #undef TARGET_EWOULDBLOCK
 #define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
diff --git a/linux-user/sparc/target_syscall.h b/linux-user/sparc/target_syscall.h
index dad501d008c..087b39d39c4 100644
--- a/linux-user/sparc/target_syscall.h
+++ b/linux-user/sparc/target_syscall.h
@@ -1,8 +1,6 @@
 #ifndef SPARC_TARGET_SYSCALL_H
 #define SPARC_TARGET_SYSCALL_H
 
-#include "target_errno_defs.h"
-
 #if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
 struct target_pt_regs {
     abi_ulong u_regs[16];
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 18b031a2f6a..a5ce487dcc3 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -2751,7 +2751,7 @@ struct target_drm_i915_getparam {
 
 #include "socket.h"
 
-#include "errno_defs.h"
+#include "target_errno_defs.h"
 
 #define FUTEX_WAIT              0
 #define FUTEX_WAKE              1
diff --git a/linux-user/x86_64/target_errno_defs.h b/linux-user/x86_64/target_errno_defs.h
new file mode 100644
index 00000000000..43b4068ba93
--- /dev/null
+++ b/linux-user/x86_64/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef X86_64_TARGET_ERRNO_DEFS_H
+#define X86_64_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/xtensa/target_errno_defs.h b/linux-user/xtensa/target_errno_defs.h
new file mode 100644
index 00000000000..7d39e77251c
--- /dev/null
+++ b/linux-user/xtensa/target_errno_defs.h
@@ -0,0 +1,6 @@
+#ifndef XTENSA_TARGET_ERRNO_DEFS_H
+#define XTENSA_TARGET_ERRNO_DEFS_H
+
+#include "../generic/target_errno_defs.h"
+
+#endif
diff --git a/linux-user/safe-syscall.S b/linux-user/safe-syscall.S
index b5df6254aea..42ea7c40ba3 100644
--- a/linux-user/safe-syscall.S
+++ b/linux-user/safe-syscall.S
@@ -11,7 +11,7 @@
  */
 
 #include "hostdep.h"
-#include "errno_defs.h"
+#include "target_errno_defs.h"
 
 /* We have the correct host directory on our include path
  * so that this will pull in the right fragment for the architecture.
-- 
2.31.1



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

* [PATCH v2 4/8] linux-user/alpha: Move errno definitions to 'target_errno_defs.h'
  2021-07-08 14:11 [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor Philippe Mathieu-Daudé
                   ` (2 preceding siblings ...)
  2021-07-08 14:11 ` [PATCH v2 3/8] linux-user: Extract target errno to 'target_errno_defs.h' Philippe Mathieu-Daudé
@ 2021-07-08 14:11 ` Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:34   ` Richard Henderson
  2021-07-08 14:11 ` [PATCH v2 5/8] linux-user/hppa: " Philippe Mathieu-Daudé
                   ` (3 subsequent siblings)
  7 siblings, 2 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 14:11 UTC (permalink / raw)
  To: qemu-devel
  Cc: Taylor Simpson, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 linux-user/alpha/target_errno_defs.h | 194 +++++++++++++++++++++++++++
 linux-user/alpha/target_syscall.h    | 194 ---------------------------
 2 files changed, 194 insertions(+), 194 deletions(-)

diff --git a/linux-user/alpha/target_errno_defs.h b/linux-user/alpha/target_errno_defs.h
index 54770108c02..8cc4c5fb308 100644
--- a/linux-user/alpha/target_errno_defs.h
+++ b/linux-user/alpha/target_errno_defs.h
@@ -3,4 +3,198 @@
 
 #include "../generic/target_errno_defs.h"
 
+#undef TARGET_EWOULDBLOCK
+#define TARGET_EWOULDBLOCK      TARGET_EAGAIN
+#undef TARGET_EDEADLK
+#define TARGET_EDEADLK          11
+#undef TARGET_EAGAIN
+#define TARGET_EAGAIN           35
+#undef TARGET_EINPROGRESS
+#define TARGET_EINPROGRESS      36
+#undef TARGET_EALREADY
+#define TARGET_EALREADY         37
+#undef TARGET_ENOTSOCK
+#define TARGET_ENOTSOCK         38
+#undef TARGET_EDESTADDRREQ
+#define TARGET_EDESTADDRREQ     39
+#undef TARGET_EMSGSIZE
+#define TARGET_EMSGSIZE         40
+#undef TARGET_EPROTOTYPE
+#define TARGET_EPROTOTYPE       41
+#undef TARGET_ENOPROTOOPT
+#define TARGET_ENOPROTOOPT      42
+#undef TARGET_EPROTONOSUPPORT
+#define TARGET_EPROTONOSUPPORT  43
+#undef TARGET_ESOCKTNOSUPPORT
+#define TARGET_ESOCKTNOSUPPORT  44
+#undef TARGET_EOPNOTSUPP
+#define TARGET_EOPNOTSUPP       45
+#undef TARGET_EPFNOSUPPORT
+#define TARGET_EPFNOSUPPORT     46
+#undef TARGET_EAFNOSUPPORT
+#define TARGET_EAFNOSUPPORT     47
+#undef TARGET_EADDRINUSE
+#define TARGET_EADDRINUSE       48
+#undef TARGET_EADDRNOTAVAIL
+#define TARGET_EADDRNOTAVAIL    49
+#undef TARGET_ENETDOWN
+#define TARGET_ENETDOWN         50
+#undef TARGET_ENETUNREACH
+#define TARGET_ENETUNREACH      51
+#undef TARGET_ENETRESET
+#define TARGET_ENETRESET        52
+#undef TARGET_ECONNABORTED
+#define TARGET_ECONNABORTED     53
+#undef TARGET_ECONNRESET
+#define TARGET_ECONNRESET       54
+#undef TARGET_ENOBUFS
+#define TARGET_ENOBUFS          55
+#undef TARGET_EISCONN
+#define TARGET_EISCONN          56
+#undef TARGET_ENOTCONN
+#define TARGET_ENOTCONN         57
+#undef TARGET_ESHUTDOWN
+#define TARGET_ESHUTDOWN        58
+#undef TARGET_ETOOMANYREFS
+#define TARGET_ETOOMANYREFS     59
+#undef TARGET_ETIMEDOUT
+#define TARGET_ETIMEDOUT        60
+#undef TARGET_ECONNREFUSED
+#define TARGET_ECONNREFUSED     61
+#undef TARGET_ELOOP
+#define TARGET_ELOOP            62
+#undef TARGET_ENAMETOOLONG
+#define TARGET_ENAMETOOLONG     63
+#undef TARGET_EHOSTDOWN
+#define TARGET_EHOSTDOWN        64
+#undef TARGET_EHOSTUNREACH
+#define TARGET_EHOSTUNREACH     65
+#undef TARGET_ENOTEMPTY
+#define TARGET_ENOTEMPTY        66
+/* Unused                       67 */
+#undef TARGET_EUSERS
+#define TARGET_EUSERS           68
+#undef TARGET_EDQUOT
+#define TARGET_EDQUOT           69
+#undef TARGET_ESTALE
+#define TARGET_ESTALE           70
+#undef TARGET_EREMOTE
+#define TARGET_EREMOTE          71
+/* Unused                       72-76 */
+#undef TARGET_ENOLCK
+#define TARGET_ENOLCK           77
+#undef TARGET_ENOSYS
+#define TARGET_ENOSYS           78
+/* Unused                       79 */
+#undef TARGET_ENOMSG
+#define TARGET_ENOMSG           80
+#undef TARGET_EIDRM
+#define TARGET_EIDRM            81
+#undef TARGET_ENOSR
+#define TARGET_ENOSR            82
+#undef TARGET_ETIME
+#define TARGET_ETIME            83
+#undef TARGET_EBADMSG
+#define TARGET_EBADMSG          84
+#undef TARGET_EPROTO
+#define TARGET_EPROTO           85
+#undef TARGET_ENODATA
+#define TARGET_ENODATA          86
+#undef TARGET_ENOSTR
+#define TARGET_ENOSTR           87
+#undef TARGET_ECHRNG
+#define TARGET_ECHRNG           88
+#undef TARGET_EL2NSYNC
+#define TARGET_EL2NSYNC         89
+#undef TARGET_EL3HLT
+#define TARGET_EL3HLT           90
+#undef TARGET_EL3RST
+#define TARGET_EL3RST           91
+#undef TARGET_ENOPKG
+#define TARGET_ENOPKG           92
+#undef TARGET_ELNRNG
+#define TARGET_ELNRNG           93
+#undef TARGET_EUNATCH
+#define TARGET_EUNATCH          94
+#undef TARGET_ENOCSI
+#define TARGET_ENOCSI           95
+#undef TARGET_EL2HLT
+#define TARGET_EL2HLT           96
+#undef TARGET_EBADE
+#define TARGET_EBADE            97
+#undef TARGET_EBADR
+#define TARGET_EBADR            98
+#undef TARGET_EXFULL
+#define TARGET_EXFULL           99
+#undef TARGET_ENOANO
+#define TARGET_ENOANO           100
+#undef TARGET_EBADRQC
+#define TARGET_EBADRQC          101
+#undef TARGET_EBADSLT
+#define TARGET_EBADSLT          102
+/* Unused                       103 */
+#undef TARGET_EBFONT
+#define TARGET_EBFONT           104
+#undef TARGET_ENONET
+#define TARGET_ENONET           105
+#undef TARGET_ENOLINK
+#define TARGET_ENOLINK          106
+#undef TARGET_EADV
+#define TARGET_EADV             107
+#undef TARGET_ESRMNT
+#define TARGET_ESRMNT           108
+#undef TARGET_ECOMM
+#define TARGET_ECOMM            109
+#undef TARGET_EMULTIHOP
+#define TARGET_EMULTIHOP        110
+#undef TARGET_EDOTDOT
+#define TARGET_EDOTDOT          111
+#undef TARGET_EOVERFLOW
+#define TARGET_EOVERFLOW        112
+#undef TARGET_ENOTUNIQ
+#define TARGET_ENOTUNIQ         113
+#undef TARGET_EBADFD
+#define TARGET_EBADFD           114
+#undef TARGET_EREMCHG
+#define TARGET_EREMCHG          115
+#undef TARGET_EILSEQ
+#define TARGET_EILSEQ           116
+/* Same as default              117-121 */
+#undef TARGET_ELIBACC
+#define TARGET_ELIBACC          122
+#undef TARGET_ELIBBAD
+#define TARGET_ELIBBAD          123
+#undef TARGET_ELIBSCN
+#define TARGET_ELIBSCN          124
+#undef TARGET_ELIBMAX
+#define TARGET_ELIBMAX          125
+#undef TARGET_ELIBEXEC
+#define TARGET_ELIBEXEC         126
+#undef TARGET_ERESTART
+#define TARGET_ERESTART         127
+#undef TARGET_ESTRPIPE
+#define TARGET_ESTRPIPE         128
+#undef TARGET_ENOMEDIUM
+#define TARGET_ENOMEDIUM        129
+#undef TARGET_EMEDIUMTYPE
+#define TARGET_EMEDIUMTYPE      130
+#undef TARGET_ECANCELED
+#define TARGET_ECANCELED        131
+#undef TARGET_ENOKEY
+#define TARGET_ENOKEY           132
+#undef TARGET_EKEYEXPIRED
+#define TARGET_EKEYEXPIRED      133
+#undef TARGET_EKEYREVOKED
+#define TARGET_EKEYREVOKED      134
+#undef TARGET_EKEYREJECTED
+#define TARGET_EKEYREJECTED     135
+#undef TARGET_EOWNERDEAD
+#define TARGET_EOWNERDEAD       136
+#undef TARGET_ENOTRECOVERABLE
+#define TARGET_ENOTRECOVERABLE  137
+#undef TARGET_ERFKILL
+#define TARGET_ERFKILL          138
+#undef TARGET_EHWPOISON
+#define TARGET_EHWPOISON        139
+
 #endif
diff --git a/linux-user/alpha/target_syscall.h b/linux-user/alpha/target_syscall.h
index 13a71f35eaf..03091bf0a82 100644
--- a/linux-user/alpha/target_syscall.h
+++ b/linux-user/alpha/target_syscall.h
@@ -44,200 +44,6 @@ struct target_pt_regs {
 #define UNAME_MACHINE "alpha"
 #define UNAME_MINIMUM_RELEASE "2.6.32"
 
-#undef TARGET_EWOULDBLOCK
-#define TARGET_EWOULDBLOCK      TARGET_EAGAIN /* Operation would block */
-#undef TARGET_EDEADLK
-#define TARGET_EDEADLK          11
-#undef TARGET_EAGAIN
-#define TARGET_EAGAIN           35
-#undef TARGET_EINPROGRESS
-#define TARGET_EINPROGRESS      36
-#undef TARGET_EALREADY
-#define TARGET_EALREADY         37
-#undef TARGET_ENOTSOCK
-#define TARGET_ENOTSOCK         38
-#undef TARGET_EDESTADDRREQ
-#define TARGET_EDESTADDRREQ     39
-#undef TARGET_EMSGSIZE
-#define TARGET_EMSGSIZE         40
-#undef TARGET_EPROTOTYPE
-#define TARGET_EPROTOTYPE       41
-#undef TARGET_ENOPROTOOPT
-#define TARGET_ENOPROTOOPT      42
-#undef TARGET_EPROTONOSUPPORT
-#define TARGET_EPROTONOSUPPORT  43
-#undef TARGET_ESOCKTNOSUPPORT
-#define TARGET_ESOCKTNOSUPPORT  44
-#undef TARGET_EOPNOTSUPP
-#define TARGET_EOPNOTSUPP       45
-#undef TARGET_EPFNOSUPPORT
-#define TARGET_EPFNOSUPPORT     46
-#undef TARGET_EAFNOSUPPORT
-#define TARGET_EAFNOSUPPORT     47
-#undef TARGET_EADDRINUSE
-#define TARGET_EADDRINUSE       48
-#undef TARGET_EADDRNOTAVAIL
-#define TARGET_EADDRNOTAVAIL    49
-#undef TARGET_ENETDOWN
-#define TARGET_ENETDOWN         50
-#undef TARGET_ENETUNREACH
-#define TARGET_ENETUNREACH      51
-#undef TARGET_ENETRESET
-#define TARGET_ENETRESET        52
-#undef TARGET_ECONNABORTED
-#define TARGET_ECONNABORTED     53
-#undef TARGET_ECONNRESET
-#define TARGET_ECONNRESET       54
-#undef TARGET_ENOBUFS
-#define TARGET_ENOBUFS          55
-#undef TARGET_EISCONN
-#define TARGET_EISCONN          56
-#undef TARGET_ENOTCONN
-#define TARGET_ENOTCONN         57
-#undef TARGET_ESHUTDOWN
-#define TARGET_ESHUTDOWN        58
-#undef TARGET_ETOOMANYREFS
-#define TARGET_ETOOMANYREFS     59
-#undef TARGET_ETIMEDOUT
-#define TARGET_ETIMEDOUT        60
-#undef TARGET_ECONNREFUSED
-#define TARGET_ECONNREFUSED     61
-#undef TARGET_ELOOP
-#define TARGET_ELOOP            62
-#undef TARGET_ENAMETOOLONG
-#define TARGET_ENAMETOOLONG     63
-#undef TARGET_EHOSTDOWN
-#define TARGET_EHOSTDOWN        64
-#undef TARGET_EHOSTUNREACH
-#define TARGET_EHOSTUNREACH     65
-#undef TARGET_ENOTEMPTY
-#define TARGET_ENOTEMPTY        66
-/* Unused                       67 */
-#undef TARGET_EUSERS
-#define TARGET_EUSERS           68
-#undef TARGET_EDQUOT
-#define TARGET_EDQUOT           69
-#undef TARGET_ESTALE
-#define TARGET_ESTALE           70
-#undef TARGET_EREMOTE
-#define TARGET_EREMOTE          71
-/* Unused                       72-76 */
-#undef TARGET_ENOLCK
-#define TARGET_ENOLCK           77
-#undef TARGET_ENOSYS
-#define TARGET_ENOSYS           78
-/* Unused                       79 */
-#undef TARGET_ENOMSG
-#define TARGET_ENOMSG           80
-#undef TARGET_EIDRM
-#define TARGET_EIDRM            81
-#undef TARGET_ENOSR
-#define TARGET_ENOSR            82
-#undef TARGET_ETIME
-#define TARGET_ETIME            83
-#undef TARGET_EBADMSG
-#define TARGET_EBADMSG          84
-#undef TARGET_EPROTO
-#define TARGET_EPROTO           85
-#undef TARGET_ENODATA
-#define TARGET_ENODATA          86
-#undef TARGET_ENOSTR
-#define TARGET_ENOSTR           87
-#undef TARGET_ECHRNG
-#define TARGET_ECHRNG           88
-#undef TARGET_EL2NSYNC
-#define TARGET_EL2NSYNC         89
-#undef TARGET_EL3HLT
-#define TARGET_EL3HLT           90
-#undef TARGET_EL3RST
-#define TARGET_EL3RST           91
-#undef TARGET_ENOPKG
-#define TARGET_ENOPKG           92
-#undef TARGET_ELNRNG
-#define TARGET_ELNRNG           93
-#undef TARGET_EUNATCH
-#define TARGET_EUNATCH          94
-#undef TARGET_ENOCSI
-#define TARGET_ENOCSI           95
-#undef TARGET_EL2HLT
-#define TARGET_EL2HLT           96
-#undef TARGET_EBADE
-#define TARGET_EBADE            97
-#undef TARGET_EBADR
-#define TARGET_EBADR            98
-#undef TARGET_EXFULL
-#define TARGET_EXFULL           99
-#undef TARGET_ENOANO
-#define TARGET_ENOANO           100
-#undef TARGET_EBADRQC
-#define TARGET_EBADRQC          101
-#undef TARGET_EBADSLT
-#define TARGET_EBADSLT          102
-/* Unused                       103 */
-#undef TARGET_EBFONT
-#define TARGET_EBFONT           104
-#undef TARGET_ENONET
-#define TARGET_ENONET           105
-#undef TARGET_ENOLINK
-#define TARGET_ENOLINK          106
-#undef TARGET_EADV
-#define TARGET_EADV             107
-#undef TARGET_ESRMNT
-#define TARGET_ESRMNT           108
-#undef TARGET_ECOMM
-#define TARGET_ECOMM            109
-#undef TARGET_EMULTIHOP
-#define TARGET_EMULTIHOP        110
-#undef TARGET_EDOTDOT
-#define TARGET_EDOTDOT          111
-#undef TARGET_EOVERFLOW
-#define TARGET_EOVERFLOW        112
-#undef TARGET_ENOTUNIQ
-#define TARGET_ENOTUNIQ         113
-#undef TARGET_EBADFD
-#define TARGET_EBADFD           114
-#undef TARGET_EREMCHG
-#define TARGET_EREMCHG          115
-#undef TARGET_EILSEQ
-#define TARGET_EILSEQ           116
-/* Same as default              117-121 */
-#undef TARGET_ELIBACC
-#define TARGET_ELIBACC          122
-#undef TARGET_ELIBBAD
-#define TARGET_ELIBBAD          123
-#undef TARGET_ELIBSCN
-#define TARGET_ELIBSCN          124
-#undef TARGET_ELIBMAX
-#define TARGET_ELIBMAX          125
-#undef TARGET_ELIBEXEC
-#define TARGET_ELIBEXEC         126
-#undef TARGET_ERESTART
-#define TARGET_ERESTART         127
-#undef TARGET_ESTRPIPE
-#define TARGET_ESTRPIPE         128
-#undef TARGET_ENOMEDIUM
-#define TARGET_ENOMEDIUM        129
-#undef TARGET_EMEDIUMTYPE
-#define TARGET_EMEDIUMTYPE      130
-#undef TARGET_ECANCELED
-#define TARGET_ECANCELED        131
-#undef TARGET_ENOKEY
-#define TARGET_ENOKEY           132
-#undef TARGET_EKEYEXPIRED
-#define TARGET_EKEYEXPIRED      133
-#undef TARGET_EKEYREVOKED
-#define TARGET_EKEYREVOKED      134
-#undef TARGET_EKEYREJECTED
-#define TARGET_EKEYREJECTED     135
-#undef TARGET_EOWNERDEAD
-#define TARGET_EOWNERDEAD       136
-#undef TARGET_ENOTRECOVERABLE
-#define TARGET_ENOTRECOVERABLE  137
-#undef TARGET_ERFKILL
-#define TARGET_ERFKILL          138
-#undef TARGET_EHWPOISON
-#define TARGET_EHWPOISON        139
-
 // For sys_osf_getsysinfo
 #define TARGET_GSI_UACPROC		8
 #define TARGET_GSI_IEEE_FP_CONTROL	45
-- 
2.31.1



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

* [PATCH v2 5/8] linux-user/hppa: Move errno definitions to 'target_errno_defs.h'
  2021-07-08 14:11 [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor Philippe Mathieu-Daudé
                   ` (3 preceding siblings ...)
  2021-07-08 14:11 ` [PATCH v2 4/8] linux-user/alpha: Move errno definitions " Philippe Mathieu-Daudé
@ 2021-07-08 14:11 ` Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:35   ` Richard Henderson
  2021-07-08 14:11 ` [PATCH v2 6/8] linux-user/mips: " Philippe Mathieu-Daudé
                   ` (2 subsequent siblings)
  7 siblings, 2 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 14:11 UTC (permalink / raw)
  To: qemu-devel
  Cc: Taylor Simpson, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 linux-user/hppa/target_errno_defs.h | 210 ++++++++++++++++++++++++++++
 linux-user/hppa/target_syscall.h    | 210 ----------------------------
 2 files changed, 210 insertions(+), 210 deletions(-)

diff --git a/linux-user/hppa/target_errno_defs.h b/linux-user/hppa/target_errno_defs.h
index d6e9676ce25..17ece226c8d 100644
--- a/linux-user/hppa/target_errno_defs.h
+++ b/linux-user/hppa/target_errno_defs.h
@@ -3,4 +3,214 @@
 
 #include "../generic/target_errno_defs.h"
 
+#undef TARGET_EWOULDBLOCK
+#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
+#undef  TARGET_ENOMSG
+#define TARGET_ENOMSG          35
+#undef  TARGET_EIDRM
+#define TARGET_EIDRM           36
+#undef  TARGET_ECHRNG
+#define TARGET_ECHRNG          37
+#undef  TARGET_EL2NSYNC
+#define TARGET_EL2NSYNC        38
+#undef  TARGET_EL3HLT
+#define TARGET_EL3HLT          39
+#undef  TARGET_EL3RST
+#define TARGET_EL3RST          40
+#undef  TARGET_ELNRNG
+#define TARGET_ELNRNG          41
+#undef  TARGET_EUNATCH
+#define TARGET_EUNATCH         42
+#undef  TARGET_ENOCSI
+#define TARGET_ENOCSI          43
+#undef  TARGET_EL2HLT
+#define TARGET_EL2HLT          44
+#undef  TARGET_EDEADLK
+#define TARGET_EDEADLK         45
+#undef  TARGET_ENOLCK
+#define TARGET_ENOLCK          46
+#undef  TARGET_EILSEQ
+#define TARGET_EILSEQ          47
+
+#undef  TARGET_ENONET
+#define TARGET_ENONET          50
+#undef  TARGET_ENODATA
+#define TARGET_ENODATA         51
+#undef  TARGET_ETIME
+#define TARGET_ETIME           52
+#undef  TARGET_ENOSR
+#define TARGET_ENOSR           53
+#undef  TARGET_ENOSTR
+#define TARGET_ENOSTR          54
+#undef  TARGET_ENOPKG
+#define TARGET_ENOPKG          55
+
+#undef  TARGET_ENOLINK
+#define TARGET_ENOLINK         57
+#undef  TARGET_EADV
+#define TARGET_EADV            58
+#undef  TARGET_ESRMNT
+#define TARGET_ESRMNT          59
+#undef  TARGET_ECOMM
+#define TARGET_ECOMM           60
+#undef  TARGET_EPROTO
+#define TARGET_EPROTO          61
+
+#undef  TARGET_EMULTIHOP
+#define TARGET_EMULTIHOP       64
+
+#undef  TARGET_EDOTDOT
+#define TARGET_EDOTDOT         66
+#undef  TARGET_EBADMSG
+#define TARGET_EBADMSG         67
+#undef  TARGET_EUSERS
+#define TARGET_EUSERS          68
+#undef  TARGET_EDQUOT
+#define TARGET_EDQUOT          69
+#undef  TARGET_ESTALE
+#define TARGET_ESTALE          70
+#undef  TARGET_EREMOTE
+#define TARGET_EREMOTE         71
+#undef  TARGET_EOVERFLOW
+#define TARGET_EOVERFLOW       72
+
+#undef  TARGET_EBADE
+#define TARGET_EBADE           160
+#undef  TARGET_EBADR
+#define TARGET_EBADR           161
+#undef  TARGET_EXFULL
+#define TARGET_EXFULL          162
+#undef  TARGET_ENOANO
+#define TARGET_ENOANO          163
+#undef  TARGET_EBADRQC
+#define TARGET_EBADRQC         164
+#undef  TARGET_EBADSLT
+#define TARGET_EBADSLT         165
+#undef  TARGET_EBFONT
+#define TARGET_EBFONT          166
+#undef  TARGET_ENOTUNIQ
+#define TARGET_ENOTUNIQ        167
+#undef  TARGET_EBADFD
+#define TARGET_EBADFD          168
+#undef  TARGET_EREMCHG
+#define TARGET_EREMCHG         169
+#undef  TARGET_ELIBACC
+#define TARGET_ELIBACC         170
+#undef  TARGET_ELIBBAD
+#define TARGET_ELIBBAD         171
+#undef  TARGET_ELIBSCN
+#define TARGET_ELIBSCN         172
+#undef  TARGET_ELIBMAX
+#define TARGET_ELIBMAX         173
+#undef  TARGET_ELIBEXEC
+#define TARGET_ELIBEXEC        174
+#undef  TARGET_ERESTART
+#define TARGET_ERESTART        175
+#undef  TARGET_ESTRPIPE
+#define TARGET_ESTRPIPE        176
+#undef  TARGET_EUCLEAN
+#define TARGET_EUCLEAN         177
+#undef  TARGET_ENOTNAM
+#define TARGET_ENOTNAM         178
+#undef  TARGET_ENAVAIL
+#define TARGET_ENAVAIL         179
+#undef  TARGET_EISNAM
+#define TARGET_EISNAM          180
+#undef  TARGET_EREMOTEIO
+#define TARGET_EREMOTEIO       181
+#undef  TARGET_ENOMEDIUM
+#define TARGET_ENOMEDIUM       182
+#undef  TARGET_EMEDIUMTYPE
+#define TARGET_EMEDIUMTYPE     183
+#undef  TARGET_ENOKEY
+#define TARGET_ENOKEY          184
+#undef  TARGET_EKEYEXPIRED
+#define TARGET_EKEYEXPIRED     185
+#undef  TARGET_EKEYREVOKED
+#define TARGET_EKEYREVOKED     186
+#undef  TARGET_EKEYREJECTED
+#define TARGET_EKEYREJECTED    187
+
+/* Never used in linux.  */
+/* #define TARGET_ENOSYM          215 */
+#undef  TARGET_ENOTSOCK
+#define TARGET_ENOTSOCK        216
+#undef  TARGET_EDESTADDRREQ
+#define TARGET_EDESTADDRREQ    217
+#undef  TARGET_EMSGSIZE
+#define TARGET_EMSGSIZE        218
+#undef  TARGET_EPROTOTYPE
+#define TARGET_EPROTOTYPE      219
+#undef  TARGET_ENOPROTOOPT
+#define TARGET_ENOPROTOOPT     220
+#undef  TARGET_EPROTONOSUPPORT
+#define TARGET_EPROTONOSUPPORT 221
+#undef  TARGET_ESOCKTNOSUPPORT
+#define TARGET_ESOCKTNOSUPPORT 222
+#undef  TARGET_EOPNOTSUPP
+#define TARGET_EOPNOTSUPP      223
+#undef  TARGET_EPFNOSUPPORT
+#define TARGET_EPFNOSUPPORT    224
+#undef  TARGET_EAFNOSUPPORT
+#define TARGET_EAFNOSUPPORT    225
+#undef  TARGET_EADDRINUSE
+#define TARGET_EADDRINUSE      226
+#undef  TARGET_EADDRNOTAVAIL
+#define TARGET_EADDRNOTAVAIL   227
+#undef  TARGET_ENETDOWN
+#define TARGET_ENETDOWN        228
+#undef  TARGET_ENETUNREACH
+#define TARGET_ENETUNREACH     229
+#undef  TARGET_ENETRESET
+#define TARGET_ENETRESET       230
+#undef  TARGET_ECONNABORTED
+#define TARGET_ECONNABORTED    231
+#undef  TARGET_ECONNRESET
+#define TARGET_ECONNRESET      232
+#undef  TARGET_ENOBUFS
+#define TARGET_ENOBUFS         233
+#undef  TARGET_EISCONN
+#define TARGET_EISCONN         234
+#undef  TARGET_ENOTCONN
+#define TARGET_ENOTCONN        235
+#undef  TARGET_ESHUTDOWN
+#define TARGET_ESHUTDOWN       236
+#undef  TARGET_ETOOMANYREFS
+#define TARGET_ETOOMANYREFS    237
+#undef  TARGET_ETIMEDOUT
+#define TARGET_ETIMEDOUT       238
+#undef  TARGET_ECONNREFUSED
+#define TARGET_ECONNREFUSED    239
+#define TARGET_EREMOTERELEASE  240
+#undef  TARGET_EHOSTDOWN
+#define TARGET_EHOSTDOWN       241
+#undef  TARGET_EHOSTUNREACH
+#define TARGET_EHOSTUNREACH    242
+
+#undef  TARGET_EALREADY
+#define TARGET_EALREADY        244
+#undef  TARGET_EINPROGRESS
+#define TARGET_EINPROGRESS     245
+#undef  TARGET_ENOTEMPTY
+#define TARGET_ENOTEMPTY       247
+#undef  TARGET_ENAMETOOLONG
+#define TARGET_ENAMETOOLONG    248
+#undef  TARGET_ELOOP
+#define TARGET_ELOOP           249
+#undef  TARGET_ENOSYS
+#define TARGET_ENOSYS          251
+
+#undef  TARGET_ECANCELED
+#define TARGET_ECANCELED       253
+
+#undef  TARGET_EOWNERDEAD
+#define TARGET_EOWNERDEAD      254
+#undef  TARGET_ENOTRECOVERABLE
+#define TARGET_ENOTRECOVERABLE 255
+
+#undef  TARGET_ERFKILL
+#define TARGET_ERFKILL         256
+#undef  TARGET_EHWPOISON
+#define TARGET_EHWPOISON       257
+
 #endif
diff --git a/linux-user/hppa/target_syscall.h b/linux-user/hppa/target_syscall.h
index 97a095656d8..0018bcb5c4d 100644
--- a/linux-user/hppa/target_syscall.h
+++ b/linux-user/hppa/target_syscall.h
@@ -27,214 +27,4 @@ struct target_pt_regs {
 #define TARGET_MCL_FUTURE  2
 #define TARGET_MCL_ONFAULT 4
 
-#undef  TARGET_EWOULDBLOCK
-#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
-#undef  TARGET_ENOMSG
-#define TARGET_ENOMSG          35
-#undef  TARGET_EIDRM
-#define TARGET_EIDRM           36
-#undef  TARGET_ECHRNG
-#define TARGET_ECHRNG          37
-#undef  TARGET_EL2NSYNC
-#define TARGET_EL2NSYNC        38
-#undef  TARGET_EL3HLT
-#define TARGET_EL3HLT          39
-#undef  TARGET_EL3RST
-#define TARGET_EL3RST          40
-#undef  TARGET_ELNRNG
-#define TARGET_ELNRNG          41
-#undef  TARGET_EUNATCH
-#define TARGET_EUNATCH         42
-#undef  TARGET_ENOCSI
-#define TARGET_ENOCSI          43
-#undef  TARGET_EL2HLT
-#define TARGET_EL2HLT          44
-#undef  TARGET_EDEADLK
-#define TARGET_EDEADLK         45
-#undef  TARGET_ENOLCK
-#define TARGET_ENOLCK          46
-#undef  TARGET_EILSEQ
-#define TARGET_EILSEQ          47
-
-#undef  TARGET_ENONET
-#define TARGET_ENONET          50
-#undef  TARGET_ENODATA
-#define TARGET_ENODATA         51
-#undef  TARGET_ETIME
-#define TARGET_ETIME           52
-#undef  TARGET_ENOSR
-#define TARGET_ENOSR           53
-#undef  TARGET_ENOSTR
-#define TARGET_ENOSTR          54
-#undef  TARGET_ENOPKG
-#define TARGET_ENOPKG          55
-
-#undef  TARGET_ENOLINK
-#define TARGET_ENOLINK         57
-#undef  TARGET_EADV
-#define TARGET_EADV            58
-#undef  TARGET_ESRMNT
-#define TARGET_ESRMNT          59
-#undef  TARGET_ECOMM
-#define TARGET_ECOMM           60
-#undef  TARGET_EPROTO
-#define TARGET_EPROTO          61
-
-#undef  TARGET_EMULTIHOP
-#define TARGET_EMULTIHOP       64
-
-#undef  TARGET_EDOTDOT
-#define TARGET_EDOTDOT         66
-#undef  TARGET_EBADMSG
-#define TARGET_EBADMSG         67
-#undef  TARGET_EUSERS
-#define TARGET_EUSERS          68
-#undef  TARGET_EDQUOT
-#define TARGET_EDQUOT          69
-#undef  TARGET_ESTALE
-#define TARGET_ESTALE          70
-#undef  TARGET_EREMOTE
-#define TARGET_EREMOTE         71
-#undef  TARGET_EOVERFLOW
-#define TARGET_EOVERFLOW       72
-
-#undef  TARGET_EBADE
-#define TARGET_EBADE           160
-#undef  TARGET_EBADR
-#define TARGET_EBADR           161
-#undef  TARGET_EXFULL
-#define TARGET_EXFULL          162
-#undef  TARGET_ENOANO
-#define TARGET_ENOANO          163
-#undef  TARGET_EBADRQC
-#define TARGET_EBADRQC         164
-#undef  TARGET_EBADSLT
-#define TARGET_EBADSLT         165
-#undef  TARGET_EBFONT
-#define TARGET_EBFONT          166
-#undef  TARGET_ENOTUNIQ
-#define TARGET_ENOTUNIQ        167
-#undef  TARGET_EBADFD
-#define TARGET_EBADFD          168
-#undef  TARGET_EREMCHG
-#define TARGET_EREMCHG         169
-#undef  TARGET_ELIBACC
-#define TARGET_ELIBACC         170
-#undef  TARGET_ELIBBAD
-#define TARGET_ELIBBAD         171
-#undef  TARGET_ELIBSCN
-#define TARGET_ELIBSCN         172
-#undef  TARGET_ELIBMAX
-#define TARGET_ELIBMAX         173
-#undef  TARGET_ELIBEXEC
-#define TARGET_ELIBEXEC        174
-#undef  TARGET_ERESTART
-#define TARGET_ERESTART        175
-#undef  TARGET_ESTRPIPE
-#define TARGET_ESTRPIPE        176
-#undef  TARGET_EUCLEAN
-#define TARGET_EUCLEAN         177
-#undef  TARGET_ENOTNAM
-#define TARGET_ENOTNAM         178
-#undef  TARGET_ENAVAIL
-#define TARGET_ENAVAIL         179
-#undef  TARGET_EISNAM
-#define TARGET_EISNAM          180
-#undef  TARGET_EREMOTEIO
-#define TARGET_EREMOTEIO       181
-#undef  TARGET_ENOMEDIUM
-#define TARGET_ENOMEDIUM       182
-#undef  TARGET_EMEDIUMTYPE
-#define TARGET_EMEDIUMTYPE     183
-#undef  TARGET_ENOKEY
-#define TARGET_ENOKEY          184
-#undef  TARGET_EKEYEXPIRED
-#define TARGET_EKEYEXPIRED     185
-#undef  TARGET_EKEYREVOKED
-#define TARGET_EKEYREVOKED     186
-#undef  TARGET_EKEYREJECTED
-#define TARGET_EKEYREJECTED    187
-
-/* Never used in linux.  */
-/* #define TARGET_ENOSYM          215 */
-#undef  TARGET_ENOTSOCK
-#define TARGET_ENOTSOCK        216
-#undef  TARGET_EDESTADDRREQ
-#define TARGET_EDESTADDRREQ    217
-#undef  TARGET_EMSGSIZE
-#define TARGET_EMSGSIZE        218
-#undef  TARGET_EPROTOTYPE
-#define TARGET_EPROTOTYPE      219
-#undef  TARGET_ENOPROTOOPT
-#define TARGET_ENOPROTOOPT     220
-#undef  TARGET_EPROTONOSUPPORT
-#define TARGET_EPROTONOSUPPORT 221
-#undef  TARGET_ESOCKTNOSUPPORT
-#define TARGET_ESOCKTNOSUPPORT 222
-#undef  TARGET_EOPNOTSUPP
-#define TARGET_EOPNOTSUPP      223
-#undef  TARGET_EPFNOSUPPORT
-#define TARGET_EPFNOSUPPORT    224
-#undef  TARGET_EAFNOSUPPORT
-#define TARGET_EAFNOSUPPORT    225
-#undef  TARGET_EADDRINUSE
-#define TARGET_EADDRINUSE      226
-#undef  TARGET_EADDRNOTAVAIL
-#define TARGET_EADDRNOTAVAIL   227
-#undef  TARGET_ENETDOWN
-#define TARGET_ENETDOWN        228
-#undef  TARGET_ENETUNREACH
-#define TARGET_ENETUNREACH     229
-#undef  TARGET_ENETRESET
-#define TARGET_ENETRESET       230
-#undef  TARGET_ECONNABORTED
-#define TARGET_ECONNABORTED    231
-#undef  TARGET_ECONNRESET
-#define TARGET_ECONNRESET      232
-#undef  TARGET_ENOBUFS
-#define TARGET_ENOBUFS         233
-#undef  TARGET_EISCONN
-#define TARGET_EISCONN         234
-#undef  TARGET_ENOTCONN
-#define TARGET_ENOTCONN        235
-#undef  TARGET_ESHUTDOWN
-#define TARGET_ESHUTDOWN       236
-#undef  TARGET_ETOOMANYREFS
-#define TARGET_ETOOMANYREFS    237
-#undef  TARGET_ETIMEDOUT
-#define TARGET_ETIMEDOUT       238
-#undef  TARGET_ECONNREFUSED
-#define TARGET_ECONNREFUSED    239
-#define TARGET_EREMOTERELEASE  240
-#undef  TARGET_EHOSTDOWN
-#define TARGET_EHOSTDOWN       241
-#undef  TARGET_EHOSTUNREACH
-#define TARGET_EHOSTUNREACH    242
-
-#undef  TARGET_EALREADY
-#define TARGET_EALREADY        244
-#undef  TARGET_EINPROGRESS
-#define TARGET_EINPROGRESS     245
-#undef  TARGET_ENOTEMPTY
-#define TARGET_ENOTEMPTY       247
-#undef  TARGET_ENAMETOOLONG
-#define TARGET_ENAMETOOLONG    248
-#undef  TARGET_ELOOP
-#define TARGET_ELOOP           249
-#undef  TARGET_ENOSYS
-#define TARGET_ENOSYS          251
-
-#undef  TARGET_ECANCELED
-#define TARGET_ECANCELED       253
-
-#undef  TARGET_EOWNERDEAD
-#define TARGET_EOWNERDEAD      254
-#undef  TARGET_ENOTRECOVERABLE
-#define TARGET_ENOTRECOVERABLE 255
-
-#undef  TARGET_ERFKILL
-#define TARGET_ERFKILL         256
-#undef  TARGET_EHWPOISON
-#define TARGET_EHWPOISON       257
-
 #endif /* HPPA_TARGET_SYSCALL_H */
-- 
2.31.1



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

* [PATCH v2 6/8] linux-user/mips: Move errno definitions to 'target_errno_defs.h'
  2021-07-08 14:11 [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor Philippe Mathieu-Daudé
                   ` (4 preceding siblings ...)
  2021-07-08 14:11 ` [PATCH v2 5/8] linux-user/hppa: " Philippe Mathieu-Daudé
@ 2021-07-08 14:11 ` Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:38   ` Richard Henderson
  2021-07-08 14:11 ` [PATCH v2 7/8] linux-user/syscall: Introduce errno_exists() Philippe Mathieu-Daudé
  2021-07-08 14:11 ` [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros Philippe Mathieu-Daudé
  7 siblings, 2 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 14:11 UTC (permalink / raw)
  To: qemu-devel
  Cc: Taylor Simpson, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 linux-user/mips/target_errno_defs.h   | 211 ++++++++++++++++++++++++++
 linux-user/mips/target_syscall.h      | 211 --------------------------
 linux-user/mips64/target_errno_defs.h | 211 ++++++++++++++++++++++++++
 linux-user/mips64/target_syscall.h    | 211 --------------------------
 4 files changed, 422 insertions(+), 422 deletions(-)

diff --git a/linux-user/mips/target_errno_defs.h b/linux-user/mips/target_errno_defs.h
index daef95ea703..e4490768d07 100644
--- a/linux-user/mips/target_errno_defs.h
+++ b/linux-user/mips/target_errno_defs.h
@@ -3,4 +3,215 @@
 
 #include "../generic/target_errno_defs.h"
 
+/* Target errno definitions taken from asm-mips/errno.h */
+#undef TARGET_EWOULDBLOCK
+#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
+#undef TARGET_ENOMSG
+#define TARGET_ENOMSG          35      /* Identifier removed */
+#undef TARGET_EIDRM
+#define TARGET_EIDRM           36      /* Identifier removed */
+#undef TARGET_ECHRNG
+#define TARGET_ECHRNG          37      /* Channel number out of range */
+#undef TARGET_EL2NSYNC
+#define TARGET_EL2NSYNC        38      /* Level 2 not synchronized */
+#undef TARGET_EL3HLT
+#define TARGET_EL3HLT          39      /* Level 3 halted */
+#undef TARGET_EL3RST
+#define TARGET_EL3RST          40      /* Level 3 reset */
+#undef TARGET_ELNRNG
+#define TARGET_ELNRNG          41      /* Link number out of range */
+#undef TARGET_EUNATCH
+#define TARGET_EUNATCH         42      /* Protocol driver not attached */
+#undef TARGET_ENOCSI
+#define TARGET_ENOCSI          43      /* No CSI structure available */
+#undef TARGET_EL2HLT
+#define TARGET_EL2HLT          44      /* Level 2 halted */
+#undef TARGET_EDEADLK
+#define TARGET_EDEADLK         45      /* Resource deadlock would occur */
+#undef TARGET_ENOLCK
+#define TARGET_ENOLCK          46      /* No record locks available */
+#undef TARGET_EBADE
+#define TARGET_EBADE           50      /* Invalid exchange */
+#undef TARGET_EBADR
+#define TARGET_EBADR           51      /* Invalid request descriptor */
+#undef TARGET_EXFULL
+#define TARGET_EXFULL          52      /* TARGET_Exchange full */
+#undef TARGET_ENOANO
+#define TARGET_ENOANO          53      /* No anode */
+#undef TARGET_EBADRQC
+#define TARGET_EBADRQC         54      /* Invalid request code */
+#undef TARGET_EBADSLT
+#define TARGET_EBADSLT         55      /* Invalid slot */
+#undef TARGET_EDEADLOCK
+#define TARGET_EDEADLOCK       56      /* File locking deadlock error */
+#undef TARGET_EBFONT
+#define TARGET_EBFONT          59      /* Bad font file format */
+#undef TARGET_ENOSTR
+#define TARGET_ENOSTR          60      /* Device not a stream */
+#undef TARGET_ENODATA
+#define TARGET_ENODATA         61      /* No data available */
+#undef TARGET_ETIME
+#define TARGET_ETIME           62      /* Timer expired */
+#undef TARGET_ENOSR
+#define TARGET_ENOSR           63      /* Out of streams resources */
+#undef TARGET_ENONET
+#define TARGET_ENONET          64      /* Machine is not on the network */
+#undef TARGET_ENOPKG
+#define TARGET_ENOPKG          65      /* Package not installed */
+#undef TARGET_EREMOTE
+#define TARGET_EREMOTE         66      /* Object is remote */
+#undef TARGET_ENOLINK
+#define TARGET_ENOLINK         67      /* Link has been severed */
+#undef TARGET_EADV
+#define TARGET_EADV            68      /* Advertise error */
+#undef TARGET_ESRMNT
+#define TARGET_ESRMNT          69      /* Srmount error */
+#undef TARGET_ECOMM
+#define TARGET_ECOMM           70      /* Communication error on send */
+#undef TARGET_EPROTO
+#define TARGET_EPROTO          71      /* Protocol error */
+#undef TARGET_EDOTDOT
+#define TARGET_EDOTDOT         73      /* RFS specific error */
+#undef TARGET_EMULTIHOP
+#define TARGET_EMULTIHOP       74      /* Multihop attempted */
+#undef TARGET_EBADMSG
+#define TARGET_EBADMSG         77      /* Not a data message */
+#undef TARGET_ENAMETOOLONG
+#define TARGET_ENAMETOOLONG    78      /* File name too long */
+#undef TARGET_EOVERFLOW
+#define TARGET_EOVERFLOW       79      /* Value too large for defined data type */
+#undef TARGET_ENOTUNIQ
+#define TARGET_ENOTUNIQ        80      /* Name not unique on network */
+#undef TARGET_EBADFD
+#define TARGET_EBADFD          81      /* File descriptor in bad state */
+#undef TARGET_EREMCHG
+#define TARGET_EREMCHG         82      /* Remote address changed */
+#undef TARGET_ELIBACC
+#define TARGET_ELIBACC         83      /* Can not access a needed shared library */
+#undef TARGET_ELIBBAD
+#define TARGET_ELIBBAD         84      /* Accessing a corrupted shared library */
+#undef TARGET_ELIBSCN
+#define TARGET_ELIBSCN         85      /* .lib section in a.out corrupted */
+#undef TARGET_ELIBMAX
+#define TARGET_ELIBMAX         86      /* Attempting to link in too many shared libraries */
+#undef TARGET_ELIBEXEC
+#define TARGET_ELIBEXEC        87      /* Cannot exec a shared library directly */
+#undef TARGET_EILSEQ
+#define TARGET_EILSEQ          88      /* Illegal byte sequence */
+#undef TARGET_ENOSYS
+#define TARGET_ENOSYS          89      /* Function not implemented */
+#undef TARGET_ELOOP
+#define TARGET_ELOOP           90      /* Too many symbolic links encountered */
+#undef TARGET_ERESTART
+#define TARGET_ERESTART        91      /* Interrupted system call should be restarted */
+#undef TARGET_ESTRPIPE
+#define TARGET_ESTRPIPE        92      /* Streams pipe error */
+#undef TARGET_ENOTEMPTY
+#define TARGET_ENOTEMPTY       93      /* Directory not empty */
+#undef TARGET_EUSERS
+#define TARGET_EUSERS          94      /* Too many users */
+#undef TARGET_ENOTSOCK
+#define TARGET_ENOTSOCK        95      /* Socket operation on non-socket */
+#undef TARGET_EDESTADDRREQ
+#define TARGET_EDESTADDRREQ    96      /* Destination address required */
+#undef TARGET_EMSGSIZE
+#define TARGET_EMSGSIZE        97      /* Message too long */
+#undef TARGET_EPROTOTYPE
+#define TARGET_EPROTOTYPE      98      /* Protocol wrong type for socket */
+#undef TARGET_ENOPROTOOPT
+#define TARGET_ENOPROTOOPT     99      /* Protocol not available */
+#undef TARGET_EPROTONOSUPPORT
+#define TARGET_EPROTONOSUPPORT 120     /* Protocol not supported */
+#undef TARGET_ESOCKTNOSUPPORT
+#define TARGET_ESOCKTNOSUPPORT 121     /* Socket type not supported */
+#undef TARGET_EOPNOTSUPP
+#define TARGET_EOPNOTSUPP      122     /* Operation not supported on transport endpoint */
+#undef TARGET_EPFNOSUPPORT
+#define TARGET_EPFNOSUPPORT    123     /* Protocol family not supported */
+#undef TARGET_EAFNOSUPPORT
+#define TARGET_EAFNOSUPPORT    124     /* Address family not supported by protocol */
+#undef TARGET_EADDRINUSE
+#define TARGET_EADDRINUSE      125     /* Address already in use */
+#undef TARGET_EADDRNOTAVAIL
+#define TARGET_EADDRNOTAVAIL   126     /* Cannot assign requested address */
+#undef TARGET_ENETDOWN
+#define TARGET_ENETDOWN        127     /* Network is down */
+#undef TARGET_ENETUNREACH
+#define TARGET_ENETUNREACH     128     /* Network is unreachable */
+#undef TARGET_ENETRESET
+#define TARGET_ENETRESET       129     /* Network dropped connection because of reset */
+#undef TARGET_ECONNABORTED
+#define TARGET_ECONNABORTED    130     /* Software caused connection abort */
+#undef TARGET_ECONNRESET
+#define TARGET_ECONNRESET      131     /* Connection reset by peer */
+#undef TARGET_ENOBUFS
+#define TARGET_ENOBUFS         132     /* No buffer space available */
+#undef TARGET_EISCONN
+#define TARGET_EISCONN         133     /* Transport endpoint is already connected */
+#undef TARGET_ENOTCONN
+#define TARGET_ENOTCONN        134     /* Transport endpoint is not connected */
+#undef TARGET_EUCLEAN
+#define TARGET_EUCLEAN         135     /* Structure needs cleaning */
+#undef TARGET_ENOTNAM
+#define TARGET_ENOTNAM         137     /* Not a XENIX named type file */
+#undef TARGET_ENAVAIL
+#define TARGET_ENAVAIL         138     /* No XENIX semaphores available */
+#undef TARGET_EISNAM
+#define TARGET_EISNAM          139     /* Is a named type file */
+#undef TARGET_EREMOTEIO
+#define TARGET_EREMOTEIO       140     /* Remote I/O error */
+#undef TARGET_EINIT
+#define TARGET_EINIT           141     /* Reserved */
+#undef TARGET_EREMDEV
+#define TARGET_EREMDEV         142     /* TARGET_Error 142 */
+#undef TARGET_ESHUTDOWN
+#define TARGET_ESHUTDOWN       143     /* Cannot send after transport endpoint shutdown */
+#undef TARGET_ETOOMANYREFS
+#define TARGET_ETOOMANYREFS    144     /* Too many references: cannot splice */
+#undef TARGET_ETIMEDOUT
+#define TARGET_ETIMEDOUT       145     /* Connection timed out */
+#undef TARGET_ECONNREFUSED
+#define TARGET_ECONNREFUSED    146     /* Connection refused */
+#undef TARGET_EHOSTDOWN
+#define TARGET_EHOSTDOWN       147     /* Host is down */
+#undef TARGET_EHOSTUNREACH
+#define TARGET_EHOSTUNREACH    148     /* No route to host */
+#undef TARGET_EALREADY
+#define TARGET_EALREADY        149     /* Operation already in progress */
+#undef TARGET_EINPROGRESS
+#define TARGET_EINPROGRESS     150     /* Operation now in progress */
+#undef TARGET_ESTALE
+#define TARGET_ESTALE          151     /* Stale NFS file handle */
+#undef TARGET_ECANCELED
+#define TARGET_ECANCELED       158     /* AIO operation canceled */
+/*
+ * These error are Linux extensions.
+ */
+#undef TARGET_ENOMEDIUM
+#define TARGET_ENOMEDIUM       159     /* No medium found */
+#undef TARGET_EMEDIUMTYPE
+#define TARGET_EMEDIUMTYPE     160     /* Wrong medium type */
+#undef TARGET_ENOKEY
+#define TARGET_ENOKEY          161     /* Required key not available */
+#undef TARGET_EKEYEXPIRED
+#define TARGET_EKEYEXPIRED     162     /* Key has expired */
+#undef TARGET_EKEYREVOKED
+#define TARGET_EKEYREVOKED     163     /* Key has been revoked */
+#undef TARGET_EKEYREJECTED
+#define TARGET_EKEYREJECTED    164     /* Key was rejected by service */
+
+/* for robust mutexes */
+#undef TARGET_EOWNERDEAD
+#define TARGET_EOWNERDEAD      165     /* Owner died */
+#undef TARGET_ENOTRECOVERABLE
+#define TARGET_ENOTRECOVERABLE 166     /* State not recoverable */
+
+#undef TARGET_ERFKILL
+#define TARGET_ERFKILL         167
+#undef TARGET_EHWPOISON
+#define TARGET_EHWPOISON       168
+
+#undef TARGET_EDQUOT
+#define TARGET_EDQUOT          1133    /* Quota exceeded */
+
 #endif
diff --git a/linux-user/mips/target_syscall.h b/linux-user/mips/target_syscall.h
index 3e558fdb4b4..f59057493a3 100644
--- a/linux-user/mips/target_syscall.h
+++ b/linux-user/mips/target_syscall.h
@@ -20,217 +20,6 @@ struct target_pt_regs {
 	abi_ulong cp0_epc;
 };
 
-/* Target errno definitions taken from asm-mips/errno.h */
-#undef TARGET_EWOULDBLOCK
-#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
-#undef TARGET_ENOMSG
-#define TARGET_ENOMSG          35      /* Identifier removed */
-#undef TARGET_EIDRM
-#define TARGET_EIDRM           36      /* Identifier removed */
-#undef TARGET_ECHRNG
-#define TARGET_ECHRNG          37      /* Channel number out of range */
-#undef TARGET_EL2NSYNC
-#define TARGET_EL2NSYNC        38      /* Level 2 not synchronized */
-#undef TARGET_EL3HLT
-#define TARGET_EL3HLT          39      /* Level 3 halted */
-#undef TARGET_EL3RST
-#define TARGET_EL3RST          40      /* Level 3 reset */
-#undef TARGET_ELNRNG
-#define TARGET_ELNRNG          41      /* Link number out of range */
-#undef TARGET_EUNATCH
-#define TARGET_EUNATCH         42      /* Protocol driver not attached */
-#undef TARGET_ENOCSI
-#define TARGET_ENOCSI          43      /* No CSI structure available */
-#undef TARGET_EL2HLT
-#define TARGET_EL2HLT          44      /* Level 2 halted */
-#undef TARGET_EDEADLK
-#define TARGET_EDEADLK         45      /* Resource deadlock would occur */
-#undef TARGET_ENOLCK
-#define TARGET_ENOLCK          46      /* No record locks available */
-#undef TARGET_EBADE
-#define TARGET_EBADE           50      /* Invalid exchange */
-#undef TARGET_EBADR
-#define TARGET_EBADR           51      /* Invalid request descriptor */
-#undef TARGET_EXFULL
-#define TARGET_EXFULL          52      /* TARGET_Exchange full */
-#undef TARGET_ENOANO
-#define TARGET_ENOANO          53      /* No anode */
-#undef TARGET_EBADRQC
-#define TARGET_EBADRQC         54      /* Invalid request code */
-#undef TARGET_EBADSLT
-#define TARGET_EBADSLT         55      /* Invalid slot */
-#undef TARGET_EDEADLOCK
-#define TARGET_EDEADLOCK       56      /* File locking deadlock error */
-#undef TARGET_EBFONT
-#define TARGET_EBFONT          59      /* Bad font file format */
-#undef TARGET_ENOSTR
-#define TARGET_ENOSTR          60      /* Device not a stream */
-#undef TARGET_ENODATA
-#define TARGET_ENODATA         61      /* No data available */
-#undef TARGET_ETIME
-#define TARGET_ETIME           62      /* Timer expired */
-#undef TARGET_ENOSR
-#define TARGET_ENOSR           63      /* Out of streams resources */
-#undef TARGET_ENONET
-#define TARGET_ENONET          64      /* Machine is not on the network */
-#undef TARGET_ENOPKG
-#define TARGET_ENOPKG          65      /* Package not installed */
-#undef TARGET_EREMOTE
-#define TARGET_EREMOTE         66      /* Object is remote */
-#undef TARGET_ENOLINK
-#define TARGET_ENOLINK         67      /* Link has been severed */
-#undef TARGET_EADV
-#define TARGET_EADV            68      /* Advertise error */
-#undef TARGET_ESRMNT
-#define TARGET_ESRMNT          69      /* Srmount error */
-#undef TARGET_ECOMM
-#define TARGET_ECOMM           70      /* Communication error on send */
-#undef TARGET_EPROTO
-#define TARGET_EPROTO          71      /* Protocol error */
-#undef TARGET_EDOTDOT
-#define TARGET_EDOTDOT         73      /* RFS specific error */
-#undef TARGET_EMULTIHOP
-#define TARGET_EMULTIHOP       74      /* Multihop attempted */
-#undef TARGET_EBADMSG
-#define TARGET_EBADMSG         77      /* Not a data message */
-#undef TARGET_ENAMETOOLONG
-#define TARGET_ENAMETOOLONG    78      /* File name too long */
-#undef TARGET_EOVERFLOW
-#define TARGET_EOVERFLOW       79      /* Value too large for defined data type */
-#undef TARGET_ENOTUNIQ
-#define TARGET_ENOTUNIQ        80      /* Name not unique on network */
-#undef TARGET_EBADFD
-#define TARGET_EBADFD          81      /* File descriptor in bad state */
-#undef TARGET_EREMCHG
-#define TARGET_EREMCHG         82      /* Remote address changed */
-#undef TARGET_ELIBACC
-#define TARGET_ELIBACC         83      /* Can not access a needed shared library */
-#undef TARGET_ELIBBAD
-#define TARGET_ELIBBAD         84      /* Accessing a corrupted shared library */
-#undef TARGET_ELIBSCN
-#define TARGET_ELIBSCN         85      /* .lib section in a.out corrupted */
-#undef TARGET_ELIBMAX
-#define TARGET_ELIBMAX         86      /* Attempting to link in too many shared libraries */
-#undef TARGET_ELIBEXEC
-#define TARGET_ELIBEXEC        87      /* Cannot exec a shared library directly */
-#undef TARGET_EILSEQ
-#define TARGET_EILSEQ          88      /* Illegal byte sequence */
-#undef TARGET_ENOSYS
-#define TARGET_ENOSYS          89      /* Function not implemented */
-#undef TARGET_ELOOP
-#define TARGET_ELOOP           90      /* Too many symbolic links encountered */
-#undef TARGET_ERESTART
-#define TARGET_ERESTART        91      /* Interrupted system call should be restarted */
-#undef TARGET_ESTRPIPE
-#define TARGET_ESTRPIPE        92      /* Streams pipe error */
-#undef TARGET_ENOTEMPTY
-#define TARGET_ENOTEMPTY       93      /* Directory not empty */
-#undef TARGET_EUSERS
-#define TARGET_EUSERS          94      /* Too many users */
-#undef TARGET_ENOTSOCK
-#define TARGET_ENOTSOCK        95      /* Socket operation on non-socket */
-#undef TARGET_EDESTADDRREQ
-#define TARGET_EDESTADDRREQ    96      /* Destination address required */
-#undef TARGET_EMSGSIZE
-#define TARGET_EMSGSIZE        97      /* Message too long */
-#undef TARGET_EPROTOTYPE
-#define TARGET_EPROTOTYPE      98      /* Protocol wrong type for socket */
-#undef TARGET_ENOPROTOOPT
-#define TARGET_ENOPROTOOPT     99      /* Protocol not available */
-#undef TARGET_EPROTONOSUPPORT
-#define TARGET_EPROTONOSUPPORT 120     /* Protocol not supported */
-#undef TARGET_ESOCKTNOSUPPORT
-#define TARGET_ESOCKTNOSUPPORT 121     /* Socket type not supported */
-#undef TARGET_EOPNOTSUPP
-#define TARGET_EOPNOTSUPP      122     /* Operation not supported on transport endpoint */
-#undef TARGET_EPFNOSUPPORT
-#define TARGET_EPFNOSUPPORT    123     /* Protocol family not supported */
-#undef TARGET_EAFNOSUPPORT
-#define TARGET_EAFNOSUPPORT    124     /* Address family not supported by protocol */
-#undef TARGET_EADDRINUSE
-#define TARGET_EADDRINUSE      125     /* Address already in use */
-#undef TARGET_EADDRNOTAVAIL
-#define TARGET_EADDRNOTAVAIL   126     /* Cannot assign requested address */
-#undef TARGET_ENETDOWN
-#define TARGET_ENETDOWN        127     /* Network is down */
-#undef TARGET_ENETUNREACH
-#define TARGET_ENETUNREACH     128     /* Network is unreachable */
-#undef TARGET_ENETRESET
-#define TARGET_ENETRESET       129     /* Network dropped connection because of reset */
-#undef TARGET_ECONNABORTED
-#define TARGET_ECONNABORTED    130     /* Software caused connection abort */
-#undef TARGET_ECONNRESET
-#define TARGET_ECONNRESET      131     /* Connection reset by peer */
-#undef TARGET_ENOBUFS
-#define TARGET_ENOBUFS         132     /* No buffer space available */
-#undef TARGET_EISCONN
-#define TARGET_EISCONN         133     /* Transport endpoint is already connected */
-#undef TARGET_ENOTCONN
-#define TARGET_ENOTCONN        134     /* Transport endpoint is not connected */
-#undef TARGET_EUCLEAN
-#define TARGET_EUCLEAN         135     /* Structure needs cleaning */
-#undef TARGET_ENOTNAM
-#define TARGET_ENOTNAM         137     /* Not a XENIX named type file */
-#undef TARGET_ENAVAIL
-#define TARGET_ENAVAIL         138     /* No XENIX semaphores available */
-#undef TARGET_EISNAM
-#define TARGET_EISNAM          139     /* Is a named type file */
-#undef TARGET_EREMOTEIO
-#define TARGET_EREMOTEIO       140     /* Remote I/O error */
-#undef TARGET_EINIT
-#define TARGET_EINIT           141     /* Reserved */
-#undef TARGET_EREMDEV
-#define TARGET_EREMDEV         142     /* TARGET_Error 142 */
-#undef TARGET_ESHUTDOWN
-#define TARGET_ESHUTDOWN       143     /* Cannot send after transport endpoint shutdown */
-#undef TARGET_ETOOMANYREFS
-#define TARGET_ETOOMANYREFS    144     /* Too many references: cannot splice */
-#undef TARGET_ETIMEDOUT
-#define TARGET_ETIMEDOUT       145     /* Connection timed out */
-#undef TARGET_ECONNREFUSED
-#define TARGET_ECONNREFUSED    146     /* Connection refused */
-#undef TARGET_EHOSTDOWN
-#define TARGET_EHOSTDOWN       147     /* Host is down */
-#undef TARGET_EHOSTUNREACH
-#define TARGET_EHOSTUNREACH    148     /* No route to host */
-#undef TARGET_EALREADY
-#define TARGET_EALREADY        149     /* Operation already in progress */
-#undef TARGET_EINPROGRESS
-#define TARGET_EINPROGRESS     150     /* Operation now in progress */
-#undef TARGET_ESTALE
-#define TARGET_ESTALE          151     /* Stale NFS file handle */
-#undef TARGET_ECANCELED
-#define TARGET_ECANCELED       158     /* AIO operation canceled */
-/*
- * These error are Linux extensions.
- */
-#undef TARGET_ENOMEDIUM
-#define TARGET_ENOMEDIUM       159     /* No medium found */
-#undef TARGET_EMEDIUMTYPE
-#define TARGET_EMEDIUMTYPE     160     /* Wrong medium type */
-#undef TARGET_ENOKEY
-#define TARGET_ENOKEY          161     /* Required key not available */
-#undef TARGET_EKEYEXPIRED
-#define TARGET_EKEYEXPIRED     162     /* Key has expired */
-#undef TARGET_EKEYREVOKED
-#define TARGET_EKEYREVOKED     163     /* Key has been revoked */
-#undef TARGET_EKEYREJECTED
-#define TARGET_EKEYREJECTED    164     /* Key was rejected by service */
-
-/* for robust mutexes */
-#undef TARGET_EOWNERDEAD
-#define TARGET_EOWNERDEAD      165     /* Owner died */
-#undef TARGET_ENOTRECOVERABLE
-#define TARGET_ENOTRECOVERABLE 166     /* State not recoverable */
-
-#undef TARGET_ERFKILL
-#define TARGET_ERFKILL         167
-#undef TARGET_EHWPOISON
-#define TARGET_EHWPOISON       168
-
-#undef TARGET_EDQUOT
-#define TARGET_EDQUOT          1133    /* Quota exceeded */
-
 #define UNAME_MACHINE "mips"
 #define UNAME_MINIMUM_RELEASE "2.6.32"
 
diff --git a/linux-user/mips64/target_errno_defs.h b/linux-user/mips64/target_errno_defs.h
index 82b0a704f62..8192cee3321 100644
--- a/linux-user/mips64/target_errno_defs.h
+++ b/linux-user/mips64/target_errno_defs.h
@@ -3,4 +3,215 @@
 
 #include "../generic/target_errno_defs.h"
 
+/* Target errno definitions taken from asm-mips/errno.h */
+#undef TARGET_EWOULDBLOCK
+#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
+#undef TARGET_ENOMSG
+#define TARGET_ENOMSG          35      /* Identifier removed */
+#undef TARGET_EIDRM
+#define TARGET_EIDRM           36      /* Identifier removed */
+#undef TARGET_ECHRNG
+#define TARGET_ECHRNG          37      /* Channel number out of range */
+#undef TARGET_EL2NSYNC
+#define TARGET_EL2NSYNC        38      /* Level 2 not synchronized */
+#undef TARGET_EL3HLT
+#define TARGET_EL3HLT          39      /* Level 3 halted */
+#undef TARGET_EL3RST
+#define TARGET_EL3RST          40      /* Level 3 reset */
+#undef TARGET_ELNRNG
+#define TARGET_ELNRNG          41      /* Link number out of range */
+#undef TARGET_EUNATCH
+#define TARGET_EUNATCH         42      /* Protocol driver not attached */
+#undef TARGET_ENOCSI
+#define TARGET_ENOCSI          43      /* No CSI structure available */
+#undef TARGET_EL2HLT
+#define TARGET_EL2HLT          44      /* Level 2 halted */
+#undef TARGET_EDEADLK
+#define TARGET_EDEADLK         45      /* Resource deadlock would occur */
+#undef TARGET_ENOLCK
+#define TARGET_ENOLCK          46      /* No record locks available */
+#undef TARGET_EBADE
+#define TARGET_EBADE           50      /* Invalid exchange */
+#undef TARGET_EBADR
+#define TARGET_EBADR           51      /* Invalid request descriptor */
+#undef TARGET_EXFULL
+#define TARGET_EXFULL          52      /* TARGET_Exchange full */
+#undef TARGET_ENOANO
+#define TARGET_ENOANO          53      /* No anode */
+#undef TARGET_EBADRQC
+#define TARGET_EBADRQC         54      /* Invalid request code */
+#undef TARGET_EBADSLT
+#define TARGET_EBADSLT         55      /* Invalid slot */
+#undef TARGET_EDEADLOCK
+#define TARGET_EDEADLOCK       56      /* File locking deadlock error */
+#undef TARGET_EBFONT
+#define TARGET_EBFONT          59      /* Bad font file format */
+#undef TARGET_ENOSTR
+#define TARGET_ENOSTR          60      /* Device not a stream */
+#undef TARGET_ENODATA
+#define TARGET_ENODATA         61      /* No data available */
+#undef TARGET_ETIME
+#define TARGET_ETIME           62      /* Timer expired */
+#undef TARGET_ENOSR
+#define TARGET_ENOSR           63      /* Out of streams resources */
+#undef TARGET_ENONET
+#define TARGET_ENONET          64      /* Machine is not on the network */
+#undef TARGET_ENOPKG
+#define TARGET_ENOPKG          65      /* Package not installed */
+#undef TARGET_EREMOTE
+#define TARGET_EREMOTE         66      /* Object is remote */
+#undef TARGET_ENOLINK
+#define TARGET_ENOLINK         67      /* Link has been severed */
+#undef TARGET_EADV
+#define TARGET_EADV            68      /* Advertise error */
+#undef TARGET_ESRMNT
+#define TARGET_ESRMNT          69      /* Srmount error */
+#undef TARGET_ECOMM
+#define TARGET_ECOMM           70      /* Communication error on send */
+#undef TARGET_EPROTO
+#define TARGET_EPROTO          71      /* Protocol error */
+#undef TARGET_EDOTDOT
+#define TARGET_EDOTDOT         73      /* RFS specific error */
+#undef TARGET_EMULTIHOP
+#define TARGET_EMULTIHOP       74      /* Multihop attempted */
+#undef TARGET_EBADMSG
+#define TARGET_EBADMSG         77      /* Not a data message */
+#undef TARGET_ENAMETOOLONG
+#define TARGET_ENAMETOOLONG    78      /* File name too long */
+#undef TARGET_EOVERFLOW
+#define TARGET_EOVERFLOW       79      /* Value too large for defined data type */
+#undef TARGET_ENOTUNIQ
+#define TARGET_ENOTUNIQ        80      /* Name not unique on network */
+#undef TARGET_EBADFD
+#define TARGET_EBADFD          81      /* File descriptor in bad state */
+#undef TARGET_EREMCHG
+#define TARGET_EREMCHG         82      /* Remote address changed */
+#undef TARGET_ELIBACC
+#define TARGET_ELIBACC         83      /* Can not access a needed shared library */
+#undef TARGET_ELIBBAD
+#define TARGET_ELIBBAD         84      /* Accessing a corrupted shared library */
+#undef TARGET_ELIBSCN
+#define TARGET_ELIBSCN         85      /* .lib section in a.out corrupted */
+#undef TARGET_ELIBMAX
+#define TARGET_ELIBMAX         86      /* Attempting to link in too many shared libraries */
+#undef TARGET_ELIBEXEC
+#define TARGET_ELIBEXEC        87      /* Cannot exec a shared library directly */
+#undef TARGET_EILSEQ
+#define TARGET_EILSEQ          88      /* Illegal byte sequence */
+#undef TARGET_ENOSYS
+#define TARGET_ENOSYS          89      /* Function not implemented */
+#undef TARGET_ELOOP
+#define TARGET_ELOOP           90      /* Too many symbolic links encountered */
+#undef TARGET_ERESTART
+#define TARGET_ERESTART        91      /* Interrupted system call should be restarted */
+#undef TARGET_ESTRPIPE
+#define TARGET_ESTRPIPE        92      /* Streams pipe error */
+#undef TARGET_ENOTEMPTY
+#define TARGET_ENOTEMPTY       93      /* Directory not empty */
+#undef TARGET_EUSERS
+#define TARGET_EUSERS          94      /* Too many users */
+#undef TARGET_ENOTSOCK
+#define TARGET_ENOTSOCK        95      /* Socket operation on non-socket */
+#undef TARGET_EDESTADDRREQ
+#define TARGET_EDESTADDRREQ    96      /* Destination address required */
+#undef TARGET_EMSGSIZE
+#define TARGET_EMSGSIZE        97      /* Message too long */
+#undef TARGET_EPROTOTYPE
+#define TARGET_EPROTOTYPE      98      /* Protocol wrong type for socket */
+#undef TARGET_ENOPROTOOPT
+#define TARGET_ENOPROTOOPT     99      /* Protocol not available */
+#undef TARGET_EPROTONOSUPPORT
+#define TARGET_EPROTONOSUPPORT 120     /* Protocol not supported */
+#undef TARGET_ESOCKTNOSUPPORT
+#define TARGET_ESOCKTNOSUPPORT 121     /* Socket type not supported */
+#undef TARGET_EOPNOTSUPP
+#define TARGET_EOPNOTSUPP      122     /* Operation not supported on transport endpoint */
+#undef TARGET_EPFNOSUPPORT
+#define TARGET_EPFNOSUPPORT    123     /* Protocol family not supported */
+#undef TARGET_EAFNOSUPPORT
+#define TARGET_EAFNOSUPPORT    124     /* Address family not supported by protocol */
+#undef TARGET_EADDRINUSE
+#define TARGET_EADDRINUSE      125     /* Address already in use */
+#undef TARGET_EADDRNOTAVAIL
+#define TARGET_EADDRNOTAVAIL   126     /* Cannot assign requested address */
+#undef TARGET_ENETDOWN
+#define TARGET_ENETDOWN        127     /* Network is down */
+#undef TARGET_ENETUNREACH
+#define TARGET_ENETUNREACH     128     /* Network is unreachable */
+#undef TARGET_ENETRESET
+#define TARGET_ENETRESET       129     /* Network dropped connection because of reset */
+#undef TARGET_ECONNABORTED
+#define TARGET_ECONNABORTED    130     /* Software caused connection abort */
+#undef TARGET_ECONNRESET
+#define TARGET_ECONNRESET      131     /* Connection reset by peer */
+#undef TARGET_ENOBUFS
+#define TARGET_ENOBUFS         132     /* No buffer space available */
+#undef TARGET_EISCONN
+#define TARGET_EISCONN         133     /* Transport endpoint is already connected */
+#undef TARGET_ENOTCONN
+#define TARGET_ENOTCONN        134     /* Transport endpoint is not connected */
+#undef TARGET_EUCLEAN
+#define TARGET_EUCLEAN         135     /* Structure needs cleaning */
+#undef TARGET_ENOTNAM
+#define TARGET_ENOTNAM         137     /* Not a XENIX named type file */
+#undef TARGET_ENAVAIL
+#define TARGET_ENAVAIL         138     /* No XENIX semaphores available */
+#undef TARGET_EISNAM
+#define TARGET_EISNAM          139     /* Is a named type file */
+#undef TARGET_EREMOTEIO
+#define TARGET_EREMOTEIO       140     /* Remote I/O error */
+#undef TARGET_EINIT
+#define TARGET_EINIT           141     /* Reserved */
+#undef TARGET_EREMDEV
+#define TARGET_EREMDEV         142     /* TARGET_Error 142 */
+#undef TARGET_ESHUTDOWN
+#define TARGET_ESHUTDOWN       143     /* Cannot send after transport endpoint shutdown */
+#undef TARGET_ETOOMANYREFS
+#define TARGET_ETOOMANYREFS    144     /* Too many references: cannot splice */
+#undef TARGET_ETIMEDOUT
+#define TARGET_ETIMEDOUT       145     /* Connection timed out */
+#undef TARGET_ECONNREFUSED
+#define TARGET_ECONNREFUSED    146     /* Connection refused */
+#undef TARGET_EHOSTDOWN
+#define TARGET_EHOSTDOWN       147     /* Host is down */
+#undef TARGET_EHOSTUNREACH
+#define TARGET_EHOSTUNREACH    148     /* No route to host */
+#undef TARGET_EALREADY
+#define TARGET_EALREADY        149     /* Operation already in progress */
+#undef TARGET_EINPROGRESS
+#define TARGET_EINPROGRESS     150     /* Operation now in progress */
+#undef TARGET_ESTALE
+#define TARGET_ESTALE          151     /* Stale NFS file handle */
+#undef TARGET_ECANCELED
+#define TARGET_ECANCELED       158     /* AIO operation canceled */
+/*
+ * These error are Linux extensions.
+ */
+#undef TARGET_ENOMEDIUM
+#define TARGET_ENOMEDIUM       159     /* No medium found */
+#undef TARGET_EMEDIUMTYPE
+#define TARGET_EMEDIUMTYPE     160     /* Wrong medium type */
+#undef TARGET_ENOKEY
+#define TARGET_ENOKEY          161     /* Required key not available */
+#undef TARGET_EKEYEXPIRED
+#define TARGET_EKEYEXPIRED     162     /* Key has expired */
+#undef TARGET_EKEYREVOKED
+#define TARGET_EKEYREVOKED     163     /* Key has been revoked */
+#undef TARGET_EKEYREJECTED
+#define TARGET_EKEYREJECTED    164     /* Key was rejected by service */
+
+/* for robust mutexes */
+#undef TARGET_EOWNERDEAD
+#define TARGET_EOWNERDEAD      165     /* Owner died */
+#undef TARGET_ENOTRECOVERABLE
+#define TARGET_ENOTRECOVERABLE 166     /* State not recoverable */
+
+#undef TARGET_ERFKILL
+#define TARGET_ERFKILL         167
+#undef TARGET_EHWPOISON
+#define TARGET_EHWPOISON       168
+
+#undef TARGET_EDQUOT
+#define TARGET_EDQUOT          1133    /* Quota exceeded */
+
 #endif
diff --git a/linux-user/mips64/target_syscall.h b/linux-user/mips64/target_syscall.h
index c54374c5a29..cd1e1b49691 100644
--- a/linux-user/mips64/target_syscall.h
+++ b/linux-user/mips64/target_syscall.h
@@ -17,217 +17,6 @@ struct target_pt_regs {
         target_ulong cp0_epc;
 };
 
-/* Target errno definitions taken from asm-mips/errno.h */
-#undef TARGET_EWOULDBLOCK
-#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
-#undef TARGET_ENOMSG
-#define TARGET_ENOMSG          35      /* Identifier removed */
-#undef TARGET_EIDRM
-#define TARGET_EIDRM           36      /* Identifier removed */
-#undef TARGET_ECHRNG
-#define TARGET_ECHRNG          37      /* Channel number out of range */
-#undef TARGET_EL2NSYNC
-#define TARGET_EL2NSYNC        38      /* Level 2 not synchronized */
-#undef TARGET_EL3HLT
-#define TARGET_EL3HLT          39      /* Level 3 halted */
-#undef TARGET_EL3RST
-#define TARGET_EL3RST          40      /* Level 3 reset */
-#undef TARGET_ELNRNG
-#define TARGET_ELNRNG          41      /* Link number out of range */
-#undef TARGET_EUNATCH
-#define TARGET_EUNATCH         42      /* Protocol driver not attached */
-#undef TARGET_ENOCSI
-#define TARGET_ENOCSI          43      /* No CSI structure available */
-#undef TARGET_EL2HLT
-#define TARGET_EL2HLT          44      /* Level 2 halted */
-#undef TARGET_EDEADLK
-#define TARGET_EDEADLK         45      /* Resource deadlock would occur */
-#undef TARGET_ENOLCK
-#define TARGET_ENOLCK          46      /* No record locks available */
-#undef TARGET_EBADE
-#define TARGET_EBADE           50      /* Invalid exchange */
-#undef TARGET_EBADR
-#define TARGET_EBADR           51      /* Invalid request descriptor */
-#undef TARGET_EXFULL
-#define TARGET_EXFULL          52      /* TARGET_Exchange full */
-#undef TARGET_ENOANO
-#define TARGET_ENOANO          53      /* No anode */
-#undef TARGET_EBADRQC
-#define TARGET_EBADRQC         54      /* Invalid request code */
-#undef TARGET_EBADSLT
-#define TARGET_EBADSLT         55      /* Invalid slot */
-#undef TARGET_EDEADLOCK
-#define TARGET_EDEADLOCK       56      /* File locking deadlock error */
-#undef TARGET_EBFONT
-#define TARGET_EBFONT          59      /* Bad font file format */
-#undef TARGET_ENOSTR
-#define TARGET_ENOSTR          60      /* Device not a stream */
-#undef TARGET_ENODATA
-#define TARGET_ENODATA         61      /* No data available */
-#undef TARGET_ETIME
-#define TARGET_ETIME           62      /* Timer expired */
-#undef TARGET_ENOSR
-#define TARGET_ENOSR           63      /* Out of streams resources */
-#undef TARGET_ENONET
-#define TARGET_ENONET          64      /* Machine is not on the network */
-#undef TARGET_ENOPKG
-#define TARGET_ENOPKG          65      /* Package not installed */
-#undef TARGET_EREMOTE
-#define TARGET_EREMOTE         66      /* Object is remote */
-#undef TARGET_ENOLINK
-#define TARGET_ENOLINK         67      /* Link has been severed */
-#undef TARGET_EADV
-#define TARGET_EADV            68      /* Advertise error */
-#undef TARGET_ESRMNT
-#define TARGET_ESRMNT          69      /* Srmount error */
-#undef TARGET_ECOMM
-#define TARGET_ECOMM           70      /* Communication error on send */
-#undef TARGET_EPROTO
-#define TARGET_EPROTO          71      /* Protocol error */
-#undef TARGET_EDOTDOT
-#define TARGET_EDOTDOT         73      /* RFS specific error */
-#undef TARGET_EMULTIHOP
-#define TARGET_EMULTIHOP       74      /* Multihop attempted */
-#undef TARGET_EBADMSG
-#define TARGET_EBADMSG         77      /* Not a data message */
-#undef TARGET_ENAMETOOLONG
-#define TARGET_ENAMETOOLONG    78      /* File name too long */
-#undef TARGET_EOVERFLOW
-#define TARGET_EOVERFLOW       79      /* Value too large for defined data type */
-#undef TARGET_ENOTUNIQ
-#define TARGET_ENOTUNIQ        80      /* Name not unique on network */
-#undef TARGET_EBADFD
-#define TARGET_EBADFD          81      /* File descriptor in bad state */
-#undef TARGET_EREMCHG
-#define TARGET_EREMCHG         82      /* Remote address changed */
-#undef TARGET_ELIBACC
-#define TARGET_ELIBACC         83      /* Can not access a needed shared library */
-#undef TARGET_ELIBBAD
-#define TARGET_ELIBBAD         84      /* Accessing a corrupted shared library */
-#undef TARGET_ELIBSCN
-#define TARGET_ELIBSCN         85      /* .lib section in a.out corrupted */
-#undef TARGET_ELIBMAX
-#define TARGET_ELIBMAX         86      /* Attempting to link in too many shared libraries */
-#undef TARGET_ELIBEXEC
-#define TARGET_ELIBEXEC        87      /* Cannot exec a shared library directly */
-#undef TARGET_EILSEQ
-#define TARGET_EILSEQ          88      /* Illegal byte sequence */
-#undef TARGET_ENOSYS
-#define TARGET_ENOSYS          89      /* Function not implemented */
-#undef TARGET_ELOOP
-#define TARGET_ELOOP           90      /* Too many symbolic links encountered */
-#undef TARGET_ERESTART
-#define TARGET_ERESTART        91      /* Interrupted system call should be restarted */
-#undef TARGET_ESTRPIPE
-#define TARGET_ESTRPIPE        92      /* Streams pipe error */
-#undef TARGET_ENOTEMPTY
-#define TARGET_ENOTEMPTY       93      /* Directory not empty */
-#undef TARGET_EUSERS
-#define TARGET_EUSERS          94      /* Too many users */
-#undef TARGET_ENOTSOCK
-#define TARGET_ENOTSOCK        95      /* Socket operation on non-socket */
-#undef TARGET_EDESTADDRREQ
-#define TARGET_EDESTADDRREQ    96      /* Destination address required */
-#undef TARGET_EMSGSIZE
-#define TARGET_EMSGSIZE        97      /* Message too long */
-#undef TARGET_EPROTOTYPE
-#define TARGET_EPROTOTYPE      98      /* Protocol wrong type for socket */
-#undef TARGET_ENOPROTOOPT
-#define TARGET_ENOPROTOOPT     99      /* Protocol not available */
-#undef TARGET_EPROTONOSUPPORT
-#define TARGET_EPROTONOSUPPORT 120     /* Protocol not supported */
-#undef TARGET_ESOCKTNOSUPPORT
-#define TARGET_ESOCKTNOSUPPORT 121     /* Socket type not supported */
-#undef TARGET_EOPNOTSUPP
-#define TARGET_EOPNOTSUPP      122     /* Operation not supported on transport endpoint */
-#undef TARGET_EPFNOSUPPORT
-#define TARGET_EPFNOSUPPORT    123     /* Protocol family not supported */
-#undef TARGET_EAFNOSUPPORT
-#define TARGET_EAFNOSUPPORT    124     /* Address family not supported by protocol */
-#undef TARGET_EADDRINUSE
-#define TARGET_EADDRINUSE      125     /* Address already in use */
-#undef TARGET_EADDRNOTAVAIL
-#define TARGET_EADDRNOTAVAIL   126     /* Cannot assign requested address */
-#undef TARGET_ENETDOWN
-#define TARGET_ENETDOWN        127     /* Network is down */
-#undef TARGET_ENETUNREACH
-#define TARGET_ENETUNREACH     128     /* Network is unreachable */
-#undef TARGET_ENETRESET
-#define TARGET_ENETRESET       129     /* Network dropped connection because of reset */
-#undef TARGET_ECONNABORTED
-#define TARGET_ECONNABORTED    130     /* Software caused connection abort */
-#undef TARGET_ECONNRESET
-#define TARGET_ECONNRESET      131     /* Connection reset by peer */
-#undef TARGET_ENOBUFS
-#define TARGET_ENOBUFS         132     /* No buffer space available */
-#undef TARGET_EISCONN
-#define TARGET_EISCONN         133     /* Transport endpoint is already connected */
-#undef TARGET_ENOTCONN
-#define TARGET_ENOTCONN        134     /* Transport endpoint is not connected */
-#undef TARGET_EUCLEAN
-#define TARGET_EUCLEAN         135     /* Structure needs cleaning */
-#undef TARGET_ENOTNAM
-#define TARGET_ENOTNAM         137     /* Not a XENIX named type file */
-#undef TARGET_ENAVAIL
-#define TARGET_ENAVAIL         138     /* No XENIX semaphores available */
-#undef TARGET_EISNAM
-#define TARGET_EISNAM          139     /* Is a named type file */
-#undef TARGET_EREMOTEIO
-#define TARGET_EREMOTEIO       140     /* Remote I/O error */
-#undef TARGET_EINIT
-#define TARGET_EINIT           141     /* Reserved */
-#undef TARGET_EREMDEV
-#define TARGET_EREMDEV         142     /* TARGET_Error 142 */
-#undef TARGET_ESHUTDOWN
-#define TARGET_ESHUTDOWN       143     /* Cannot send after transport endpoint shutdown */
-#undef TARGET_ETOOMANYREFS
-#define TARGET_ETOOMANYREFS    144     /* Too many references: cannot splice */
-#undef TARGET_ETIMEDOUT
-#define TARGET_ETIMEDOUT       145     /* Connection timed out */
-#undef TARGET_ECONNREFUSED
-#define TARGET_ECONNREFUSED    146     /* Connection refused */
-#undef TARGET_EHOSTDOWN
-#define TARGET_EHOSTDOWN       147     /* Host is down */
-#undef TARGET_EHOSTUNREACH
-#define TARGET_EHOSTUNREACH    148     /* No route to host */
-#undef TARGET_EALREADY
-#define TARGET_EALREADY        149     /* Operation already in progress */
-#undef TARGET_EINPROGRESS
-#define TARGET_EINPROGRESS     150     /* Operation now in progress */
-#undef TARGET_ESTALE
-#define TARGET_ESTALE          151     /* Stale NFS file handle */
-#undef TARGET_ECANCELED
-#define TARGET_ECANCELED       158     /* AIO operation canceled */
-/*
- * These error are Linux extensions.
- */
-#undef TARGET_ENOMEDIUM
-#define TARGET_ENOMEDIUM       159     /* No medium found */
-#undef TARGET_EMEDIUMTYPE
-#define TARGET_EMEDIUMTYPE     160     /* Wrong medium type */
-#undef TARGET_ENOKEY
-#define TARGET_ENOKEY          161     /* Required key not available */
-#undef TARGET_EKEYEXPIRED
-#define TARGET_EKEYEXPIRED     162     /* Key has expired */
-#undef TARGET_EKEYREVOKED
-#define TARGET_EKEYREVOKED     163     /* Key has been revoked */
-#undef TARGET_EKEYREJECTED
-#define TARGET_EKEYREJECTED    164     /* Key was rejected by service */
-
-/* for robust mutexes */
-#undef TARGET_EOWNERDEAD
-#define TARGET_EOWNERDEAD      165     /* Owner died */
-#undef TARGET_ENOTRECOVERABLE
-#define TARGET_ENOTRECOVERABLE 166     /* State not recoverable */
-
-#undef TARGET_ERFKILL
-#define TARGET_ERFKILL         167
-#undef TARGET_EHWPOISON
-#define TARGET_EHWPOISON       168
-
-#undef TARGET_EDQUOT
-#define TARGET_EDQUOT          1133    /* Quota exceeded */
-
 #define UNAME_MACHINE "mips64"
 #define UNAME_MINIMUM_RELEASE "2.6.32"
 
-- 
2.31.1



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

* [PATCH v2 7/8] linux-user/syscall: Introduce errno_exists()
  2021-07-08 14:11 [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor Philippe Mathieu-Daudé
                   ` (5 preceding siblings ...)
  2021-07-08 14:11 ` [PATCH v2 6/8] linux-user/mips: " Philippe Mathieu-Daudé
@ 2021-07-08 14:11 ` Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:42   ` Richard Henderson
  2021-07-08 14:11 ` [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros Philippe Mathieu-Daudé
  7 siblings, 2 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 14:11 UTC (permalink / raw)
  To: qemu-devel
  Cc: Taylor Simpson, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 linux-user/syscall.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 4842a1987b7..56682b06cbd 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -509,6 +509,11 @@ static inline int next_free_host_timer(void)
 
 #define ERRNO_TABLE_SIZE 1200
 
+static inline bool errno_exists(int err)
+{
+    return err >= 0 && err < ERRNO_TABLE_SIZE;
+}
+
 /* target_to_host_errno_table[] is initialized from
  * host_to_target_errno_table[] in syscall_init(). */
 static uint16_t target_to_host_errno_table[ERRNO_TABLE_SIZE] = {
@@ -672,7 +677,7 @@ const char *target_strerror(int err)
         return "Successful exit from sigreturn";
     }
 
-    if ((err >= ERRNO_TABLE_SIZE) || (err < 0)) {
+    if (!errno_exists(err)) {
         return NULL;
     }
     return strerror(target_to_host_errno(err));
-- 
2.31.1



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

* [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros
  2021-07-08 14:11 [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor Philippe Mathieu-Daudé
                   ` (6 preceding siblings ...)
  2021-07-08 14:11 ` [PATCH v2 7/8] linux-user/syscall: Introduce errno_exists() Philippe Mathieu-Daudé
@ 2021-07-08 14:11 ` Philippe Mathieu-Daudé
  2021-07-08 15:30   ` Laurent Vivier
  2021-07-08 15:44   ` Richard Henderson
  7 siblings, 2 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 14:11 UTC (permalink / raw)
  To: qemu-devel
  Cc: Taylor Simpson, Richard Henderson, Laurent Vivier,
	Philippe Mathieu-Daudé

Convert the host_to_target_errno_table[] array to a switch case
to allow compiler optimizations. Extract the errnos list as to
a new includible unit, using a generic macro. Remove the code
related to target_to_host_errno_table[] initialization.

Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 linux-user/syscall.c    | 169 +++++-----------------------------------
 linux-user/errnos.c.inc | 140 +++++++++++++++++++++++++++++++++
 2 files changed, 161 insertions(+), 148 deletions(-)
 create mode 100644 linux-user/errnos.c.inc

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 56682b06cbd..8bb528d2cf7 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -507,157 +507,37 @@ static inline int next_free_host_timer(void)
 }
 #endif
 
-#define ERRNO_TABLE_SIZE 1200
-
 static inline bool errno_exists(int err)
 {
-    return err >= 0 && err < ERRNO_TABLE_SIZE;
+    switch (err) {
+#define E(X)  case X: return true;
+#include "errnos.c.inc"
+#undef E
+    default:
+        return false;
+    }
 }
 
-/* target_to_host_errno_table[] is initialized from
- * host_to_target_errno_table[] in syscall_init(). */
-static uint16_t target_to_host_errno_table[ERRNO_TABLE_SIZE] = {
-};
-
-/*
- * This list is the union of errno values overridden in asm-<arch>/errno.h
- * minus the errnos that are not actually generic to all archs.
- */
-static uint16_t host_to_target_errno_table[ERRNO_TABLE_SIZE] = {
-    [EAGAIN]            = TARGET_EAGAIN,
-    [EIDRM]             = TARGET_EIDRM,
-    [ECHRNG]            = TARGET_ECHRNG,
-    [EL2NSYNC]          = TARGET_EL2NSYNC,
-    [EL3HLT]            = TARGET_EL3HLT,
-    [EL3RST]            = TARGET_EL3RST,
-    [ELNRNG]            = TARGET_ELNRNG,
-    [EUNATCH]           = TARGET_EUNATCH,
-    [ENOCSI]            = TARGET_ENOCSI,
-    [EL2HLT]            = TARGET_EL2HLT,
-    [EDEADLK]           = TARGET_EDEADLK,
-    [ENOLCK]            = TARGET_ENOLCK,
-    [EBADE]             = TARGET_EBADE,
-    [EBADR]             = TARGET_EBADR,
-    [EXFULL]            = TARGET_EXFULL,
-    [ENOANO]            = TARGET_ENOANO,
-    [EBADRQC]           = TARGET_EBADRQC,
-    [EBADSLT]           = TARGET_EBADSLT,
-    [EBFONT]            = TARGET_EBFONT,
-    [ENOSTR]            = TARGET_ENOSTR,
-    [ENODATA]           = TARGET_ENODATA,
-    [ETIME]             = TARGET_ETIME,
-    [ENOSR]             = TARGET_ENOSR,
-    [ENONET]            = TARGET_ENONET,
-    [ENOPKG]            = TARGET_ENOPKG,
-    [EREMOTE]           = TARGET_EREMOTE,
-    [ENOLINK]           = TARGET_ENOLINK,
-    [EADV]              = TARGET_EADV,
-    [ESRMNT]            = TARGET_ESRMNT,
-    [ECOMM]             = TARGET_ECOMM,
-    [EPROTO]            = TARGET_EPROTO,
-    [EDOTDOT]           = TARGET_EDOTDOT,
-    [EMULTIHOP]         = TARGET_EMULTIHOP,
-    [EBADMSG]           = TARGET_EBADMSG,
-    [ENAMETOOLONG]      = TARGET_ENAMETOOLONG,
-    [EOVERFLOW]         = TARGET_EOVERFLOW,
-    [ENOTUNIQ]          = TARGET_ENOTUNIQ,
-    [EBADFD]            = TARGET_EBADFD,
-    [EREMCHG]           = TARGET_EREMCHG,
-    [ELIBACC]           = TARGET_ELIBACC,
-    [ELIBBAD]           = TARGET_ELIBBAD,
-    [ELIBSCN]           = TARGET_ELIBSCN,
-    [ELIBMAX]           = TARGET_ELIBMAX,
-    [ELIBEXEC]          = TARGET_ELIBEXEC,
-    [EILSEQ]            = TARGET_EILSEQ,
-    [ENOSYS]            = TARGET_ENOSYS,
-    [ELOOP]             = TARGET_ELOOP,
-    [ERESTART]          = TARGET_ERESTART,
-    [ESTRPIPE]          = TARGET_ESTRPIPE,
-    [ENOTEMPTY]         = TARGET_ENOTEMPTY,
-    [EUSERS]            = TARGET_EUSERS,
-    [ENOTSOCK]          = TARGET_ENOTSOCK,
-    [EDESTADDRREQ]      = TARGET_EDESTADDRREQ,
-    [EMSGSIZE]          = TARGET_EMSGSIZE,
-    [EPROTOTYPE]        = TARGET_EPROTOTYPE,
-    [ENOPROTOOPT]       = TARGET_ENOPROTOOPT,
-    [EPROTONOSUPPORT]   = TARGET_EPROTONOSUPPORT,
-    [ESOCKTNOSUPPORT]   = TARGET_ESOCKTNOSUPPORT,
-    [EOPNOTSUPP]        = TARGET_EOPNOTSUPP,
-    [EPFNOSUPPORT]      = TARGET_EPFNOSUPPORT,
-    [EAFNOSUPPORT]      = TARGET_EAFNOSUPPORT,
-    [EADDRINUSE]        = TARGET_EADDRINUSE,
-    [EADDRNOTAVAIL]     = TARGET_EADDRNOTAVAIL,
-    [ENETDOWN]          = TARGET_ENETDOWN,
-    [ENETUNREACH]       = TARGET_ENETUNREACH,
-    [ENETRESET]         = TARGET_ENETRESET,
-    [ECONNABORTED]      = TARGET_ECONNABORTED,
-    [ECONNRESET]        = TARGET_ECONNRESET,
-    [ENOBUFS]           = TARGET_ENOBUFS,
-    [EISCONN]           = TARGET_EISCONN,
-    [ENOTCONN]          = TARGET_ENOTCONN,
-    [EUCLEAN]           = TARGET_EUCLEAN,
-    [ENOTNAM]           = TARGET_ENOTNAM,
-    [ENAVAIL]           = TARGET_ENAVAIL,
-    [EISNAM]            = TARGET_EISNAM,
-    [EREMOTEIO]         = TARGET_EREMOTEIO,
-    [EDQUOT]            = TARGET_EDQUOT,
-    [ESHUTDOWN]         = TARGET_ESHUTDOWN,
-    [ETOOMANYREFS]      = TARGET_ETOOMANYREFS,
-    [ETIMEDOUT]         = TARGET_ETIMEDOUT,
-    [ECONNREFUSED]      = TARGET_ECONNREFUSED,
-    [EHOSTDOWN]         = TARGET_EHOSTDOWN,
-    [EHOSTUNREACH]      = TARGET_EHOSTUNREACH,
-    [EALREADY]          = TARGET_EALREADY,
-    [EINPROGRESS]       = TARGET_EINPROGRESS,
-    [ESTALE]            = TARGET_ESTALE,
-    [ECANCELED]         = TARGET_ECANCELED,
-    [ENOMEDIUM]         = TARGET_ENOMEDIUM,
-    [EMEDIUMTYPE]       = TARGET_EMEDIUMTYPE,
-#ifdef ENOKEY
-    [ENOKEY]            = TARGET_ENOKEY,
-#endif
-#ifdef EKEYEXPIRED
-    [EKEYEXPIRED]       = TARGET_EKEYEXPIRED,
-#endif
-#ifdef EKEYREVOKED
-    [EKEYREVOKED]       = TARGET_EKEYREVOKED,
-#endif
-#ifdef EKEYREJECTED
-    [EKEYREJECTED]      = TARGET_EKEYREJECTED,
-#endif
-#ifdef EOWNERDEAD
-    [EOWNERDEAD]        = TARGET_EOWNERDEAD,
-#endif
-#ifdef ENOTRECOVERABLE
-    [ENOTRECOVERABLE]   = TARGET_ENOTRECOVERABLE,
-#endif
-#ifdef ENOMSG
-    [ENOMSG]            = TARGET_ENOMSG,
-#endif
-#ifdef ERFKILL
-    [ERFKILL]           = TARGET_ERFKILL,
-#endif
-#ifdef EHWPOISON
-    [EHWPOISON]         = TARGET_EHWPOISON,
-#endif
-};
-
-static inline int host_to_target_errno(int err)
+static inline int host_to_target_errno(int host_errno)
 {
-    if (err >= 0 && err < ERRNO_TABLE_SIZE &&
-        host_to_target_errno_table[err]) {
-        return host_to_target_errno_table[err];
+    switch (host_errno) {
+#define E(X)  case X: return TARGET_##X;
+#include "errnos.c.inc"
+#undef E
+    default:
+        return host_errno;
     }
-    return err;
 }
 
-static inline int target_to_host_errno(int err)
+static inline int target_to_host_errno(int target_errno)
 {
-    if (err >= 0 && err < ERRNO_TABLE_SIZE &&
-        target_to_host_errno_table[err]) {
-        return target_to_host_errno_table[err];
+    switch (target_errno) {
+#define E(X)  case TARGET_##X: return X;
+#include "errnos.c.inc"
+#undef E
+    default:
+        return target_errno;
     }
-    return err;
 }
 
 static inline abi_long get_errno(abi_long ret)
@@ -7107,7 +6987,6 @@ void syscall_init(void)
     IOCTLEntry *ie;
     const argtype *arg_type;
     int size;
-    int i;
 
     thunk_init(STRUCT_MAX);
 
@@ -7117,12 +6996,6 @@ void syscall_init(void)
 #undef STRUCT
 #undef STRUCT_SPECIAL
 
-    /* Build target_to_host_errno_table[] table from
-     * host_to_target_errno_table[]. */
-    for (i = 0; i < ERRNO_TABLE_SIZE; i++) {
-        target_to_host_errno_table[host_to_target_errno_table[i]] = i;
-    }
-
     /* we patch the ioctl size if necessary. We rely on the fact that
        no ioctl has all the bits at '1' in the size field */
     ie = ioctl_entries;
diff --git a/linux-user/errnos.c.inc b/linux-user/errnos.c.inc
new file mode 100644
index 00000000000..807c97ca25e
--- /dev/null
+++ b/linux-user/errnos.c.inc
@@ -0,0 +1,140 @@
+/*
+ * This list is the union of errno values overridden in asm-<arch>/errno.h
+ * minus the errnos that are not actually generic to all archs.
+ *
+ * Please keep this list sorted alphabetically.
+ *
+ *  Copyright (c) 2003 Fabrice Bellard
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+E(EADDRINUSE)
+E(EADDRNOTAVAIL)
+E(EADV)
+E(EAFNOSUPPORT)
+E(EAGAIN)
+E(EALREADY)
+E(EBADE)
+E(EBADFD)
+E(EBADMSG)
+E(EBADR)
+E(EBADRQC)
+E(EBADSLT)
+E(EBFONT)
+E(ECANCELED)
+E(ECHRNG)
+E(ECOMM)
+E(ECONNABORTED)
+E(ECONNREFUSED)
+E(ECONNRESET)
+E(EDEADLK)
+E(EDESTADDRREQ)
+E(EDOTDOT)
+E(EDQUOT)
+E(EHOSTDOWN)
+E(EHOSTUNREACH)
+#ifdef EHWPOISON
+E(EHWPOISON)
+#endif
+E(EIDRM)
+E(EILSEQ)
+E(EINPROGRESS)
+E(EISCONN)
+E(EISNAM)
+#ifdef EKEYEXPIRED
+E(EKEYEXPIRED)
+#endif
+#ifdef EKEYREJECTED
+E(EKEYREJECTED)
+#endif
+#ifdef EKEYREVOKED
+E(EKEYREVOKED)
+#endif
+E(EL2HLT)
+E(EL2NSYNC)
+E(EL3HLT)
+E(EL3RST)
+E(ELIBACC)
+E(ELIBBAD)
+E(ELIBEXEC)
+E(ELIBMAX)
+E(ELIBSCN)
+E(ELNRNG)
+E(ELOOP)
+E(EMEDIUMTYPE)
+E(EMSGSIZE)
+E(EMULTIHOP)
+E(ENAMETOOLONG)
+E(ENAVAIL)
+E(ENETDOWN)
+E(ENETRESET)
+E(ENETUNREACH)
+E(ENOANO)
+E(ENOBUFS)
+E(ENOCSI)
+E(ENODATA)
+#ifdef ENOKEY
+E(ENOKEY)
+#endif
+E(ENOLCK)
+E(ENOLINK)
+E(ENOMEDIUM)
+#ifdef ENOMSG
+E(ENOMSG)
+#endif
+E(ENONET)
+E(ENOPKG)
+E(ENOPROTOOPT)
+E(ENOSR)
+E(ENOSTR)
+E(ENOSYS)
+E(ENOTCONN)
+E(ENOTEMPTY)
+E(ENOTNAM)
+#ifdef ENOTRECOVERABLE
+E(ENOTRECOVERABLE)
+#endif
+E(ENOTSOCK)
+E(ENOTUNIQ)
+E(EOPNOTSUPP)
+E(EOVERFLOW)
+#ifdef EOWNERDEAD
+E(EOWNERDEAD)
+#endif
+E(EPFNOSUPPORT)
+E(EPROTO)
+E(EPROTONOSUPPORT)
+E(EPROTOTYPE)
+E(EREMCHG)
+E(EREMOTE)
+E(EREMOTEIO)
+E(ERESTART)
+#ifdef ERKFILL
+E(ERFKILL)
+#endif
+E(ESHUTDOWN)
+E(ESOCKTNOSUPPORT)
+E(ESRMNT)
+E(ESTALE)
+E(ESTRPIPE)
+E(ETIME)
+E(ETIMEDOUT)
+E(ETOOMANYREFS)
+E(EUCLEAN)
+E(EUNATCH)
+E(EUSERS)
+E(EXFULL)
-- 
2.31.1



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

* Re: [PATCH v2 1/8] linux-user/syscall: Fix RF-kill errno (typo in ERFKILL)
  2021-07-08 14:11 ` [PATCH v2 1/8] linux-user/syscall: Fix RF-kill errno (typo in ERFKILL) Philippe Mathieu-Daudé
@ 2021-07-08 15:19   ` Laurent Vivier
  2021-07-08 15:33   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Laurent Vivier @ 2021-07-08 15:19 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Richard Henderson

Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
> Affected targets: alpha, hppa, mips/64, sparc
> 
> Fixes: fe8ed7d5794 ("linux-user: Handle ERFKILL and EHWPOISON")
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  linux-user/syscall.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 2e826206d22..4842a1987b7 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -629,7 +629,7 @@ static uint16_t host_to_target_errno_table[ERRNO_TABLE_SIZE] = {
>  #ifdef ENOMSG
>      [ENOMSG]            = TARGET_ENOMSG,
>  #endif
> -#ifdef ERKFILL
> +#ifdef ERFKILL
>      [ERFKILL]           = TARGET_ERFKILL,
>  #endif
>  #ifdef EHWPOISON
> 

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


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

* Re: [PATCH v2 2/8] linux-user/sparc: Rename target_errno.h -> target_errno_defs.h
  2021-07-08 14:11 ` [PATCH v2 2/8] linux-user/sparc: Rename target_errno.h -> target_errno_defs.h Philippe Mathieu-Daudé
@ 2021-07-08 15:20   ` Laurent Vivier
  2021-07-08 15:34   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Laurent Vivier @ 2021-07-08 15:20 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Richard Henderson

Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
> We want to have one generic target_errno.h (API to access target
> errno), and will add target errno definitions in target_errno_defs.h.
> The sparc target already have its errnos in an header, simply rename
> it.
> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  linux-user/sparc/{target_errno.h => target_errno_defs.h} | 4 ++--
>  linux-user/sparc/target_syscall.h                        | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
>  rename linux-user/sparc/{target_errno.h => target_errno_defs.h} (99%)
> 
> diff --git a/linux-user/sparc/target_errno.h b/linux-user/sparc/target_errno_defs.h
> similarity index 99%
> rename from linux-user/sparc/target_errno.h
> rename to linux-user/sparc/target_errno_defs.h
> index 9b846899cd4..e0008109867 100644
> --- a/linux-user/sparc/target_errno.h
> +++ b/linux-user/sparc/target_errno_defs.h
> @@ -1,5 +1,5 @@
> -#ifndef SPARC_TARGET_ERRNO_H
> -#define SPARC_TARGET_ERRNO_H
> +#ifndef SPARC_TARGET_ERRNO_DEFS_H
> +#define SPARC_TARGET_ERRNO_DEFS_H
>  
>  /* Target errno definitions taken from asm-sparc/errno.h */
>  #undef TARGET_EWOULDBLOCK
> diff --git a/linux-user/sparc/target_syscall.h b/linux-user/sparc/target_syscall.h
> index 15d531f3897..dad501d008c 100644
> --- a/linux-user/sparc/target_syscall.h
> +++ b/linux-user/sparc/target_syscall.h
> @@ -1,7 +1,7 @@
>  #ifndef SPARC_TARGET_SYSCALL_H
>  #define SPARC_TARGET_SYSCALL_H
>  
> -#include "target_errno.h"
> +#include "target_errno_defs.h"
>  
>  #if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
>  struct target_pt_regs {
> 

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


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

* Re: [PATCH v2 3/8] linux-user: Extract target errno to 'target_errno_defs.h'
  2021-07-08 14:11 ` [PATCH v2 3/8] linux-user: Extract target errno to 'target_errno_defs.h' Philippe Mathieu-Daudé
@ 2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:33   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Laurent Vivier @ 2021-07-08 15:25 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Richard Henderson

Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
> We want to access the target errno indepently of the rest of the
> linux-user code. Move the header containing the generic errno
> definitions ('errno_defs.h') to 'generic/target_errno_defs.h',
> create a new 'target_errno_defs.h' in each target which itself
> includes 'generic/target_errno_defs.h'.
> 
> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  linux-user/aarch64/target_errno_defs.h                   | 6 ++++++
>  linux-user/alpha/target_errno_defs.h                     | 6 ++++++
>  linux-user/arm/target_errno_defs.h                       | 6 ++++++
>  linux-user/cris/target_errno_defs.h                      | 6 ++++++
>  linux-user/{errno_defs.h => generic/target_errno_defs.h} | 4 ++--
>  linux-user/hexagon/target_errno_defs.h                   | 6 ++++++
>  linux-user/hppa/target_errno_defs.h                      | 6 ++++++
>  linux-user/i386/target_errno_defs.h                      | 6 ++++++
>  linux-user/m68k/target_errno_defs.h                      | 6 ++++++
>  linux-user/microblaze/target_errno_defs.h                | 6 ++++++
>  linux-user/mips/target_errno_defs.h                      | 6 ++++++
>  linux-user/mips64/target_errno_defs.h                    | 6 ++++++
>  linux-user/nios2/target_errno_defs.h                     | 6 ++++++
>  linux-user/openrisc/target_errno_defs.h                  | 6 ++++++
>  linux-user/ppc/target_errno_defs.h                       | 6 ++++++
>  linux-user/riscv/target_errno_defs.h                     | 6 ++++++
>  linux-user/s390x/target_errno_defs.h                     | 6 ++++++
>  linux-user/sh4/target_errno_defs.h                       | 6 ++++++
>  linux-user/sparc/target_errno_defs.h                     | 2 ++
>  linux-user/sparc/target_syscall.h                        | 2 --
>  linux-user/syscall_defs.h                                | 2 +-
>  linux-user/x86_64/target_errno_defs.h                    | 6 ++++++
>  linux-user/xtensa/target_errno_defs.h                    | 6 ++++++
>  linux-user/safe-syscall.S                                | 2 +-
>  24 files changed, 120 insertions(+), 6 deletions(-)
>  create mode 100644 linux-user/aarch64/target_errno_defs.h
>  create mode 100644 linux-user/alpha/target_errno_defs.h
>  create mode 100644 linux-user/arm/target_errno_defs.h
>  create mode 100644 linux-user/cris/target_errno_defs.h
>  rename linux-user/{errno_defs.h => generic/target_errno_defs.h} (99%)
>  create mode 100644 linux-user/hexagon/target_errno_defs.h
>  create mode 100644 linux-user/hppa/target_errno_defs.h
>  create mode 100644 linux-user/i386/target_errno_defs.h
>  create mode 100644 linux-user/m68k/target_errno_defs.h
>  create mode 100644 linux-user/microblaze/target_errno_defs.h
>  create mode 100644 linux-user/mips/target_errno_defs.h
>  create mode 100644 linux-user/mips64/target_errno_defs.h
>  create mode 100644 linux-user/nios2/target_errno_defs.h
>  create mode 100644 linux-user/openrisc/target_errno_defs.h
>  create mode 100644 linux-user/ppc/target_errno_defs.h
>  create mode 100644 linux-user/riscv/target_errno_defs.h
>  create mode 100644 linux-user/s390x/target_errno_defs.h
>  create mode 100644 linux-user/sh4/target_errno_defs.h
>  create mode 100644 linux-user/x86_64/target_errno_defs.h
>  create mode 100644 linux-user/xtensa/target_errno_defs.h
> 
> diff --git a/linux-user/aarch64/target_errno_defs.h b/linux-user/aarch64/target_errno_defs.h
> new file mode 100644
> index 00000000000..eee9762ba32
> --- /dev/null
> +++ b/linux-user/aarch64/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef AARCH64_TARGET_ERRNO_DEFS_H
> +#define AARCH64_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/alpha/target_errno_defs.h b/linux-user/alpha/target_errno_defs.h
> new file mode 100644
> index 00000000000..54770108c02
> --- /dev/null
> +++ b/linux-user/alpha/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef ALPHA_TARGET_ERRNO_DEFS_H
> +#define ALPHA_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/arm/target_errno_defs.h b/linux-user/arm/target_errno_defs.h
> new file mode 100644
> index 00000000000..448cc407662
> --- /dev/null
> +++ b/linux-user/arm/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef ARM_TARGET_ERRNO_DEFS_H
> +#define ARM_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/cris/target_errno_defs.h b/linux-user/cris/target_errno_defs.h
> new file mode 100644
> index 00000000000..02c040982df
> --- /dev/null
> +++ b/linux-user/cris/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef CRIS_TARGET_ERRNO_DEFS_H
> +#define CRIS_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/errno_defs.h b/linux-user/generic/target_errno_defs.h
> similarity index 99%
> rename from linux-user/errno_defs.h
> rename to linux-user/generic/target_errno_defs.h
> index aaf5208d62d..17d85e0b61b 100644
> --- a/linux-user/errno_defs.h
> +++ b/linux-user/generic/target_errno_defs.h
> @@ -5,8 +5,8 @@
>   * Taken from asm-generic/errno-base.h and asm-generic/errno.h
>   */
>  
> -#ifndef LINUX_USER_ERRNO_DEFS_H
> -#define LINUX_USER_ERRNO_DEFS_H
> +#ifndef GENERIC_TARGET_ERRNO_DEFS_H
> +#define GENERIC_TARGET_ERRNO_DEFS_H
>  
>  #define TARGET_EPERM            1      /* Operation not permitted */
>  #define TARGET_ENOENT           2      /* No such file or directory */
> diff --git a/linux-user/hexagon/target_errno_defs.h b/linux-user/hexagon/target_errno_defs.h
> new file mode 100644
> index 00000000000..0644ae802b4
> --- /dev/null
> +++ b/linux-user/hexagon/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef HEXAGON_TARGET_ERRNO_DEFS_H
> +#define HEXAGON_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/hppa/target_errno_defs.h b/linux-user/hppa/target_errno_defs.h
> new file mode 100644
> index 00000000000..d6e9676ce25
> --- /dev/null
> +++ b/linux-user/hppa/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef HPPA_TARGET_ERRNO_DEFS_H
> +#define HPPA_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/i386/target_errno_defs.h b/linux-user/i386/target_errno_defs.h
> new file mode 100644
> index 00000000000..d34466d583f
> --- /dev/null
> +++ b/linux-user/i386/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef I386_TARGET_ERRNO_DEFS_H
> +#define I386_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/m68k/target_errno_defs.h b/linux-user/m68k/target_errno_defs.h
> new file mode 100644
> index 00000000000..91c51b79cdc
> --- /dev/null
> +++ b/linux-user/m68k/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef M68K_TARGET_ERRNO_DEFS_H
> +#define M68K_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/microblaze/target_errno_defs.h b/linux-user/microblaze/target_errno_defs.h
> new file mode 100644
> index 00000000000..7be53eb2365
> --- /dev/null
> +++ b/linux-user/microblaze/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef MICROBLAZE_TARGET_ERRNO_DEFS_H
> +#define MICROBLAZE_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/mips/target_errno_defs.h b/linux-user/mips/target_errno_defs.h
> new file mode 100644
> index 00000000000..daef95ea703
> --- /dev/null
> +++ b/linux-user/mips/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef MIPS_TARGET_ERRNO_DEFS_H
> +#define MIPS_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/mips64/target_errno_defs.h b/linux-user/mips64/target_errno_defs.h
> new file mode 100644
> index 00000000000..82b0a704f62
> --- /dev/null
> +++ b/linux-user/mips64/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef MIPS64_TARGET_ERRNO_DEFS_H
> +#define MIPS64_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/nios2/target_errno_defs.h b/linux-user/nios2/target_errno_defs.h
> new file mode 100644
> index 00000000000..daceaf30347
> --- /dev/null
> +++ b/linux-user/nios2/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef NIOS2_TARGET_ERRNO_DEFS_H
> +#define NIOS2_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/openrisc/target_errno_defs.h b/linux-user/openrisc/target_errno_defs.h
> new file mode 100644
> index 00000000000..1d32c8798f7
> --- /dev/null
> +++ b/linux-user/openrisc/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef OR1K_TARGET_ERRNO_DEFS_H
> +#define OR1K_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/ppc/target_errno_defs.h b/linux-user/ppc/target_errno_defs.h
> new file mode 100644
> index 00000000000..01b25bb5d06
> --- /dev/null
> +++ b/linux-user/ppc/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef PPC_TARGET_ERRNO_DEFS_H
> +#define PPC_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/riscv/target_errno_defs.h b/linux-user/riscv/target_errno_defs.h
> new file mode 100644
> index 00000000000..785614ba0a5
> --- /dev/null
> +++ b/linux-user/riscv/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef RISCV_TARGET_ERRNO_DEFS_H
> +#define RISCV_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/s390x/target_errno_defs.h b/linux-user/s390x/target_errno_defs.h
> new file mode 100644
> index 00000000000..bca1c3b4a10
> --- /dev/null
> +++ b/linux-user/s390x/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef S390X_TARGET_ERRNO_DEFS_H
> +#define S390X_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/sh4/target_errno_defs.h b/linux-user/sh4/target_errno_defs.h
> new file mode 100644
> index 00000000000..de2de2d3f8d
> --- /dev/null
> +++ b/linux-user/sh4/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef SH4_TARGET_ERRNO_DEFS_H
> +#define SH4_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/sparc/target_errno_defs.h b/linux-user/sparc/target_errno_defs.h
> index e0008109867..416acbb4593 100644
> --- a/linux-user/sparc/target_errno_defs.h
> +++ b/linux-user/sparc/target_errno_defs.h
> @@ -1,6 +1,8 @@
>  #ifndef SPARC_TARGET_ERRNO_DEFS_H
>  #define SPARC_TARGET_ERRNO_DEFS_H
>  
> +#include "../generic/target_errno_defs.h"
> +
>  /* Target errno definitions taken from asm-sparc/errno.h */
>  #undef TARGET_EWOULDBLOCK
>  #define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
> diff --git a/linux-user/sparc/target_syscall.h b/linux-user/sparc/target_syscall.h
> index dad501d008c..087b39d39c4 100644
> --- a/linux-user/sparc/target_syscall.h
> +++ b/linux-user/sparc/target_syscall.h
> @@ -1,8 +1,6 @@
>  #ifndef SPARC_TARGET_SYSCALL_H
>  #define SPARC_TARGET_SYSCALL_H
>  
> -#include "target_errno_defs.h"
> -
>  #if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
>  struct target_pt_regs {
>      abi_ulong u_regs[16];
> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
> index 18b031a2f6a..a5ce487dcc3 100644
> --- a/linux-user/syscall_defs.h
> +++ b/linux-user/syscall_defs.h
> @@ -2751,7 +2751,7 @@ struct target_drm_i915_getparam {
>  
>  #include "socket.h"
>  
> -#include "errno_defs.h"
> +#include "target_errno_defs.h"
>  
>  #define FUTEX_WAIT              0
>  #define FUTEX_WAKE              1
> diff --git a/linux-user/x86_64/target_errno_defs.h b/linux-user/x86_64/target_errno_defs.h
> new file mode 100644
> index 00000000000..43b4068ba93
> --- /dev/null
> +++ b/linux-user/x86_64/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef X86_64_TARGET_ERRNO_DEFS_H
> +#define X86_64_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/xtensa/target_errno_defs.h b/linux-user/xtensa/target_errno_defs.h
> new file mode 100644
> index 00000000000..7d39e77251c
> --- /dev/null
> +++ b/linux-user/xtensa/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef XTENSA_TARGET_ERRNO_DEFS_H
> +#define XTENSA_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif
> diff --git a/linux-user/safe-syscall.S b/linux-user/safe-syscall.S
> index b5df6254aea..42ea7c40ba3 100644
> --- a/linux-user/safe-syscall.S
> +++ b/linux-user/safe-syscall.S
> @@ -11,7 +11,7 @@
>   */
>  
>  #include "hostdep.h"
> -#include "errno_defs.h"
> +#include "target_errno_defs.h"
>  
>  /* We have the correct host directory on our include path
>   * so that this will pull in the right fragment for the architecture.
> 

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


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

* Re: [PATCH v2 4/8] linux-user/alpha: Move errno definitions to 'target_errno_defs.h'
  2021-07-08 14:11 ` [PATCH v2 4/8] linux-user/alpha: Move errno definitions " Philippe Mathieu-Daudé
@ 2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:34   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Laurent Vivier @ 2021-07-08 15:25 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Richard Henderson

Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  linux-user/alpha/target_errno_defs.h | 194 +++++++++++++++++++++++++++
>  linux-user/alpha/target_syscall.h    | 194 ---------------------------
>  2 files changed, 194 insertions(+), 194 deletions(-)
> 
> diff --git a/linux-user/alpha/target_errno_defs.h b/linux-user/alpha/target_errno_defs.h
> index 54770108c02..8cc4c5fb308 100644
> --- a/linux-user/alpha/target_errno_defs.h
> +++ b/linux-user/alpha/target_errno_defs.h
> @@ -3,4 +3,198 @@
>  
>  #include "../generic/target_errno_defs.h"
>  
> +#undef TARGET_EWOULDBLOCK
> +#define TARGET_EWOULDBLOCK      TARGET_EAGAIN
> +#undef TARGET_EDEADLK
> +#define TARGET_EDEADLK          11
> +#undef TARGET_EAGAIN
> +#define TARGET_EAGAIN           35
> +#undef TARGET_EINPROGRESS
> +#define TARGET_EINPROGRESS      36
> +#undef TARGET_EALREADY
> +#define TARGET_EALREADY         37
> +#undef TARGET_ENOTSOCK
> +#define TARGET_ENOTSOCK         38
> +#undef TARGET_EDESTADDRREQ
> +#define TARGET_EDESTADDRREQ     39
> +#undef TARGET_EMSGSIZE
> +#define TARGET_EMSGSIZE         40
> +#undef TARGET_EPROTOTYPE
> +#define TARGET_EPROTOTYPE       41
> +#undef TARGET_ENOPROTOOPT
> +#define TARGET_ENOPROTOOPT      42
> +#undef TARGET_EPROTONOSUPPORT
> +#define TARGET_EPROTONOSUPPORT  43
> +#undef TARGET_ESOCKTNOSUPPORT
> +#define TARGET_ESOCKTNOSUPPORT  44
> +#undef TARGET_EOPNOTSUPP
> +#define TARGET_EOPNOTSUPP       45
> +#undef TARGET_EPFNOSUPPORT
> +#define TARGET_EPFNOSUPPORT     46
> +#undef TARGET_EAFNOSUPPORT
> +#define TARGET_EAFNOSUPPORT     47
> +#undef TARGET_EADDRINUSE
> +#define TARGET_EADDRINUSE       48
> +#undef TARGET_EADDRNOTAVAIL
> +#define TARGET_EADDRNOTAVAIL    49
> +#undef TARGET_ENETDOWN
> +#define TARGET_ENETDOWN         50
> +#undef TARGET_ENETUNREACH
> +#define TARGET_ENETUNREACH      51
> +#undef TARGET_ENETRESET
> +#define TARGET_ENETRESET        52
> +#undef TARGET_ECONNABORTED
> +#define TARGET_ECONNABORTED     53
> +#undef TARGET_ECONNRESET
> +#define TARGET_ECONNRESET       54
> +#undef TARGET_ENOBUFS
> +#define TARGET_ENOBUFS          55
> +#undef TARGET_EISCONN
> +#define TARGET_EISCONN          56
> +#undef TARGET_ENOTCONN
> +#define TARGET_ENOTCONN         57
> +#undef TARGET_ESHUTDOWN
> +#define TARGET_ESHUTDOWN        58
> +#undef TARGET_ETOOMANYREFS
> +#define TARGET_ETOOMANYREFS     59
> +#undef TARGET_ETIMEDOUT
> +#define TARGET_ETIMEDOUT        60
> +#undef TARGET_ECONNREFUSED
> +#define TARGET_ECONNREFUSED     61
> +#undef TARGET_ELOOP
> +#define TARGET_ELOOP            62
> +#undef TARGET_ENAMETOOLONG
> +#define TARGET_ENAMETOOLONG     63
> +#undef TARGET_EHOSTDOWN
> +#define TARGET_EHOSTDOWN        64
> +#undef TARGET_EHOSTUNREACH
> +#define TARGET_EHOSTUNREACH     65
> +#undef TARGET_ENOTEMPTY
> +#define TARGET_ENOTEMPTY        66
> +/* Unused                       67 */
> +#undef TARGET_EUSERS
> +#define TARGET_EUSERS           68
> +#undef TARGET_EDQUOT
> +#define TARGET_EDQUOT           69
> +#undef TARGET_ESTALE
> +#define TARGET_ESTALE           70
> +#undef TARGET_EREMOTE
> +#define TARGET_EREMOTE          71
> +/* Unused                       72-76 */
> +#undef TARGET_ENOLCK
> +#define TARGET_ENOLCK           77
> +#undef TARGET_ENOSYS
> +#define TARGET_ENOSYS           78
> +/* Unused                       79 */
> +#undef TARGET_ENOMSG
> +#define TARGET_ENOMSG           80
> +#undef TARGET_EIDRM
> +#define TARGET_EIDRM            81
> +#undef TARGET_ENOSR
> +#define TARGET_ENOSR            82
> +#undef TARGET_ETIME
> +#define TARGET_ETIME            83
> +#undef TARGET_EBADMSG
> +#define TARGET_EBADMSG          84
> +#undef TARGET_EPROTO
> +#define TARGET_EPROTO           85
> +#undef TARGET_ENODATA
> +#define TARGET_ENODATA          86
> +#undef TARGET_ENOSTR
> +#define TARGET_ENOSTR           87
> +#undef TARGET_ECHRNG
> +#define TARGET_ECHRNG           88
> +#undef TARGET_EL2NSYNC
> +#define TARGET_EL2NSYNC         89
> +#undef TARGET_EL3HLT
> +#define TARGET_EL3HLT           90
> +#undef TARGET_EL3RST
> +#define TARGET_EL3RST           91
> +#undef TARGET_ENOPKG
> +#define TARGET_ENOPKG           92
> +#undef TARGET_ELNRNG
> +#define TARGET_ELNRNG           93
> +#undef TARGET_EUNATCH
> +#define TARGET_EUNATCH          94
> +#undef TARGET_ENOCSI
> +#define TARGET_ENOCSI           95
> +#undef TARGET_EL2HLT
> +#define TARGET_EL2HLT           96
> +#undef TARGET_EBADE
> +#define TARGET_EBADE            97
> +#undef TARGET_EBADR
> +#define TARGET_EBADR            98
> +#undef TARGET_EXFULL
> +#define TARGET_EXFULL           99
> +#undef TARGET_ENOANO
> +#define TARGET_ENOANO           100
> +#undef TARGET_EBADRQC
> +#define TARGET_EBADRQC          101
> +#undef TARGET_EBADSLT
> +#define TARGET_EBADSLT          102
> +/* Unused                       103 */
> +#undef TARGET_EBFONT
> +#define TARGET_EBFONT           104
> +#undef TARGET_ENONET
> +#define TARGET_ENONET           105
> +#undef TARGET_ENOLINK
> +#define TARGET_ENOLINK          106
> +#undef TARGET_EADV
> +#define TARGET_EADV             107
> +#undef TARGET_ESRMNT
> +#define TARGET_ESRMNT           108
> +#undef TARGET_ECOMM
> +#define TARGET_ECOMM            109
> +#undef TARGET_EMULTIHOP
> +#define TARGET_EMULTIHOP        110
> +#undef TARGET_EDOTDOT
> +#define TARGET_EDOTDOT          111
> +#undef TARGET_EOVERFLOW
> +#define TARGET_EOVERFLOW        112
> +#undef TARGET_ENOTUNIQ
> +#define TARGET_ENOTUNIQ         113
> +#undef TARGET_EBADFD
> +#define TARGET_EBADFD           114
> +#undef TARGET_EREMCHG
> +#define TARGET_EREMCHG          115
> +#undef TARGET_EILSEQ
> +#define TARGET_EILSEQ           116
> +/* Same as default              117-121 */
> +#undef TARGET_ELIBACC
> +#define TARGET_ELIBACC          122
> +#undef TARGET_ELIBBAD
> +#define TARGET_ELIBBAD          123
> +#undef TARGET_ELIBSCN
> +#define TARGET_ELIBSCN          124
> +#undef TARGET_ELIBMAX
> +#define TARGET_ELIBMAX          125
> +#undef TARGET_ELIBEXEC
> +#define TARGET_ELIBEXEC         126
> +#undef TARGET_ERESTART
> +#define TARGET_ERESTART         127
> +#undef TARGET_ESTRPIPE
> +#define TARGET_ESTRPIPE         128
> +#undef TARGET_ENOMEDIUM
> +#define TARGET_ENOMEDIUM        129
> +#undef TARGET_EMEDIUMTYPE
> +#define TARGET_EMEDIUMTYPE      130
> +#undef TARGET_ECANCELED
> +#define TARGET_ECANCELED        131
> +#undef TARGET_ENOKEY
> +#define TARGET_ENOKEY           132
> +#undef TARGET_EKEYEXPIRED
> +#define TARGET_EKEYEXPIRED      133
> +#undef TARGET_EKEYREVOKED
> +#define TARGET_EKEYREVOKED      134
> +#undef TARGET_EKEYREJECTED
> +#define TARGET_EKEYREJECTED     135
> +#undef TARGET_EOWNERDEAD
> +#define TARGET_EOWNERDEAD       136
> +#undef TARGET_ENOTRECOVERABLE
> +#define TARGET_ENOTRECOVERABLE  137
> +#undef TARGET_ERFKILL
> +#define TARGET_ERFKILL          138
> +#undef TARGET_EHWPOISON
> +#define TARGET_EHWPOISON        139
> +
>  #endif
> diff --git a/linux-user/alpha/target_syscall.h b/linux-user/alpha/target_syscall.h
> index 13a71f35eaf..03091bf0a82 100644
> --- a/linux-user/alpha/target_syscall.h
> +++ b/linux-user/alpha/target_syscall.h
> @@ -44,200 +44,6 @@ struct target_pt_regs {
>  #define UNAME_MACHINE "alpha"
>  #define UNAME_MINIMUM_RELEASE "2.6.32"
>  
> -#undef TARGET_EWOULDBLOCK
> -#define TARGET_EWOULDBLOCK      TARGET_EAGAIN /* Operation would block */
> -#undef TARGET_EDEADLK
> -#define TARGET_EDEADLK          11
> -#undef TARGET_EAGAIN
> -#define TARGET_EAGAIN           35
> -#undef TARGET_EINPROGRESS
> -#define TARGET_EINPROGRESS      36
> -#undef TARGET_EALREADY
> -#define TARGET_EALREADY         37
> -#undef TARGET_ENOTSOCK
> -#define TARGET_ENOTSOCK         38
> -#undef TARGET_EDESTADDRREQ
> -#define TARGET_EDESTADDRREQ     39
> -#undef TARGET_EMSGSIZE
> -#define TARGET_EMSGSIZE         40
> -#undef TARGET_EPROTOTYPE
> -#define TARGET_EPROTOTYPE       41
> -#undef TARGET_ENOPROTOOPT
> -#define TARGET_ENOPROTOOPT      42
> -#undef TARGET_EPROTONOSUPPORT
> -#define TARGET_EPROTONOSUPPORT  43
> -#undef TARGET_ESOCKTNOSUPPORT
> -#define TARGET_ESOCKTNOSUPPORT  44
> -#undef TARGET_EOPNOTSUPP
> -#define TARGET_EOPNOTSUPP       45
> -#undef TARGET_EPFNOSUPPORT
> -#define TARGET_EPFNOSUPPORT     46
> -#undef TARGET_EAFNOSUPPORT
> -#define TARGET_EAFNOSUPPORT     47
> -#undef TARGET_EADDRINUSE
> -#define TARGET_EADDRINUSE       48
> -#undef TARGET_EADDRNOTAVAIL
> -#define TARGET_EADDRNOTAVAIL    49
> -#undef TARGET_ENETDOWN
> -#define TARGET_ENETDOWN         50
> -#undef TARGET_ENETUNREACH
> -#define TARGET_ENETUNREACH      51
> -#undef TARGET_ENETRESET
> -#define TARGET_ENETRESET        52
> -#undef TARGET_ECONNABORTED
> -#define TARGET_ECONNABORTED     53
> -#undef TARGET_ECONNRESET
> -#define TARGET_ECONNRESET       54
> -#undef TARGET_ENOBUFS
> -#define TARGET_ENOBUFS          55
> -#undef TARGET_EISCONN
> -#define TARGET_EISCONN          56
> -#undef TARGET_ENOTCONN
> -#define TARGET_ENOTCONN         57
> -#undef TARGET_ESHUTDOWN
> -#define TARGET_ESHUTDOWN        58
> -#undef TARGET_ETOOMANYREFS
> -#define TARGET_ETOOMANYREFS     59
> -#undef TARGET_ETIMEDOUT
> -#define TARGET_ETIMEDOUT        60
> -#undef TARGET_ECONNREFUSED
> -#define TARGET_ECONNREFUSED     61
> -#undef TARGET_ELOOP
> -#define TARGET_ELOOP            62
> -#undef TARGET_ENAMETOOLONG
> -#define TARGET_ENAMETOOLONG     63
> -#undef TARGET_EHOSTDOWN
> -#define TARGET_EHOSTDOWN        64
> -#undef TARGET_EHOSTUNREACH
> -#define TARGET_EHOSTUNREACH     65
> -#undef TARGET_ENOTEMPTY
> -#define TARGET_ENOTEMPTY        66
> -/* Unused                       67 */
> -#undef TARGET_EUSERS
> -#define TARGET_EUSERS           68
> -#undef TARGET_EDQUOT
> -#define TARGET_EDQUOT           69
> -#undef TARGET_ESTALE
> -#define TARGET_ESTALE           70
> -#undef TARGET_EREMOTE
> -#define TARGET_EREMOTE          71
> -/* Unused                       72-76 */
> -#undef TARGET_ENOLCK
> -#define TARGET_ENOLCK           77
> -#undef TARGET_ENOSYS
> -#define TARGET_ENOSYS           78
> -/* Unused                       79 */
> -#undef TARGET_ENOMSG
> -#define TARGET_ENOMSG           80
> -#undef TARGET_EIDRM
> -#define TARGET_EIDRM            81
> -#undef TARGET_ENOSR
> -#define TARGET_ENOSR            82
> -#undef TARGET_ETIME
> -#define TARGET_ETIME            83
> -#undef TARGET_EBADMSG
> -#define TARGET_EBADMSG          84
> -#undef TARGET_EPROTO
> -#define TARGET_EPROTO           85
> -#undef TARGET_ENODATA
> -#define TARGET_ENODATA          86
> -#undef TARGET_ENOSTR
> -#define TARGET_ENOSTR           87
> -#undef TARGET_ECHRNG
> -#define TARGET_ECHRNG           88
> -#undef TARGET_EL2NSYNC
> -#define TARGET_EL2NSYNC         89
> -#undef TARGET_EL3HLT
> -#define TARGET_EL3HLT           90
> -#undef TARGET_EL3RST
> -#define TARGET_EL3RST           91
> -#undef TARGET_ENOPKG
> -#define TARGET_ENOPKG           92
> -#undef TARGET_ELNRNG
> -#define TARGET_ELNRNG           93
> -#undef TARGET_EUNATCH
> -#define TARGET_EUNATCH          94
> -#undef TARGET_ENOCSI
> -#define TARGET_ENOCSI           95
> -#undef TARGET_EL2HLT
> -#define TARGET_EL2HLT           96
> -#undef TARGET_EBADE
> -#define TARGET_EBADE            97
> -#undef TARGET_EBADR
> -#define TARGET_EBADR            98
> -#undef TARGET_EXFULL
> -#define TARGET_EXFULL           99
> -#undef TARGET_ENOANO
> -#define TARGET_ENOANO           100
> -#undef TARGET_EBADRQC
> -#define TARGET_EBADRQC          101
> -#undef TARGET_EBADSLT
> -#define TARGET_EBADSLT          102
> -/* Unused                       103 */
> -#undef TARGET_EBFONT
> -#define TARGET_EBFONT           104
> -#undef TARGET_ENONET
> -#define TARGET_ENONET           105
> -#undef TARGET_ENOLINK
> -#define TARGET_ENOLINK          106
> -#undef TARGET_EADV
> -#define TARGET_EADV             107
> -#undef TARGET_ESRMNT
> -#define TARGET_ESRMNT           108
> -#undef TARGET_ECOMM
> -#define TARGET_ECOMM            109
> -#undef TARGET_EMULTIHOP
> -#define TARGET_EMULTIHOP        110
> -#undef TARGET_EDOTDOT
> -#define TARGET_EDOTDOT          111
> -#undef TARGET_EOVERFLOW
> -#define TARGET_EOVERFLOW        112
> -#undef TARGET_ENOTUNIQ
> -#define TARGET_ENOTUNIQ         113
> -#undef TARGET_EBADFD
> -#define TARGET_EBADFD           114
> -#undef TARGET_EREMCHG
> -#define TARGET_EREMCHG          115
> -#undef TARGET_EILSEQ
> -#define TARGET_EILSEQ           116
> -/* Same as default              117-121 */
> -#undef TARGET_ELIBACC
> -#define TARGET_ELIBACC          122
> -#undef TARGET_ELIBBAD
> -#define TARGET_ELIBBAD          123
> -#undef TARGET_ELIBSCN
> -#define TARGET_ELIBSCN          124
> -#undef TARGET_ELIBMAX
> -#define TARGET_ELIBMAX          125
> -#undef TARGET_ELIBEXEC
> -#define TARGET_ELIBEXEC         126
> -#undef TARGET_ERESTART
> -#define TARGET_ERESTART         127
> -#undef TARGET_ESTRPIPE
> -#define TARGET_ESTRPIPE         128
> -#undef TARGET_ENOMEDIUM
> -#define TARGET_ENOMEDIUM        129
> -#undef TARGET_EMEDIUMTYPE
> -#define TARGET_EMEDIUMTYPE      130
> -#undef TARGET_ECANCELED
> -#define TARGET_ECANCELED        131
> -#undef TARGET_ENOKEY
> -#define TARGET_ENOKEY           132
> -#undef TARGET_EKEYEXPIRED
> -#define TARGET_EKEYEXPIRED      133
> -#undef TARGET_EKEYREVOKED
> -#define TARGET_EKEYREVOKED      134
> -#undef TARGET_EKEYREJECTED
> -#define TARGET_EKEYREJECTED     135
> -#undef TARGET_EOWNERDEAD
> -#define TARGET_EOWNERDEAD       136
> -#undef TARGET_ENOTRECOVERABLE
> -#define TARGET_ENOTRECOVERABLE  137
> -#undef TARGET_ERFKILL
> -#define TARGET_ERFKILL          138
> -#undef TARGET_EHWPOISON
> -#define TARGET_EHWPOISON        139
> -
>  // For sys_osf_getsysinfo
>  #define TARGET_GSI_UACPROC		8
>  #define TARGET_GSI_IEEE_FP_CONTROL	45
> 

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


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

* Re: [PATCH v2 5/8] linux-user/hppa: Move errno definitions to 'target_errno_defs.h'
  2021-07-08 14:11 ` [PATCH v2 5/8] linux-user/hppa: " Philippe Mathieu-Daudé
@ 2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:35   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Laurent Vivier @ 2021-07-08 15:25 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Richard Henderson

Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  linux-user/hppa/target_errno_defs.h | 210 ++++++++++++++++++++++++++++
>  linux-user/hppa/target_syscall.h    | 210 ----------------------------
>  2 files changed, 210 insertions(+), 210 deletions(-)
> 
> diff --git a/linux-user/hppa/target_errno_defs.h b/linux-user/hppa/target_errno_defs.h
> index d6e9676ce25..17ece226c8d 100644
> --- a/linux-user/hppa/target_errno_defs.h
> +++ b/linux-user/hppa/target_errno_defs.h
> @@ -3,4 +3,214 @@
>  
>  #include "../generic/target_errno_defs.h"
>  
> +#undef TARGET_EWOULDBLOCK
> +#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
> +#undef  TARGET_ENOMSG
> +#define TARGET_ENOMSG          35
> +#undef  TARGET_EIDRM
> +#define TARGET_EIDRM           36
> +#undef  TARGET_ECHRNG
> +#define TARGET_ECHRNG          37
> +#undef  TARGET_EL2NSYNC
> +#define TARGET_EL2NSYNC        38
> +#undef  TARGET_EL3HLT
> +#define TARGET_EL3HLT          39
> +#undef  TARGET_EL3RST
> +#define TARGET_EL3RST          40
> +#undef  TARGET_ELNRNG
> +#define TARGET_ELNRNG          41
> +#undef  TARGET_EUNATCH
> +#define TARGET_EUNATCH         42
> +#undef  TARGET_ENOCSI
> +#define TARGET_ENOCSI          43
> +#undef  TARGET_EL2HLT
> +#define TARGET_EL2HLT          44
> +#undef  TARGET_EDEADLK
> +#define TARGET_EDEADLK         45
> +#undef  TARGET_ENOLCK
> +#define TARGET_ENOLCK          46
> +#undef  TARGET_EILSEQ
> +#define TARGET_EILSEQ          47
> +
> +#undef  TARGET_ENONET
> +#define TARGET_ENONET          50
> +#undef  TARGET_ENODATA
> +#define TARGET_ENODATA         51
> +#undef  TARGET_ETIME
> +#define TARGET_ETIME           52
> +#undef  TARGET_ENOSR
> +#define TARGET_ENOSR           53
> +#undef  TARGET_ENOSTR
> +#define TARGET_ENOSTR          54
> +#undef  TARGET_ENOPKG
> +#define TARGET_ENOPKG          55
> +
> +#undef  TARGET_ENOLINK
> +#define TARGET_ENOLINK         57
> +#undef  TARGET_EADV
> +#define TARGET_EADV            58
> +#undef  TARGET_ESRMNT
> +#define TARGET_ESRMNT          59
> +#undef  TARGET_ECOMM
> +#define TARGET_ECOMM           60
> +#undef  TARGET_EPROTO
> +#define TARGET_EPROTO          61
> +
> +#undef  TARGET_EMULTIHOP
> +#define TARGET_EMULTIHOP       64
> +
> +#undef  TARGET_EDOTDOT
> +#define TARGET_EDOTDOT         66
> +#undef  TARGET_EBADMSG
> +#define TARGET_EBADMSG         67
> +#undef  TARGET_EUSERS
> +#define TARGET_EUSERS          68
> +#undef  TARGET_EDQUOT
> +#define TARGET_EDQUOT          69
> +#undef  TARGET_ESTALE
> +#define TARGET_ESTALE          70
> +#undef  TARGET_EREMOTE
> +#define TARGET_EREMOTE         71
> +#undef  TARGET_EOVERFLOW
> +#define TARGET_EOVERFLOW       72
> +
> +#undef  TARGET_EBADE
> +#define TARGET_EBADE           160
> +#undef  TARGET_EBADR
> +#define TARGET_EBADR           161
> +#undef  TARGET_EXFULL
> +#define TARGET_EXFULL          162
> +#undef  TARGET_ENOANO
> +#define TARGET_ENOANO          163
> +#undef  TARGET_EBADRQC
> +#define TARGET_EBADRQC         164
> +#undef  TARGET_EBADSLT
> +#define TARGET_EBADSLT         165
> +#undef  TARGET_EBFONT
> +#define TARGET_EBFONT          166
> +#undef  TARGET_ENOTUNIQ
> +#define TARGET_ENOTUNIQ        167
> +#undef  TARGET_EBADFD
> +#define TARGET_EBADFD          168
> +#undef  TARGET_EREMCHG
> +#define TARGET_EREMCHG         169
> +#undef  TARGET_ELIBACC
> +#define TARGET_ELIBACC         170
> +#undef  TARGET_ELIBBAD
> +#define TARGET_ELIBBAD         171
> +#undef  TARGET_ELIBSCN
> +#define TARGET_ELIBSCN         172
> +#undef  TARGET_ELIBMAX
> +#define TARGET_ELIBMAX         173
> +#undef  TARGET_ELIBEXEC
> +#define TARGET_ELIBEXEC        174
> +#undef  TARGET_ERESTART
> +#define TARGET_ERESTART        175
> +#undef  TARGET_ESTRPIPE
> +#define TARGET_ESTRPIPE        176
> +#undef  TARGET_EUCLEAN
> +#define TARGET_EUCLEAN         177
> +#undef  TARGET_ENOTNAM
> +#define TARGET_ENOTNAM         178
> +#undef  TARGET_ENAVAIL
> +#define TARGET_ENAVAIL         179
> +#undef  TARGET_EISNAM
> +#define TARGET_EISNAM          180
> +#undef  TARGET_EREMOTEIO
> +#define TARGET_EREMOTEIO       181
> +#undef  TARGET_ENOMEDIUM
> +#define TARGET_ENOMEDIUM       182
> +#undef  TARGET_EMEDIUMTYPE
> +#define TARGET_EMEDIUMTYPE     183
> +#undef  TARGET_ENOKEY
> +#define TARGET_ENOKEY          184
> +#undef  TARGET_EKEYEXPIRED
> +#define TARGET_EKEYEXPIRED     185
> +#undef  TARGET_EKEYREVOKED
> +#define TARGET_EKEYREVOKED     186
> +#undef  TARGET_EKEYREJECTED
> +#define TARGET_EKEYREJECTED    187
> +
> +/* Never used in linux.  */
> +/* #define TARGET_ENOSYM          215 */
> +#undef  TARGET_ENOTSOCK
> +#define TARGET_ENOTSOCK        216
> +#undef  TARGET_EDESTADDRREQ
> +#define TARGET_EDESTADDRREQ    217
> +#undef  TARGET_EMSGSIZE
> +#define TARGET_EMSGSIZE        218
> +#undef  TARGET_EPROTOTYPE
> +#define TARGET_EPROTOTYPE      219
> +#undef  TARGET_ENOPROTOOPT
> +#define TARGET_ENOPROTOOPT     220
> +#undef  TARGET_EPROTONOSUPPORT
> +#define TARGET_EPROTONOSUPPORT 221
> +#undef  TARGET_ESOCKTNOSUPPORT
> +#define TARGET_ESOCKTNOSUPPORT 222
> +#undef  TARGET_EOPNOTSUPP
> +#define TARGET_EOPNOTSUPP      223
> +#undef  TARGET_EPFNOSUPPORT
> +#define TARGET_EPFNOSUPPORT    224
> +#undef  TARGET_EAFNOSUPPORT
> +#define TARGET_EAFNOSUPPORT    225
> +#undef  TARGET_EADDRINUSE
> +#define TARGET_EADDRINUSE      226
> +#undef  TARGET_EADDRNOTAVAIL
> +#define TARGET_EADDRNOTAVAIL   227
> +#undef  TARGET_ENETDOWN
> +#define TARGET_ENETDOWN        228
> +#undef  TARGET_ENETUNREACH
> +#define TARGET_ENETUNREACH     229
> +#undef  TARGET_ENETRESET
> +#define TARGET_ENETRESET       230
> +#undef  TARGET_ECONNABORTED
> +#define TARGET_ECONNABORTED    231
> +#undef  TARGET_ECONNRESET
> +#define TARGET_ECONNRESET      232
> +#undef  TARGET_ENOBUFS
> +#define TARGET_ENOBUFS         233
> +#undef  TARGET_EISCONN
> +#define TARGET_EISCONN         234
> +#undef  TARGET_ENOTCONN
> +#define TARGET_ENOTCONN        235
> +#undef  TARGET_ESHUTDOWN
> +#define TARGET_ESHUTDOWN       236
> +#undef  TARGET_ETOOMANYREFS
> +#define TARGET_ETOOMANYREFS    237
> +#undef  TARGET_ETIMEDOUT
> +#define TARGET_ETIMEDOUT       238
> +#undef  TARGET_ECONNREFUSED
> +#define TARGET_ECONNREFUSED    239
> +#define TARGET_EREMOTERELEASE  240
> +#undef  TARGET_EHOSTDOWN
> +#define TARGET_EHOSTDOWN       241
> +#undef  TARGET_EHOSTUNREACH
> +#define TARGET_EHOSTUNREACH    242
> +
> +#undef  TARGET_EALREADY
> +#define TARGET_EALREADY        244
> +#undef  TARGET_EINPROGRESS
> +#define TARGET_EINPROGRESS     245
> +#undef  TARGET_ENOTEMPTY
> +#define TARGET_ENOTEMPTY       247
> +#undef  TARGET_ENAMETOOLONG
> +#define TARGET_ENAMETOOLONG    248
> +#undef  TARGET_ELOOP
> +#define TARGET_ELOOP           249
> +#undef  TARGET_ENOSYS
> +#define TARGET_ENOSYS          251
> +
> +#undef  TARGET_ECANCELED
> +#define TARGET_ECANCELED       253
> +
> +#undef  TARGET_EOWNERDEAD
> +#define TARGET_EOWNERDEAD      254
> +#undef  TARGET_ENOTRECOVERABLE
> +#define TARGET_ENOTRECOVERABLE 255
> +
> +#undef  TARGET_ERFKILL
> +#define TARGET_ERFKILL         256
> +#undef  TARGET_EHWPOISON
> +#define TARGET_EHWPOISON       257
> +
>  #endif
> diff --git a/linux-user/hppa/target_syscall.h b/linux-user/hppa/target_syscall.h
> index 97a095656d8..0018bcb5c4d 100644
> --- a/linux-user/hppa/target_syscall.h
> +++ b/linux-user/hppa/target_syscall.h
> @@ -27,214 +27,4 @@ struct target_pt_regs {
>  #define TARGET_MCL_FUTURE  2
>  #define TARGET_MCL_ONFAULT 4
>  
> -#undef  TARGET_EWOULDBLOCK
> -#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
> -#undef  TARGET_ENOMSG
> -#define TARGET_ENOMSG          35
> -#undef  TARGET_EIDRM
> -#define TARGET_EIDRM           36
> -#undef  TARGET_ECHRNG
> -#define TARGET_ECHRNG          37
> -#undef  TARGET_EL2NSYNC
> -#define TARGET_EL2NSYNC        38
> -#undef  TARGET_EL3HLT
> -#define TARGET_EL3HLT          39
> -#undef  TARGET_EL3RST
> -#define TARGET_EL3RST          40
> -#undef  TARGET_ELNRNG
> -#define TARGET_ELNRNG          41
> -#undef  TARGET_EUNATCH
> -#define TARGET_EUNATCH         42
> -#undef  TARGET_ENOCSI
> -#define TARGET_ENOCSI          43
> -#undef  TARGET_EL2HLT
> -#define TARGET_EL2HLT          44
> -#undef  TARGET_EDEADLK
> -#define TARGET_EDEADLK         45
> -#undef  TARGET_ENOLCK
> -#define TARGET_ENOLCK          46
> -#undef  TARGET_EILSEQ
> -#define TARGET_EILSEQ          47
> -
> -#undef  TARGET_ENONET
> -#define TARGET_ENONET          50
> -#undef  TARGET_ENODATA
> -#define TARGET_ENODATA         51
> -#undef  TARGET_ETIME
> -#define TARGET_ETIME           52
> -#undef  TARGET_ENOSR
> -#define TARGET_ENOSR           53
> -#undef  TARGET_ENOSTR
> -#define TARGET_ENOSTR          54
> -#undef  TARGET_ENOPKG
> -#define TARGET_ENOPKG          55
> -
> -#undef  TARGET_ENOLINK
> -#define TARGET_ENOLINK         57
> -#undef  TARGET_EADV
> -#define TARGET_EADV            58
> -#undef  TARGET_ESRMNT
> -#define TARGET_ESRMNT          59
> -#undef  TARGET_ECOMM
> -#define TARGET_ECOMM           60
> -#undef  TARGET_EPROTO
> -#define TARGET_EPROTO          61
> -
> -#undef  TARGET_EMULTIHOP
> -#define TARGET_EMULTIHOP       64
> -
> -#undef  TARGET_EDOTDOT
> -#define TARGET_EDOTDOT         66
> -#undef  TARGET_EBADMSG
> -#define TARGET_EBADMSG         67
> -#undef  TARGET_EUSERS
> -#define TARGET_EUSERS          68
> -#undef  TARGET_EDQUOT
> -#define TARGET_EDQUOT          69
> -#undef  TARGET_ESTALE
> -#define TARGET_ESTALE          70
> -#undef  TARGET_EREMOTE
> -#define TARGET_EREMOTE         71
> -#undef  TARGET_EOVERFLOW
> -#define TARGET_EOVERFLOW       72
> -
> -#undef  TARGET_EBADE
> -#define TARGET_EBADE           160
> -#undef  TARGET_EBADR
> -#define TARGET_EBADR           161
> -#undef  TARGET_EXFULL
> -#define TARGET_EXFULL          162
> -#undef  TARGET_ENOANO
> -#define TARGET_ENOANO          163
> -#undef  TARGET_EBADRQC
> -#define TARGET_EBADRQC         164
> -#undef  TARGET_EBADSLT
> -#define TARGET_EBADSLT         165
> -#undef  TARGET_EBFONT
> -#define TARGET_EBFONT          166
> -#undef  TARGET_ENOTUNIQ
> -#define TARGET_ENOTUNIQ        167
> -#undef  TARGET_EBADFD
> -#define TARGET_EBADFD          168
> -#undef  TARGET_EREMCHG
> -#define TARGET_EREMCHG         169
> -#undef  TARGET_ELIBACC
> -#define TARGET_ELIBACC         170
> -#undef  TARGET_ELIBBAD
> -#define TARGET_ELIBBAD         171
> -#undef  TARGET_ELIBSCN
> -#define TARGET_ELIBSCN         172
> -#undef  TARGET_ELIBMAX
> -#define TARGET_ELIBMAX         173
> -#undef  TARGET_ELIBEXEC
> -#define TARGET_ELIBEXEC        174
> -#undef  TARGET_ERESTART
> -#define TARGET_ERESTART        175
> -#undef  TARGET_ESTRPIPE
> -#define TARGET_ESTRPIPE        176
> -#undef  TARGET_EUCLEAN
> -#define TARGET_EUCLEAN         177
> -#undef  TARGET_ENOTNAM
> -#define TARGET_ENOTNAM         178
> -#undef  TARGET_ENAVAIL
> -#define TARGET_ENAVAIL         179
> -#undef  TARGET_EISNAM
> -#define TARGET_EISNAM          180
> -#undef  TARGET_EREMOTEIO
> -#define TARGET_EREMOTEIO       181
> -#undef  TARGET_ENOMEDIUM
> -#define TARGET_ENOMEDIUM       182
> -#undef  TARGET_EMEDIUMTYPE
> -#define TARGET_EMEDIUMTYPE     183
> -#undef  TARGET_ENOKEY
> -#define TARGET_ENOKEY          184
> -#undef  TARGET_EKEYEXPIRED
> -#define TARGET_EKEYEXPIRED     185
> -#undef  TARGET_EKEYREVOKED
> -#define TARGET_EKEYREVOKED     186
> -#undef  TARGET_EKEYREJECTED
> -#define TARGET_EKEYREJECTED    187
> -
> -/* Never used in linux.  */
> -/* #define TARGET_ENOSYM          215 */
> -#undef  TARGET_ENOTSOCK
> -#define TARGET_ENOTSOCK        216
> -#undef  TARGET_EDESTADDRREQ
> -#define TARGET_EDESTADDRREQ    217
> -#undef  TARGET_EMSGSIZE
> -#define TARGET_EMSGSIZE        218
> -#undef  TARGET_EPROTOTYPE
> -#define TARGET_EPROTOTYPE      219
> -#undef  TARGET_ENOPROTOOPT
> -#define TARGET_ENOPROTOOPT     220
> -#undef  TARGET_EPROTONOSUPPORT
> -#define TARGET_EPROTONOSUPPORT 221
> -#undef  TARGET_ESOCKTNOSUPPORT
> -#define TARGET_ESOCKTNOSUPPORT 222
> -#undef  TARGET_EOPNOTSUPP
> -#define TARGET_EOPNOTSUPP      223
> -#undef  TARGET_EPFNOSUPPORT
> -#define TARGET_EPFNOSUPPORT    224
> -#undef  TARGET_EAFNOSUPPORT
> -#define TARGET_EAFNOSUPPORT    225
> -#undef  TARGET_EADDRINUSE
> -#define TARGET_EADDRINUSE      226
> -#undef  TARGET_EADDRNOTAVAIL
> -#define TARGET_EADDRNOTAVAIL   227
> -#undef  TARGET_ENETDOWN
> -#define TARGET_ENETDOWN        228
> -#undef  TARGET_ENETUNREACH
> -#define TARGET_ENETUNREACH     229
> -#undef  TARGET_ENETRESET
> -#define TARGET_ENETRESET       230
> -#undef  TARGET_ECONNABORTED
> -#define TARGET_ECONNABORTED    231
> -#undef  TARGET_ECONNRESET
> -#define TARGET_ECONNRESET      232
> -#undef  TARGET_ENOBUFS
> -#define TARGET_ENOBUFS         233
> -#undef  TARGET_EISCONN
> -#define TARGET_EISCONN         234
> -#undef  TARGET_ENOTCONN
> -#define TARGET_ENOTCONN        235
> -#undef  TARGET_ESHUTDOWN
> -#define TARGET_ESHUTDOWN       236
> -#undef  TARGET_ETOOMANYREFS
> -#define TARGET_ETOOMANYREFS    237
> -#undef  TARGET_ETIMEDOUT
> -#define TARGET_ETIMEDOUT       238
> -#undef  TARGET_ECONNREFUSED
> -#define TARGET_ECONNREFUSED    239
> -#define TARGET_EREMOTERELEASE  240
> -#undef  TARGET_EHOSTDOWN
> -#define TARGET_EHOSTDOWN       241
> -#undef  TARGET_EHOSTUNREACH
> -#define TARGET_EHOSTUNREACH    242
> -
> -#undef  TARGET_EALREADY
> -#define TARGET_EALREADY        244
> -#undef  TARGET_EINPROGRESS
> -#define TARGET_EINPROGRESS     245
> -#undef  TARGET_ENOTEMPTY
> -#define TARGET_ENOTEMPTY       247
> -#undef  TARGET_ENAMETOOLONG
> -#define TARGET_ENAMETOOLONG    248
> -#undef  TARGET_ELOOP
> -#define TARGET_ELOOP           249
> -#undef  TARGET_ENOSYS
> -#define TARGET_ENOSYS          251
> -
> -#undef  TARGET_ECANCELED
> -#define TARGET_ECANCELED       253
> -
> -#undef  TARGET_EOWNERDEAD
> -#define TARGET_EOWNERDEAD      254
> -#undef  TARGET_ENOTRECOVERABLE
> -#define TARGET_ENOTRECOVERABLE 255
> -
> -#undef  TARGET_ERFKILL
> -#define TARGET_ERFKILL         256
> -#undef  TARGET_EHWPOISON
> -#define TARGET_EHWPOISON       257
> -
>  #endif /* HPPA_TARGET_SYSCALL_H */
> 

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


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

* Re: [PATCH v2 6/8] linux-user/mips: Move errno definitions to 'target_errno_defs.h'
  2021-07-08 14:11 ` [PATCH v2 6/8] linux-user/mips: " Philippe Mathieu-Daudé
@ 2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:38   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Laurent Vivier @ 2021-07-08 15:25 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Richard Henderson

Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  linux-user/mips/target_errno_defs.h   | 211 ++++++++++++++++++++++++++
>  linux-user/mips/target_syscall.h      | 211 --------------------------
>  linux-user/mips64/target_errno_defs.h | 211 ++++++++++++++++++++++++++
>  linux-user/mips64/target_syscall.h    | 211 --------------------------
>  4 files changed, 422 insertions(+), 422 deletions(-)
> 
> diff --git a/linux-user/mips/target_errno_defs.h b/linux-user/mips/target_errno_defs.h
> index daef95ea703..e4490768d07 100644
> --- a/linux-user/mips/target_errno_defs.h
> +++ b/linux-user/mips/target_errno_defs.h
> @@ -3,4 +3,215 @@
>  
>  #include "../generic/target_errno_defs.h"
>  
> +/* Target errno definitions taken from asm-mips/errno.h */
> +#undef TARGET_EWOULDBLOCK
> +#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
> +#undef TARGET_ENOMSG
> +#define TARGET_ENOMSG          35      /* Identifier removed */
> +#undef TARGET_EIDRM
> +#define TARGET_EIDRM           36      /* Identifier removed */
> +#undef TARGET_ECHRNG
> +#define TARGET_ECHRNG          37      /* Channel number out of range */
> +#undef TARGET_EL2NSYNC
> +#define TARGET_EL2NSYNC        38      /* Level 2 not synchronized */
> +#undef TARGET_EL3HLT
> +#define TARGET_EL3HLT          39      /* Level 3 halted */
> +#undef TARGET_EL3RST
> +#define TARGET_EL3RST          40      /* Level 3 reset */
> +#undef TARGET_ELNRNG
> +#define TARGET_ELNRNG          41      /* Link number out of range */
> +#undef TARGET_EUNATCH
> +#define TARGET_EUNATCH         42      /* Protocol driver not attached */
> +#undef TARGET_ENOCSI
> +#define TARGET_ENOCSI          43      /* No CSI structure available */
> +#undef TARGET_EL2HLT
> +#define TARGET_EL2HLT          44      /* Level 2 halted */
> +#undef TARGET_EDEADLK
> +#define TARGET_EDEADLK         45      /* Resource deadlock would occur */
> +#undef TARGET_ENOLCK
> +#define TARGET_ENOLCK          46      /* No record locks available */
> +#undef TARGET_EBADE
> +#define TARGET_EBADE           50      /* Invalid exchange */
> +#undef TARGET_EBADR
> +#define TARGET_EBADR           51      /* Invalid request descriptor */
> +#undef TARGET_EXFULL
> +#define TARGET_EXFULL          52      /* TARGET_Exchange full */
> +#undef TARGET_ENOANO
> +#define TARGET_ENOANO          53      /* No anode */
> +#undef TARGET_EBADRQC
> +#define TARGET_EBADRQC         54      /* Invalid request code */
> +#undef TARGET_EBADSLT
> +#define TARGET_EBADSLT         55      /* Invalid slot */
> +#undef TARGET_EDEADLOCK
> +#define TARGET_EDEADLOCK       56      /* File locking deadlock error */
> +#undef TARGET_EBFONT
> +#define TARGET_EBFONT          59      /* Bad font file format */
> +#undef TARGET_ENOSTR
> +#define TARGET_ENOSTR          60      /* Device not a stream */
> +#undef TARGET_ENODATA
> +#define TARGET_ENODATA         61      /* No data available */
> +#undef TARGET_ETIME
> +#define TARGET_ETIME           62      /* Timer expired */
> +#undef TARGET_ENOSR
> +#define TARGET_ENOSR           63      /* Out of streams resources */
> +#undef TARGET_ENONET
> +#define TARGET_ENONET          64      /* Machine is not on the network */
> +#undef TARGET_ENOPKG
> +#define TARGET_ENOPKG          65      /* Package not installed */
> +#undef TARGET_EREMOTE
> +#define TARGET_EREMOTE         66      /* Object is remote */
> +#undef TARGET_ENOLINK
> +#define TARGET_ENOLINK         67      /* Link has been severed */
> +#undef TARGET_EADV
> +#define TARGET_EADV            68      /* Advertise error */
> +#undef TARGET_ESRMNT
> +#define TARGET_ESRMNT          69      /* Srmount error */
> +#undef TARGET_ECOMM
> +#define TARGET_ECOMM           70      /* Communication error on send */
> +#undef TARGET_EPROTO
> +#define TARGET_EPROTO          71      /* Protocol error */
> +#undef TARGET_EDOTDOT
> +#define TARGET_EDOTDOT         73      /* RFS specific error */
> +#undef TARGET_EMULTIHOP
> +#define TARGET_EMULTIHOP       74      /* Multihop attempted */
> +#undef TARGET_EBADMSG
> +#define TARGET_EBADMSG         77      /* Not a data message */
> +#undef TARGET_ENAMETOOLONG
> +#define TARGET_ENAMETOOLONG    78      /* File name too long */
> +#undef TARGET_EOVERFLOW
> +#define TARGET_EOVERFLOW       79      /* Value too large for defined data type */
> +#undef TARGET_ENOTUNIQ
> +#define TARGET_ENOTUNIQ        80      /* Name not unique on network */
> +#undef TARGET_EBADFD
> +#define TARGET_EBADFD          81      /* File descriptor in bad state */
> +#undef TARGET_EREMCHG
> +#define TARGET_EREMCHG         82      /* Remote address changed */
> +#undef TARGET_ELIBACC
> +#define TARGET_ELIBACC         83      /* Can not access a needed shared library */
> +#undef TARGET_ELIBBAD
> +#define TARGET_ELIBBAD         84      /* Accessing a corrupted shared library */
> +#undef TARGET_ELIBSCN
> +#define TARGET_ELIBSCN         85      /* .lib section in a.out corrupted */
> +#undef TARGET_ELIBMAX
> +#define TARGET_ELIBMAX         86      /* Attempting to link in too many shared libraries */
> +#undef TARGET_ELIBEXEC
> +#define TARGET_ELIBEXEC        87      /* Cannot exec a shared library directly */
> +#undef TARGET_EILSEQ
> +#define TARGET_EILSEQ          88      /* Illegal byte sequence */
> +#undef TARGET_ENOSYS
> +#define TARGET_ENOSYS          89      /* Function not implemented */
> +#undef TARGET_ELOOP
> +#define TARGET_ELOOP           90      /* Too many symbolic links encountered */
> +#undef TARGET_ERESTART
> +#define TARGET_ERESTART        91      /* Interrupted system call should be restarted */
> +#undef TARGET_ESTRPIPE
> +#define TARGET_ESTRPIPE        92      /* Streams pipe error */
> +#undef TARGET_ENOTEMPTY
> +#define TARGET_ENOTEMPTY       93      /* Directory not empty */
> +#undef TARGET_EUSERS
> +#define TARGET_EUSERS          94      /* Too many users */
> +#undef TARGET_ENOTSOCK
> +#define TARGET_ENOTSOCK        95      /* Socket operation on non-socket */
> +#undef TARGET_EDESTADDRREQ
> +#define TARGET_EDESTADDRREQ    96      /* Destination address required */
> +#undef TARGET_EMSGSIZE
> +#define TARGET_EMSGSIZE        97      /* Message too long */
> +#undef TARGET_EPROTOTYPE
> +#define TARGET_EPROTOTYPE      98      /* Protocol wrong type for socket */
> +#undef TARGET_ENOPROTOOPT
> +#define TARGET_ENOPROTOOPT     99      /* Protocol not available */
> +#undef TARGET_EPROTONOSUPPORT
> +#define TARGET_EPROTONOSUPPORT 120     /* Protocol not supported */
> +#undef TARGET_ESOCKTNOSUPPORT
> +#define TARGET_ESOCKTNOSUPPORT 121     /* Socket type not supported */
> +#undef TARGET_EOPNOTSUPP
> +#define TARGET_EOPNOTSUPP      122     /* Operation not supported on transport endpoint */
> +#undef TARGET_EPFNOSUPPORT
> +#define TARGET_EPFNOSUPPORT    123     /* Protocol family not supported */
> +#undef TARGET_EAFNOSUPPORT
> +#define TARGET_EAFNOSUPPORT    124     /* Address family not supported by protocol */
> +#undef TARGET_EADDRINUSE
> +#define TARGET_EADDRINUSE      125     /* Address already in use */
> +#undef TARGET_EADDRNOTAVAIL
> +#define TARGET_EADDRNOTAVAIL   126     /* Cannot assign requested address */
> +#undef TARGET_ENETDOWN
> +#define TARGET_ENETDOWN        127     /* Network is down */
> +#undef TARGET_ENETUNREACH
> +#define TARGET_ENETUNREACH     128     /* Network is unreachable */
> +#undef TARGET_ENETRESET
> +#define TARGET_ENETRESET       129     /* Network dropped connection because of reset */
> +#undef TARGET_ECONNABORTED
> +#define TARGET_ECONNABORTED    130     /* Software caused connection abort */
> +#undef TARGET_ECONNRESET
> +#define TARGET_ECONNRESET      131     /* Connection reset by peer */
> +#undef TARGET_ENOBUFS
> +#define TARGET_ENOBUFS         132     /* No buffer space available */
> +#undef TARGET_EISCONN
> +#define TARGET_EISCONN         133     /* Transport endpoint is already connected */
> +#undef TARGET_ENOTCONN
> +#define TARGET_ENOTCONN        134     /* Transport endpoint is not connected */
> +#undef TARGET_EUCLEAN
> +#define TARGET_EUCLEAN         135     /* Structure needs cleaning */
> +#undef TARGET_ENOTNAM
> +#define TARGET_ENOTNAM         137     /* Not a XENIX named type file */
> +#undef TARGET_ENAVAIL
> +#define TARGET_ENAVAIL         138     /* No XENIX semaphores available */
> +#undef TARGET_EISNAM
> +#define TARGET_EISNAM          139     /* Is a named type file */
> +#undef TARGET_EREMOTEIO
> +#define TARGET_EREMOTEIO       140     /* Remote I/O error */
> +#undef TARGET_EINIT
> +#define TARGET_EINIT           141     /* Reserved */
> +#undef TARGET_EREMDEV
> +#define TARGET_EREMDEV         142     /* TARGET_Error 142 */
> +#undef TARGET_ESHUTDOWN
> +#define TARGET_ESHUTDOWN       143     /* Cannot send after transport endpoint shutdown */
> +#undef TARGET_ETOOMANYREFS
> +#define TARGET_ETOOMANYREFS    144     /* Too many references: cannot splice */
> +#undef TARGET_ETIMEDOUT
> +#define TARGET_ETIMEDOUT       145     /* Connection timed out */
> +#undef TARGET_ECONNREFUSED
> +#define TARGET_ECONNREFUSED    146     /* Connection refused */
> +#undef TARGET_EHOSTDOWN
> +#define TARGET_EHOSTDOWN       147     /* Host is down */
> +#undef TARGET_EHOSTUNREACH
> +#define TARGET_EHOSTUNREACH    148     /* No route to host */
> +#undef TARGET_EALREADY
> +#define TARGET_EALREADY        149     /* Operation already in progress */
> +#undef TARGET_EINPROGRESS
> +#define TARGET_EINPROGRESS     150     /* Operation now in progress */
> +#undef TARGET_ESTALE
> +#define TARGET_ESTALE          151     /* Stale NFS file handle */
> +#undef TARGET_ECANCELED
> +#define TARGET_ECANCELED       158     /* AIO operation canceled */
> +/*
> + * These error are Linux extensions.
> + */
> +#undef TARGET_ENOMEDIUM
> +#define TARGET_ENOMEDIUM       159     /* No medium found */
> +#undef TARGET_EMEDIUMTYPE
> +#define TARGET_EMEDIUMTYPE     160     /* Wrong medium type */
> +#undef TARGET_ENOKEY
> +#define TARGET_ENOKEY          161     /* Required key not available */
> +#undef TARGET_EKEYEXPIRED
> +#define TARGET_EKEYEXPIRED     162     /* Key has expired */
> +#undef TARGET_EKEYREVOKED
> +#define TARGET_EKEYREVOKED     163     /* Key has been revoked */
> +#undef TARGET_EKEYREJECTED
> +#define TARGET_EKEYREJECTED    164     /* Key was rejected by service */
> +
> +/* for robust mutexes */
> +#undef TARGET_EOWNERDEAD
> +#define TARGET_EOWNERDEAD      165     /* Owner died */
> +#undef TARGET_ENOTRECOVERABLE
> +#define TARGET_ENOTRECOVERABLE 166     /* State not recoverable */
> +
> +#undef TARGET_ERFKILL
> +#define TARGET_ERFKILL         167
> +#undef TARGET_EHWPOISON
> +#define TARGET_EHWPOISON       168
> +
> +#undef TARGET_EDQUOT
> +#define TARGET_EDQUOT          1133    /* Quota exceeded */
> +
>  #endif
> diff --git a/linux-user/mips/target_syscall.h b/linux-user/mips/target_syscall.h
> index 3e558fdb4b4..f59057493a3 100644
> --- a/linux-user/mips/target_syscall.h
> +++ b/linux-user/mips/target_syscall.h
> @@ -20,217 +20,6 @@ struct target_pt_regs {
>  	abi_ulong cp0_epc;
>  };
>  
> -/* Target errno definitions taken from asm-mips/errno.h */
> -#undef TARGET_EWOULDBLOCK
> -#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
> -#undef TARGET_ENOMSG
> -#define TARGET_ENOMSG          35      /* Identifier removed */
> -#undef TARGET_EIDRM
> -#define TARGET_EIDRM           36      /* Identifier removed */
> -#undef TARGET_ECHRNG
> -#define TARGET_ECHRNG          37      /* Channel number out of range */
> -#undef TARGET_EL2NSYNC
> -#define TARGET_EL2NSYNC        38      /* Level 2 not synchronized */
> -#undef TARGET_EL3HLT
> -#define TARGET_EL3HLT          39      /* Level 3 halted */
> -#undef TARGET_EL3RST
> -#define TARGET_EL3RST          40      /* Level 3 reset */
> -#undef TARGET_ELNRNG
> -#define TARGET_ELNRNG          41      /* Link number out of range */
> -#undef TARGET_EUNATCH
> -#define TARGET_EUNATCH         42      /* Protocol driver not attached */
> -#undef TARGET_ENOCSI
> -#define TARGET_ENOCSI          43      /* No CSI structure available */
> -#undef TARGET_EL2HLT
> -#define TARGET_EL2HLT          44      /* Level 2 halted */
> -#undef TARGET_EDEADLK
> -#define TARGET_EDEADLK         45      /* Resource deadlock would occur */
> -#undef TARGET_ENOLCK
> -#define TARGET_ENOLCK          46      /* No record locks available */
> -#undef TARGET_EBADE
> -#define TARGET_EBADE           50      /* Invalid exchange */
> -#undef TARGET_EBADR
> -#define TARGET_EBADR           51      /* Invalid request descriptor */
> -#undef TARGET_EXFULL
> -#define TARGET_EXFULL          52      /* TARGET_Exchange full */
> -#undef TARGET_ENOANO
> -#define TARGET_ENOANO          53      /* No anode */
> -#undef TARGET_EBADRQC
> -#define TARGET_EBADRQC         54      /* Invalid request code */
> -#undef TARGET_EBADSLT
> -#define TARGET_EBADSLT         55      /* Invalid slot */
> -#undef TARGET_EDEADLOCK
> -#define TARGET_EDEADLOCK       56      /* File locking deadlock error */
> -#undef TARGET_EBFONT
> -#define TARGET_EBFONT          59      /* Bad font file format */
> -#undef TARGET_ENOSTR
> -#define TARGET_ENOSTR          60      /* Device not a stream */
> -#undef TARGET_ENODATA
> -#define TARGET_ENODATA         61      /* No data available */
> -#undef TARGET_ETIME
> -#define TARGET_ETIME           62      /* Timer expired */
> -#undef TARGET_ENOSR
> -#define TARGET_ENOSR           63      /* Out of streams resources */
> -#undef TARGET_ENONET
> -#define TARGET_ENONET          64      /* Machine is not on the network */
> -#undef TARGET_ENOPKG
> -#define TARGET_ENOPKG          65      /* Package not installed */
> -#undef TARGET_EREMOTE
> -#define TARGET_EREMOTE         66      /* Object is remote */
> -#undef TARGET_ENOLINK
> -#define TARGET_ENOLINK         67      /* Link has been severed */
> -#undef TARGET_EADV
> -#define TARGET_EADV            68      /* Advertise error */
> -#undef TARGET_ESRMNT
> -#define TARGET_ESRMNT          69      /* Srmount error */
> -#undef TARGET_ECOMM
> -#define TARGET_ECOMM           70      /* Communication error on send */
> -#undef TARGET_EPROTO
> -#define TARGET_EPROTO          71      /* Protocol error */
> -#undef TARGET_EDOTDOT
> -#define TARGET_EDOTDOT         73      /* RFS specific error */
> -#undef TARGET_EMULTIHOP
> -#define TARGET_EMULTIHOP       74      /* Multihop attempted */
> -#undef TARGET_EBADMSG
> -#define TARGET_EBADMSG         77      /* Not a data message */
> -#undef TARGET_ENAMETOOLONG
> -#define TARGET_ENAMETOOLONG    78      /* File name too long */
> -#undef TARGET_EOVERFLOW
> -#define TARGET_EOVERFLOW       79      /* Value too large for defined data type */
> -#undef TARGET_ENOTUNIQ
> -#define TARGET_ENOTUNIQ        80      /* Name not unique on network */
> -#undef TARGET_EBADFD
> -#define TARGET_EBADFD          81      /* File descriptor in bad state */
> -#undef TARGET_EREMCHG
> -#define TARGET_EREMCHG         82      /* Remote address changed */
> -#undef TARGET_ELIBACC
> -#define TARGET_ELIBACC         83      /* Can not access a needed shared library */
> -#undef TARGET_ELIBBAD
> -#define TARGET_ELIBBAD         84      /* Accessing a corrupted shared library */
> -#undef TARGET_ELIBSCN
> -#define TARGET_ELIBSCN         85      /* .lib section in a.out corrupted */
> -#undef TARGET_ELIBMAX
> -#define TARGET_ELIBMAX         86      /* Attempting to link in too many shared libraries */
> -#undef TARGET_ELIBEXEC
> -#define TARGET_ELIBEXEC        87      /* Cannot exec a shared library directly */
> -#undef TARGET_EILSEQ
> -#define TARGET_EILSEQ          88      /* Illegal byte sequence */
> -#undef TARGET_ENOSYS
> -#define TARGET_ENOSYS          89      /* Function not implemented */
> -#undef TARGET_ELOOP
> -#define TARGET_ELOOP           90      /* Too many symbolic links encountered */
> -#undef TARGET_ERESTART
> -#define TARGET_ERESTART        91      /* Interrupted system call should be restarted */
> -#undef TARGET_ESTRPIPE
> -#define TARGET_ESTRPIPE        92      /* Streams pipe error */
> -#undef TARGET_ENOTEMPTY
> -#define TARGET_ENOTEMPTY       93      /* Directory not empty */
> -#undef TARGET_EUSERS
> -#define TARGET_EUSERS          94      /* Too many users */
> -#undef TARGET_ENOTSOCK
> -#define TARGET_ENOTSOCK        95      /* Socket operation on non-socket */
> -#undef TARGET_EDESTADDRREQ
> -#define TARGET_EDESTADDRREQ    96      /* Destination address required */
> -#undef TARGET_EMSGSIZE
> -#define TARGET_EMSGSIZE        97      /* Message too long */
> -#undef TARGET_EPROTOTYPE
> -#define TARGET_EPROTOTYPE      98      /* Protocol wrong type for socket */
> -#undef TARGET_ENOPROTOOPT
> -#define TARGET_ENOPROTOOPT     99      /* Protocol not available */
> -#undef TARGET_EPROTONOSUPPORT
> -#define TARGET_EPROTONOSUPPORT 120     /* Protocol not supported */
> -#undef TARGET_ESOCKTNOSUPPORT
> -#define TARGET_ESOCKTNOSUPPORT 121     /* Socket type not supported */
> -#undef TARGET_EOPNOTSUPP
> -#define TARGET_EOPNOTSUPP      122     /* Operation not supported on transport endpoint */
> -#undef TARGET_EPFNOSUPPORT
> -#define TARGET_EPFNOSUPPORT    123     /* Protocol family not supported */
> -#undef TARGET_EAFNOSUPPORT
> -#define TARGET_EAFNOSUPPORT    124     /* Address family not supported by protocol */
> -#undef TARGET_EADDRINUSE
> -#define TARGET_EADDRINUSE      125     /* Address already in use */
> -#undef TARGET_EADDRNOTAVAIL
> -#define TARGET_EADDRNOTAVAIL   126     /* Cannot assign requested address */
> -#undef TARGET_ENETDOWN
> -#define TARGET_ENETDOWN        127     /* Network is down */
> -#undef TARGET_ENETUNREACH
> -#define TARGET_ENETUNREACH     128     /* Network is unreachable */
> -#undef TARGET_ENETRESET
> -#define TARGET_ENETRESET       129     /* Network dropped connection because of reset */
> -#undef TARGET_ECONNABORTED
> -#define TARGET_ECONNABORTED    130     /* Software caused connection abort */
> -#undef TARGET_ECONNRESET
> -#define TARGET_ECONNRESET      131     /* Connection reset by peer */
> -#undef TARGET_ENOBUFS
> -#define TARGET_ENOBUFS         132     /* No buffer space available */
> -#undef TARGET_EISCONN
> -#define TARGET_EISCONN         133     /* Transport endpoint is already connected */
> -#undef TARGET_ENOTCONN
> -#define TARGET_ENOTCONN        134     /* Transport endpoint is not connected */
> -#undef TARGET_EUCLEAN
> -#define TARGET_EUCLEAN         135     /* Structure needs cleaning */
> -#undef TARGET_ENOTNAM
> -#define TARGET_ENOTNAM         137     /* Not a XENIX named type file */
> -#undef TARGET_ENAVAIL
> -#define TARGET_ENAVAIL         138     /* No XENIX semaphores available */
> -#undef TARGET_EISNAM
> -#define TARGET_EISNAM          139     /* Is a named type file */
> -#undef TARGET_EREMOTEIO
> -#define TARGET_EREMOTEIO       140     /* Remote I/O error */
> -#undef TARGET_EINIT
> -#define TARGET_EINIT           141     /* Reserved */
> -#undef TARGET_EREMDEV
> -#define TARGET_EREMDEV         142     /* TARGET_Error 142 */
> -#undef TARGET_ESHUTDOWN
> -#define TARGET_ESHUTDOWN       143     /* Cannot send after transport endpoint shutdown */
> -#undef TARGET_ETOOMANYREFS
> -#define TARGET_ETOOMANYREFS    144     /* Too many references: cannot splice */
> -#undef TARGET_ETIMEDOUT
> -#define TARGET_ETIMEDOUT       145     /* Connection timed out */
> -#undef TARGET_ECONNREFUSED
> -#define TARGET_ECONNREFUSED    146     /* Connection refused */
> -#undef TARGET_EHOSTDOWN
> -#define TARGET_EHOSTDOWN       147     /* Host is down */
> -#undef TARGET_EHOSTUNREACH
> -#define TARGET_EHOSTUNREACH    148     /* No route to host */
> -#undef TARGET_EALREADY
> -#define TARGET_EALREADY        149     /* Operation already in progress */
> -#undef TARGET_EINPROGRESS
> -#define TARGET_EINPROGRESS     150     /* Operation now in progress */
> -#undef TARGET_ESTALE
> -#define TARGET_ESTALE          151     /* Stale NFS file handle */
> -#undef TARGET_ECANCELED
> -#define TARGET_ECANCELED       158     /* AIO operation canceled */
> -/*
> - * These error are Linux extensions.
> - */
> -#undef TARGET_ENOMEDIUM
> -#define TARGET_ENOMEDIUM       159     /* No medium found */
> -#undef TARGET_EMEDIUMTYPE
> -#define TARGET_EMEDIUMTYPE     160     /* Wrong medium type */
> -#undef TARGET_ENOKEY
> -#define TARGET_ENOKEY          161     /* Required key not available */
> -#undef TARGET_EKEYEXPIRED
> -#define TARGET_EKEYEXPIRED     162     /* Key has expired */
> -#undef TARGET_EKEYREVOKED
> -#define TARGET_EKEYREVOKED     163     /* Key has been revoked */
> -#undef TARGET_EKEYREJECTED
> -#define TARGET_EKEYREJECTED    164     /* Key was rejected by service */
> -
> -/* for robust mutexes */
> -#undef TARGET_EOWNERDEAD
> -#define TARGET_EOWNERDEAD      165     /* Owner died */
> -#undef TARGET_ENOTRECOVERABLE
> -#define TARGET_ENOTRECOVERABLE 166     /* State not recoverable */
> -
> -#undef TARGET_ERFKILL
> -#define TARGET_ERFKILL         167
> -#undef TARGET_EHWPOISON
> -#define TARGET_EHWPOISON       168
> -
> -#undef TARGET_EDQUOT
> -#define TARGET_EDQUOT          1133    /* Quota exceeded */
> -
>  #define UNAME_MACHINE "mips"
>  #define UNAME_MINIMUM_RELEASE "2.6.32"
>  
> diff --git a/linux-user/mips64/target_errno_defs.h b/linux-user/mips64/target_errno_defs.h
> index 82b0a704f62..8192cee3321 100644
> --- a/linux-user/mips64/target_errno_defs.h
> +++ b/linux-user/mips64/target_errno_defs.h
> @@ -3,4 +3,215 @@
>  
>  #include "../generic/target_errno_defs.h"
>  
> +/* Target errno definitions taken from asm-mips/errno.h */
> +#undef TARGET_EWOULDBLOCK
> +#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
> +#undef TARGET_ENOMSG
> +#define TARGET_ENOMSG          35      /* Identifier removed */
> +#undef TARGET_EIDRM
> +#define TARGET_EIDRM           36      /* Identifier removed */
> +#undef TARGET_ECHRNG
> +#define TARGET_ECHRNG          37      /* Channel number out of range */
> +#undef TARGET_EL2NSYNC
> +#define TARGET_EL2NSYNC        38      /* Level 2 not synchronized */
> +#undef TARGET_EL3HLT
> +#define TARGET_EL3HLT          39      /* Level 3 halted */
> +#undef TARGET_EL3RST
> +#define TARGET_EL3RST          40      /* Level 3 reset */
> +#undef TARGET_ELNRNG
> +#define TARGET_ELNRNG          41      /* Link number out of range */
> +#undef TARGET_EUNATCH
> +#define TARGET_EUNATCH         42      /* Protocol driver not attached */
> +#undef TARGET_ENOCSI
> +#define TARGET_ENOCSI          43      /* No CSI structure available */
> +#undef TARGET_EL2HLT
> +#define TARGET_EL2HLT          44      /* Level 2 halted */
> +#undef TARGET_EDEADLK
> +#define TARGET_EDEADLK         45      /* Resource deadlock would occur */
> +#undef TARGET_ENOLCK
> +#define TARGET_ENOLCK          46      /* No record locks available */
> +#undef TARGET_EBADE
> +#define TARGET_EBADE           50      /* Invalid exchange */
> +#undef TARGET_EBADR
> +#define TARGET_EBADR           51      /* Invalid request descriptor */
> +#undef TARGET_EXFULL
> +#define TARGET_EXFULL          52      /* TARGET_Exchange full */
> +#undef TARGET_ENOANO
> +#define TARGET_ENOANO          53      /* No anode */
> +#undef TARGET_EBADRQC
> +#define TARGET_EBADRQC         54      /* Invalid request code */
> +#undef TARGET_EBADSLT
> +#define TARGET_EBADSLT         55      /* Invalid slot */
> +#undef TARGET_EDEADLOCK
> +#define TARGET_EDEADLOCK       56      /* File locking deadlock error */
> +#undef TARGET_EBFONT
> +#define TARGET_EBFONT          59      /* Bad font file format */
> +#undef TARGET_ENOSTR
> +#define TARGET_ENOSTR          60      /* Device not a stream */
> +#undef TARGET_ENODATA
> +#define TARGET_ENODATA         61      /* No data available */
> +#undef TARGET_ETIME
> +#define TARGET_ETIME           62      /* Timer expired */
> +#undef TARGET_ENOSR
> +#define TARGET_ENOSR           63      /* Out of streams resources */
> +#undef TARGET_ENONET
> +#define TARGET_ENONET          64      /* Machine is not on the network */
> +#undef TARGET_ENOPKG
> +#define TARGET_ENOPKG          65      /* Package not installed */
> +#undef TARGET_EREMOTE
> +#define TARGET_EREMOTE         66      /* Object is remote */
> +#undef TARGET_ENOLINK
> +#define TARGET_ENOLINK         67      /* Link has been severed */
> +#undef TARGET_EADV
> +#define TARGET_EADV            68      /* Advertise error */
> +#undef TARGET_ESRMNT
> +#define TARGET_ESRMNT          69      /* Srmount error */
> +#undef TARGET_ECOMM
> +#define TARGET_ECOMM           70      /* Communication error on send */
> +#undef TARGET_EPROTO
> +#define TARGET_EPROTO          71      /* Protocol error */
> +#undef TARGET_EDOTDOT
> +#define TARGET_EDOTDOT         73      /* RFS specific error */
> +#undef TARGET_EMULTIHOP
> +#define TARGET_EMULTIHOP       74      /* Multihop attempted */
> +#undef TARGET_EBADMSG
> +#define TARGET_EBADMSG         77      /* Not a data message */
> +#undef TARGET_ENAMETOOLONG
> +#define TARGET_ENAMETOOLONG    78      /* File name too long */
> +#undef TARGET_EOVERFLOW
> +#define TARGET_EOVERFLOW       79      /* Value too large for defined data type */
> +#undef TARGET_ENOTUNIQ
> +#define TARGET_ENOTUNIQ        80      /* Name not unique on network */
> +#undef TARGET_EBADFD
> +#define TARGET_EBADFD          81      /* File descriptor in bad state */
> +#undef TARGET_EREMCHG
> +#define TARGET_EREMCHG         82      /* Remote address changed */
> +#undef TARGET_ELIBACC
> +#define TARGET_ELIBACC         83      /* Can not access a needed shared library */
> +#undef TARGET_ELIBBAD
> +#define TARGET_ELIBBAD         84      /* Accessing a corrupted shared library */
> +#undef TARGET_ELIBSCN
> +#define TARGET_ELIBSCN         85      /* .lib section in a.out corrupted */
> +#undef TARGET_ELIBMAX
> +#define TARGET_ELIBMAX         86      /* Attempting to link in too many shared libraries */
> +#undef TARGET_ELIBEXEC
> +#define TARGET_ELIBEXEC        87      /* Cannot exec a shared library directly */
> +#undef TARGET_EILSEQ
> +#define TARGET_EILSEQ          88      /* Illegal byte sequence */
> +#undef TARGET_ENOSYS
> +#define TARGET_ENOSYS          89      /* Function not implemented */
> +#undef TARGET_ELOOP
> +#define TARGET_ELOOP           90      /* Too many symbolic links encountered */
> +#undef TARGET_ERESTART
> +#define TARGET_ERESTART        91      /* Interrupted system call should be restarted */
> +#undef TARGET_ESTRPIPE
> +#define TARGET_ESTRPIPE        92      /* Streams pipe error */
> +#undef TARGET_ENOTEMPTY
> +#define TARGET_ENOTEMPTY       93      /* Directory not empty */
> +#undef TARGET_EUSERS
> +#define TARGET_EUSERS          94      /* Too many users */
> +#undef TARGET_ENOTSOCK
> +#define TARGET_ENOTSOCK        95      /* Socket operation on non-socket */
> +#undef TARGET_EDESTADDRREQ
> +#define TARGET_EDESTADDRREQ    96      /* Destination address required */
> +#undef TARGET_EMSGSIZE
> +#define TARGET_EMSGSIZE        97      /* Message too long */
> +#undef TARGET_EPROTOTYPE
> +#define TARGET_EPROTOTYPE      98      /* Protocol wrong type for socket */
> +#undef TARGET_ENOPROTOOPT
> +#define TARGET_ENOPROTOOPT     99      /* Protocol not available */
> +#undef TARGET_EPROTONOSUPPORT
> +#define TARGET_EPROTONOSUPPORT 120     /* Protocol not supported */
> +#undef TARGET_ESOCKTNOSUPPORT
> +#define TARGET_ESOCKTNOSUPPORT 121     /* Socket type not supported */
> +#undef TARGET_EOPNOTSUPP
> +#define TARGET_EOPNOTSUPP      122     /* Operation not supported on transport endpoint */
> +#undef TARGET_EPFNOSUPPORT
> +#define TARGET_EPFNOSUPPORT    123     /* Protocol family not supported */
> +#undef TARGET_EAFNOSUPPORT
> +#define TARGET_EAFNOSUPPORT    124     /* Address family not supported by protocol */
> +#undef TARGET_EADDRINUSE
> +#define TARGET_EADDRINUSE      125     /* Address already in use */
> +#undef TARGET_EADDRNOTAVAIL
> +#define TARGET_EADDRNOTAVAIL   126     /* Cannot assign requested address */
> +#undef TARGET_ENETDOWN
> +#define TARGET_ENETDOWN        127     /* Network is down */
> +#undef TARGET_ENETUNREACH
> +#define TARGET_ENETUNREACH     128     /* Network is unreachable */
> +#undef TARGET_ENETRESET
> +#define TARGET_ENETRESET       129     /* Network dropped connection because of reset */
> +#undef TARGET_ECONNABORTED
> +#define TARGET_ECONNABORTED    130     /* Software caused connection abort */
> +#undef TARGET_ECONNRESET
> +#define TARGET_ECONNRESET      131     /* Connection reset by peer */
> +#undef TARGET_ENOBUFS
> +#define TARGET_ENOBUFS         132     /* No buffer space available */
> +#undef TARGET_EISCONN
> +#define TARGET_EISCONN         133     /* Transport endpoint is already connected */
> +#undef TARGET_ENOTCONN
> +#define TARGET_ENOTCONN        134     /* Transport endpoint is not connected */
> +#undef TARGET_EUCLEAN
> +#define TARGET_EUCLEAN         135     /* Structure needs cleaning */
> +#undef TARGET_ENOTNAM
> +#define TARGET_ENOTNAM         137     /* Not a XENIX named type file */
> +#undef TARGET_ENAVAIL
> +#define TARGET_ENAVAIL         138     /* No XENIX semaphores available */
> +#undef TARGET_EISNAM
> +#define TARGET_EISNAM          139     /* Is a named type file */
> +#undef TARGET_EREMOTEIO
> +#define TARGET_EREMOTEIO       140     /* Remote I/O error */
> +#undef TARGET_EINIT
> +#define TARGET_EINIT           141     /* Reserved */
> +#undef TARGET_EREMDEV
> +#define TARGET_EREMDEV         142     /* TARGET_Error 142 */
> +#undef TARGET_ESHUTDOWN
> +#define TARGET_ESHUTDOWN       143     /* Cannot send after transport endpoint shutdown */
> +#undef TARGET_ETOOMANYREFS
> +#define TARGET_ETOOMANYREFS    144     /* Too many references: cannot splice */
> +#undef TARGET_ETIMEDOUT
> +#define TARGET_ETIMEDOUT       145     /* Connection timed out */
> +#undef TARGET_ECONNREFUSED
> +#define TARGET_ECONNREFUSED    146     /* Connection refused */
> +#undef TARGET_EHOSTDOWN
> +#define TARGET_EHOSTDOWN       147     /* Host is down */
> +#undef TARGET_EHOSTUNREACH
> +#define TARGET_EHOSTUNREACH    148     /* No route to host */
> +#undef TARGET_EALREADY
> +#define TARGET_EALREADY        149     /* Operation already in progress */
> +#undef TARGET_EINPROGRESS
> +#define TARGET_EINPROGRESS     150     /* Operation now in progress */
> +#undef TARGET_ESTALE
> +#define TARGET_ESTALE          151     /* Stale NFS file handle */
> +#undef TARGET_ECANCELED
> +#define TARGET_ECANCELED       158     /* AIO operation canceled */
> +/*
> + * These error are Linux extensions.
> + */
> +#undef TARGET_ENOMEDIUM
> +#define TARGET_ENOMEDIUM       159     /* No medium found */
> +#undef TARGET_EMEDIUMTYPE
> +#define TARGET_EMEDIUMTYPE     160     /* Wrong medium type */
> +#undef TARGET_ENOKEY
> +#define TARGET_ENOKEY          161     /* Required key not available */
> +#undef TARGET_EKEYEXPIRED
> +#define TARGET_EKEYEXPIRED     162     /* Key has expired */
> +#undef TARGET_EKEYREVOKED
> +#define TARGET_EKEYREVOKED     163     /* Key has been revoked */
> +#undef TARGET_EKEYREJECTED
> +#define TARGET_EKEYREJECTED    164     /* Key was rejected by service */
> +
> +/* for robust mutexes */
> +#undef TARGET_EOWNERDEAD
> +#define TARGET_EOWNERDEAD      165     /* Owner died */
> +#undef TARGET_ENOTRECOVERABLE
> +#define TARGET_ENOTRECOVERABLE 166     /* State not recoverable */
> +
> +#undef TARGET_ERFKILL
> +#define TARGET_ERFKILL         167
> +#undef TARGET_EHWPOISON
> +#define TARGET_EHWPOISON       168
> +
> +#undef TARGET_EDQUOT
> +#define TARGET_EDQUOT          1133    /* Quota exceeded */
> +
>  #endif
> diff --git a/linux-user/mips64/target_syscall.h b/linux-user/mips64/target_syscall.h
> index c54374c5a29..cd1e1b49691 100644
> --- a/linux-user/mips64/target_syscall.h
> +++ b/linux-user/mips64/target_syscall.h
> @@ -17,217 +17,6 @@ struct target_pt_regs {
>          target_ulong cp0_epc;
>  };
>  
> -/* Target errno definitions taken from asm-mips/errno.h */
> -#undef TARGET_EWOULDBLOCK
> -#define TARGET_EWOULDBLOCK     TARGET_EAGAIN /* Operation would block */
> -#undef TARGET_ENOMSG
> -#define TARGET_ENOMSG          35      /* Identifier removed */
> -#undef TARGET_EIDRM
> -#define TARGET_EIDRM           36      /* Identifier removed */
> -#undef TARGET_ECHRNG
> -#define TARGET_ECHRNG          37      /* Channel number out of range */
> -#undef TARGET_EL2NSYNC
> -#define TARGET_EL2NSYNC        38      /* Level 2 not synchronized */
> -#undef TARGET_EL3HLT
> -#define TARGET_EL3HLT          39      /* Level 3 halted */
> -#undef TARGET_EL3RST
> -#define TARGET_EL3RST          40      /* Level 3 reset */
> -#undef TARGET_ELNRNG
> -#define TARGET_ELNRNG          41      /* Link number out of range */
> -#undef TARGET_EUNATCH
> -#define TARGET_EUNATCH         42      /* Protocol driver not attached */
> -#undef TARGET_ENOCSI
> -#define TARGET_ENOCSI          43      /* No CSI structure available */
> -#undef TARGET_EL2HLT
> -#define TARGET_EL2HLT          44      /* Level 2 halted */
> -#undef TARGET_EDEADLK
> -#define TARGET_EDEADLK         45      /* Resource deadlock would occur */
> -#undef TARGET_ENOLCK
> -#define TARGET_ENOLCK          46      /* No record locks available */
> -#undef TARGET_EBADE
> -#define TARGET_EBADE           50      /* Invalid exchange */
> -#undef TARGET_EBADR
> -#define TARGET_EBADR           51      /* Invalid request descriptor */
> -#undef TARGET_EXFULL
> -#define TARGET_EXFULL          52      /* TARGET_Exchange full */
> -#undef TARGET_ENOANO
> -#define TARGET_ENOANO          53      /* No anode */
> -#undef TARGET_EBADRQC
> -#define TARGET_EBADRQC         54      /* Invalid request code */
> -#undef TARGET_EBADSLT
> -#define TARGET_EBADSLT         55      /* Invalid slot */
> -#undef TARGET_EDEADLOCK
> -#define TARGET_EDEADLOCK       56      /* File locking deadlock error */
> -#undef TARGET_EBFONT
> -#define TARGET_EBFONT          59      /* Bad font file format */
> -#undef TARGET_ENOSTR
> -#define TARGET_ENOSTR          60      /* Device not a stream */
> -#undef TARGET_ENODATA
> -#define TARGET_ENODATA         61      /* No data available */
> -#undef TARGET_ETIME
> -#define TARGET_ETIME           62      /* Timer expired */
> -#undef TARGET_ENOSR
> -#define TARGET_ENOSR           63      /* Out of streams resources */
> -#undef TARGET_ENONET
> -#define TARGET_ENONET          64      /* Machine is not on the network */
> -#undef TARGET_ENOPKG
> -#define TARGET_ENOPKG          65      /* Package not installed */
> -#undef TARGET_EREMOTE
> -#define TARGET_EREMOTE         66      /* Object is remote */
> -#undef TARGET_ENOLINK
> -#define TARGET_ENOLINK         67      /* Link has been severed */
> -#undef TARGET_EADV
> -#define TARGET_EADV            68      /* Advertise error */
> -#undef TARGET_ESRMNT
> -#define TARGET_ESRMNT          69      /* Srmount error */
> -#undef TARGET_ECOMM
> -#define TARGET_ECOMM           70      /* Communication error on send */
> -#undef TARGET_EPROTO
> -#define TARGET_EPROTO          71      /* Protocol error */
> -#undef TARGET_EDOTDOT
> -#define TARGET_EDOTDOT         73      /* RFS specific error */
> -#undef TARGET_EMULTIHOP
> -#define TARGET_EMULTIHOP       74      /* Multihop attempted */
> -#undef TARGET_EBADMSG
> -#define TARGET_EBADMSG         77      /* Not a data message */
> -#undef TARGET_ENAMETOOLONG
> -#define TARGET_ENAMETOOLONG    78      /* File name too long */
> -#undef TARGET_EOVERFLOW
> -#define TARGET_EOVERFLOW       79      /* Value too large for defined data type */
> -#undef TARGET_ENOTUNIQ
> -#define TARGET_ENOTUNIQ        80      /* Name not unique on network */
> -#undef TARGET_EBADFD
> -#define TARGET_EBADFD          81      /* File descriptor in bad state */
> -#undef TARGET_EREMCHG
> -#define TARGET_EREMCHG         82      /* Remote address changed */
> -#undef TARGET_ELIBACC
> -#define TARGET_ELIBACC         83      /* Can not access a needed shared library */
> -#undef TARGET_ELIBBAD
> -#define TARGET_ELIBBAD         84      /* Accessing a corrupted shared library */
> -#undef TARGET_ELIBSCN
> -#define TARGET_ELIBSCN         85      /* .lib section in a.out corrupted */
> -#undef TARGET_ELIBMAX
> -#define TARGET_ELIBMAX         86      /* Attempting to link in too many shared libraries */
> -#undef TARGET_ELIBEXEC
> -#define TARGET_ELIBEXEC        87      /* Cannot exec a shared library directly */
> -#undef TARGET_EILSEQ
> -#define TARGET_EILSEQ          88      /* Illegal byte sequence */
> -#undef TARGET_ENOSYS
> -#define TARGET_ENOSYS          89      /* Function not implemented */
> -#undef TARGET_ELOOP
> -#define TARGET_ELOOP           90      /* Too many symbolic links encountered */
> -#undef TARGET_ERESTART
> -#define TARGET_ERESTART        91      /* Interrupted system call should be restarted */
> -#undef TARGET_ESTRPIPE
> -#define TARGET_ESTRPIPE        92      /* Streams pipe error */
> -#undef TARGET_ENOTEMPTY
> -#define TARGET_ENOTEMPTY       93      /* Directory not empty */
> -#undef TARGET_EUSERS
> -#define TARGET_EUSERS          94      /* Too many users */
> -#undef TARGET_ENOTSOCK
> -#define TARGET_ENOTSOCK        95      /* Socket operation on non-socket */
> -#undef TARGET_EDESTADDRREQ
> -#define TARGET_EDESTADDRREQ    96      /* Destination address required */
> -#undef TARGET_EMSGSIZE
> -#define TARGET_EMSGSIZE        97      /* Message too long */
> -#undef TARGET_EPROTOTYPE
> -#define TARGET_EPROTOTYPE      98      /* Protocol wrong type for socket */
> -#undef TARGET_ENOPROTOOPT
> -#define TARGET_ENOPROTOOPT     99      /* Protocol not available */
> -#undef TARGET_EPROTONOSUPPORT
> -#define TARGET_EPROTONOSUPPORT 120     /* Protocol not supported */
> -#undef TARGET_ESOCKTNOSUPPORT
> -#define TARGET_ESOCKTNOSUPPORT 121     /* Socket type not supported */
> -#undef TARGET_EOPNOTSUPP
> -#define TARGET_EOPNOTSUPP      122     /* Operation not supported on transport endpoint */
> -#undef TARGET_EPFNOSUPPORT
> -#define TARGET_EPFNOSUPPORT    123     /* Protocol family not supported */
> -#undef TARGET_EAFNOSUPPORT
> -#define TARGET_EAFNOSUPPORT    124     /* Address family not supported by protocol */
> -#undef TARGET_EADDRINUSE
> -#define TARGET_EADDRINUSE      125     /* Address already in use */
> -#undef TARGET_EADDRNOTAVAIL
> -#define TARGET_EADDRNOTAVAIL   126     /* Cannot assign requested address */
> -#undef TARGET_ENETDOWN
> -#define TARGET_ENETDOWN        127     /* Network is down */
> -#undef TARGET_ENETUNREACH
> -#define TARGET_ENETUNREACH     128     /* Network is unreachable */
> -#undef TARGET_ENETRESET
> -#define TARGET_ENETRESET       129     /* Network dropped connection because of reset */
> -#undef TARGET_ECONNABORTED
> -#define TARGET_ECONNABORTED    130     /* Software caused connection abort */
> -#undef TARGET_ECONNRESET
> -#define TARGET_ECONNRESET      131     /* Connection reset by peer */
> -#undef TARGET_ENOBUFS
> -#define TARGET_ENOBUFS         132     /* No buffer space available */
> -#undef TARGET_EISCONN
> -#define TARGET_EISCONN         133     /* Transport endpoint is already connected */
> -#undef TARGET_ENOTCONN
> -#define TARGET_ENOTCONN        134     /* Transport endpoint is not connected */
> -#undef TARGET_EUCLEAN
> -#define TARGET_EUCLEAN         135     /* Structure needs cleaning */
> -#undef TARGET_ENOTNAM
> -#define TARGET_ENOTNAM         137     /* Not a XENIX named type file */
> -#undef TARGET_ENAVAIL
> -#define TARGET_ENAVAIL         138     /* No XENIX semaphores available */
> -#undef TARGET_EISNAM
> -#define TARGET_EISNAM          139     /* Is a named type file */
> -#undef TARGET_EREMOTEIO
> -#define TARGET_EREMOTEIO       140     /* Remote I/O error */
> -#undef TARGET_EINIT
> -#define TARGET_EINIT           141     /* Reserved */
> -#undef TARGET_EREMDEV
> -#define TARGET_EREMDEV         142     /* TARGET_Error 142 */
> -#undef TARGET_ESHUTDOWN
> -#define TARGET_ESHUTDOWN       143     /* Cannot send after transport endpoint shutdown */
> -#undef TARGET_ETOOMANYREFS
> -#define TARGET_ETOOMANYREFS    144     /* Too many references: cannot splice */
> -#undef TARGET_ETIMEDOUT
> -#define TARGET_ETIMEDOUT       145     /* Connection timed out */
> -#undef TARGET_ECONNREFUSED
> -#define TARGET_ECONNREFUSED    146     /* Connection refused */
> -#undef TARGET_EHOSTDOWN
> -#define TARGET_EHOSTDOWN       147     /* Host is down */
> -#undef TARGET_EHOSTUNREACH
> -#define TARGET_EHOSTUNREACH    148     /* No route to host */
> -#undef TARGET_EALREADY
> -#define TARGET_EALREADY        149     /* Operation already in progress */
> -#undef TARGET_EINPROGRESS
> -#define TARGET_EINPROGRESS     150     /* Operation now in progress */
> -#undef TARGET_ESTALE
> -#define TARGET_ESTALE          151     /* Stale NFS file handle */
> -#undef TARGET_ECANCELED
> -#define TARGET_ECANCELED       158     /* AIO operation canceled */
> -/*
> - * These error are Linux extensions.
> - */
> -#undef TARGET_ENOMEDIUM
> -#define TARGET_ENOMEDIUM       159     /* No medium found */
> -#undef TARGET_EMEDIUMTYPE
> -#define TARGET_EMEDIUMTYPE     160     /* Wrong medium type */
> -#undef TARGET_ENOKEY
> -#define TARGET_ENOKEY          161     /* Required key not available */
> -#undef TARGET_EKEYEXPIRED
> -#define TARGET_EKEYEXPIRED     162     /* Key has expired */
> -#undef TARGET_EKEYREVOKED
> -#define TARGET_EKEYREVOKED     163     /* Key has been revoked */
> -#undef TARGET_EKEYREJECTED
> -#define TARGET_EKEYREJECTED    164     /* Key was rejected by service */
> -
> -/* for robust mutexes */
> -#undef TARGET_EOWNERDEAD
> -#define TARGET_EOWNERDEAD      165     /* Owner died */
> -#undef TARGET_ENOTRECOVERABLE
> -#define TARGET_ENOTRECOVERABLE 166     /* State not recoverable */
> -
> -#undef TARGET_ERFKILL
> -#define TARGET_ERFKILL         167
> -#undef TARGET_EHWPOISON
> -#define TARGET_EHWPOISON       168
> -
> -#undef TARGET_EDQUOT
> -#define TARGET_EDQUOT          1133    /* Quota exceeded */
> -
>  #define UNAME_MACHINE "mips64"
>  #define UNAME_MINIMUM_RELEASE "2.6.32"
>  
> 

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


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

* Re: [PATCH v2 7/8] linux-user/syscall: Introduce errno_exists()
  2021-07-08 14:11 ` [PATCH v2 7/8] linux-user/syscall: Introduce errno_exists() Philippe Mathieu-Daudé
@ 2021-07-08 15:25   ` Laurent Vivier
  2021-07-08 15:42   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Laurent Vivier @ 2021-07-08 15:25 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Richard Henderson

Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  linux-user/syscall.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 4842a1987b7..56682b06cbd 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -509,6 +509,11 @@ static inline int next_free_host_timer(void)
>  
>  #define ERRNO_TABLE_SIZE 1200
>  
> +static inline bool errno_exists(int err)
> +{
> +    return err >= 0 && err < ERRNO_TABLE_SIZE;
> +}
> +
>  /* target_to_host_errno_table[] is initialized from
>   * host_to_target_errno_table[] in syscall_init(). */
>  static uint16_t target_to_host_errno_table[ERRNO_TABLE_SIZE] = {
> @@ -672,7 +677,7 @@ const char *target_strerror(int err)
>          return "Successful exit from sigreturn";
>      }
>  
> -    if ((err >= ERRNO_TABLE_SIZE) || (err < 0)) {
> +    if (!errno_exists(err)) {
>          return NULL;
>      }
>      return strerror(target_to_host_errno(err));
> 

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


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

* Re: [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros
  2021-07-08 14:11 ` [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros Philippe Mathieu-Daudé
@ 2021-07-08 15:30   ` Laurent Vivier
  2021-07-08 15:48     ` Richard Henderson
  2021-07-08 16:09     ` Philippe Mathieu-Daudé
  2021-07-08 15:44   ` Richard Henderson
  1 sibling, 2 replies; 27+ messages in thread
From: Laurent Vivier @ 2021-07-08 15:30 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Richard Henderson

Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
> Convert the host_to_target_errno_table[] array to a switch case
> to allow compiler optimizations. Extract the errnos list as to
> a new includible unit, using a generic macro. Remove the code
> related to target_to_host_errno_table[] initialization.
> 

Is there some performance penalties by using a switch() rather than an array[] ?

> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  linux-user/syscall.c    | 169 +++++-----------------------------------
>  linux-user/errnos.c.inc | 140 +++++++++++++++++++++++++++++++++
>  2 files changed, 161 insertions(+), 148 deletions(-)
>  create mode 100644 linux-user/errnos.c.inc
> 
...
> diff --git a/linux-user/errnos.c.inc b/linux-user/errnos.c.inc
> new file mode 100644
> index 00000000000..807c97ca25e
> --- /dev/null
> +++ b/linux-user/errnos.c.inc
> @@ -0,0 +1,140 @@
...
> +#ifdef ERKFILL

You fix it in patch 1 but forgot to report it in your patch :)

Thanks,
Laurent


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

* Re: [PATCH v2 3/8] linux-user: Extract target errno to 'target_errno_defs.h'
  2021-07-08 14:11 ` [PATCH v2 3/8] linux-user: Extract target errno to 'target_errno_defs.h' Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
@ 2021-07-08 15:33   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2021-07-08 15:33 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Laurent Vivier

On 7/8/21 7:11 AM, Philippe Mathieu-Daudé wrote:
> +++ b/linux-user/aarch64/target_errno_defs.h
> @@ -0,0 +1,6 @@
> +#ifndef AARCH64_TARGET_ERRNO_DEFS_H
> +#define AARCH64_TARGET_ERRNO_DEFS_H
> +
> +#include "../generic/target_errno_defs.h"
> +
> +#endif

What happened to just the one include line?

Otherwise,
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~


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

* Re: [PATCH v2 1/8] linux-user/syscall: Fix RF-kill errno (typo in ERFKILL)
  2021-07-08 14:11 ` [PATCH v2 1/8] linux-user/syscall: Fix RF-kill errno (typo in ERFKILL) Philippe Mathieu-Daudé
  2021-07-08 15:19   ` Laurent Vivier
@ 2021-07-08 15:33   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2021-07-08 15:33 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Laurent Vivier

On 7/8/21 7:11 AM, Philippe Mathieu-Daudé wrote:
> Affected targets: alpha, hppa, mips/64, sparc
> 
> Fixes: fe8ed7d5794 ("linux-user: Handle ERFKILL and EHWPOISON")
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   linux-user/syscall.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


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

* Re: [PATCH v2 2/8] linux-user/sparc: Rename target_errno.h -> target_errno_defs.h
  2021-07-08 14:11 ` [PATCH v2 2/8] linux-user/sparc: Rename target_errno.h -> target_errno_defs.h Philippe Mathieu-Daudé
  2021-07-08 15:20   ` Laurent Vivier
@ 2021-07-08 15:34   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2021-07-08 15:34 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Laurent Vivier

On 7/8/21 7:11 AM, Philippe Mathieu-Daudé wrote:
> We want to have one generic target_errno.h (API to access target
> errno), and will add target errno definitions in target_errno_defs.h.
> The sparc target already have its errnos in an header, simply rename
> it.
> 
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   linux-user/sparc/{target_errno.h => target_errno_defs.h} | 4 ++--
>   linux-user/sparc/target_syscall.h                        | 2 +-
>   2 files changed, 3 insertions(+), 3 deletions(-)
>   rename linux-user/sparc/{target_errno.h => target_errno_defs.h} (99%)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


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

* Re: [PATCH v2 4/8] linux-user/alpha: Move errno definitions to 'target_errno_defs.h'
  2021-07-08 14:11 ` [PATCH v2 4/8] linux-user/alpha: Move errno definitions " Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
@ 2021-07-08 15:34   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2021-07-08 15:34 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Laurent Vivier

On 7/8/21 7:11 AM, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   linux-user/alpha/target_errno_defs.h | 194 +++++++++++++++++++++++++++
>   linux-user/alpha/target_syscall.h    | 194 ---------------------------
>   2 files changed, 194 insertions(+), 194 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


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

* Re: [PATCH v2 5/8] linux-user/hppa: Move errno definitions to 'target_errno_defs.h'
  2021-07-08 14:11 ` [PATCH v2 5/8] linux-user/hppa: " Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
@ 2021-07-08 15:35   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2021-07-08 15:35 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Laurent Vivier

On 7/8/21 7:11 AM, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   linux-user/hppa/target_errno_defs.h | 210 ++++++++++++++++++++++++++++
>   linux-user/hppa/target_syscall.h    | 210 ----------------------------
>   2 files changed, 210 insertions(+), 210 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


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

* Re: [PATCH v2 6/8] linux-user/mips: Move errno definitions to 'target_errno_defs.h'
  2021-07-08 14:11 ` [PATCH v2 6/8] linux-user/mips: " Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
@ 2021-07-08 15:38   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2021-07-08 15:38 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Laurent Vivier

On 7/8/21 7:11 AM, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé<f4bug@amsat.org>
> ---
>   linux-user/mips/target_errno_defs.h   | 211 ++++++++++++++++++++++++++
>   linux-user/mips/target_syscall.h      | 211 --------------------------
>   linux-user/mips64/target_errno_defs.h | 211 ++++++++++++++++++++++++++
>   linux-user/mips64/target_syscall.h    | 211 --------------------------
>   4 files changed, 422 insertions(+), 422 deletions(-)

With either a follow-up, or squashed change for mips64 to do

#include "../mips/target_errno_defs.h"

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


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

* Re: [PATCH v2 7/8] linux-user/syscall: Introduce errno_exists()
  2021-07-08 14:11 ` [PATCH v2 7/8] linux-user/syscall: Introduce errno_exists() Philippe Mathieu-Daudé
  2021-07-08 15:25   ` Laurent Vivier
@ 2021-07-08 15:42   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2021-07-08 15:42 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Laurent Vivier

On 7/8/21 7:11 AM, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>   linux-user/syscall.c | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 4842a1987b7..56682b06cbd 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -509,6 +509,11 @@ static inline int next_free_host_timer(void)
>   
>   #define ERRNO_TABLE_SIZE 1200
>   
> +static inline bool errno_exists(int err)
> +{
> +    return err >= 0 && err < ERRNO_TABLE_SIZE;
> +}
> +
>   /* target_to_host_errno_table[] is initialized from
>    * host_to_target_errno_table[] in syscall_init(). */
>   static uint16_t target_to_host_errno_table[ERRNO_TABLE_SIZE] = {
> @@ -672,7 +677,7 @@ const char *target_strerror(int err)
>           return "Successful exit from sigreturn";
>       }
>   
> -    if ((err >= ERRNO_TABLE_SIZE) || (err < 0)) {
> +    if (!errno_exists(err)) {
>           return NULL;
>       }
>       return strerror(target_to_host_errno(err));

After patch 8, you can simply remove this test entirely, as well as the otherwise unused 
and totally arbitrary ERRNO_TABLE_SIZE.


r~


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

* Re: [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros
  2021-07-08 14:11 ` [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros Philippe Mathieu-Daudé
  2021-07-08 15:30   ` Laurent Vivier
@ 2021-07-08 15:44   ` Richard Henderson
  1 sibling, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2021-07-08 15:44 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson, Laurent Vivier

On 7/8/21 7:11 AM, Philippe Mathieu-Daudé wrote:
> Convert the host_to_target_errno_table[] array to a switch case
> to allow compiler optimizations. Extract the errnos list as to
> a new includible unit, using a generic macro. Remove the code
> related to target_to_host_errno_table[] initialization.
> 
> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>   linux-user/syscall.c    | 169 +++++-----------------------------------
>   linux-user/errnos.c.inc | 140 +++++++++++++++++++++++++++++++++
>   2 files changed, 161 insertions(+), 148 deletions(-)
>   create mode 100644 linux-user/errnos.c.inc
> 
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 56682b06cbd..8bb528d2cf7 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -507,157 +507,37 @@ static inline int next_free_host_timer(void)
>   }
>   #endif
>   
> -#define ERRNO_TABLE_SIZE 1200
> -
>   static inline bool errno_exists(int err)
>   {
> -    return err >= 0 && err < ERRNO_TABLE_SIZE;
> +    switch (err) {
> +#define E(X)  case X: return true;
> +#include "errnos.c.inc"
> +#undef E
> +    default:
> +        return false;
> +    }
>   }

Not true.  As documented, errnos.c.inc only contains those errno values which are 
overridden, not all errno values which are valid.

r~


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

* Re: [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros
  2021-07-08 15:30   ` Laurent Vivier
@ 2021-07-08 15:48     ` Richard Henderson
  2021-07-08 16:09     ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 27+ messages in thread
From: Richard Henderson @ 2021-07-08 15:48 UTC (permalink / raw)
  To: Laurent Vivier, Philippe Mathieu-Daudé, qemu-devel; +Cc: Taylor Simpson

On 7/8/21 8:30 AM, Laurent Vivier wrote:
> Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
>> Convert the host_to_target_errno_table[] array to a switch case
>> to allow compiler optimizations. Extract the errnos list as to
>> a new includible unit, using a generic macro. Remove the code
>> related to target_to_host_errno_table[] initialization.
>>
> 
> Is there some performance penalties by using a switch() rather than an array[] ?

In many cases, definitely not.  The compiler does notice the identity function when host 
and guest errnos match.

In the other case, I would doubt (without evidence) there's much penalty.  The switch 
becomes a table lookup + indirect branch + immediate load + return.  Or a really good 
compiler transforms to a different array lookup.


r~


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

* Re: [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros
  2021-07-08 15:30   ` Laurent Vivier
  2021-07-08 15:48     ` Richard Henderson
@ 2021-07-08 16:09     ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 27+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-07-08 16:09 UTC (permalink / raw)
  To: Laurent Vivier, qemu-devel; +Cc: Taylor Simpson, Richard Henderson

On 7/8/21 5:30 PM, Laurent Vivier wrote:
> Le 08/07/2021 à 16:11, Philippe Mathieu-Daudé a écrit :
>> Convert the host_to_target_errno_table[] array to a switch case
>> to allow compiler optimizations. Extract the errnos list as to
>> a new includible unit, using a generic macro. Remove the code
>> related to target_to_host_errno_table[] initialization.
>>
> 
> Is there some performance penalties by using a switch() rather than an array[] ?

Per Richard suggestion
https://www.mail-archive.com/qemu-devel@nongnu.org/msg821488.html
rather the opposite, it might be now easier for the compiler to
optimize. And we free unused entries in the array (.rodata).

>> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>>  linux-user/syscall.c    | 169 +++++-----------------------------------
>>  linux-user/errnos.c.inc | 140 +++++++++++++++++++++++++++++++++
>>  2 files changed, 161 insertions(+), 148 deletions(-)
>>  create mode 100644 linux-user/errnos.c.inc
>>
> ...
>> diff --git a/linux-user/errnos.c.inc b/linux-user/errnos.c.inc
>> new file mode 100644
>> index 00000000000..807c97ca25e
>> --- /dev/null
>> +++ b/linux-user/errnos.c.inc
>> @@ -0,0 +1,140 @@
> ...
>> +#ifdef ERKFILL
> 
> You fix it in patch 1 but forgot to report it in your patch :)

Grrr :(


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

end of thread, other threads:[~2021-07-08 16:47 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-08 14:11 [PATCH v2 0/8] linux-user: target <-> host errno conversion code refactor Philippe Mathieu-Daudé
2021-07-08 14:11 ` [PATCH v2 1/8] linux-user/syscall: Fix RF-kill errno (typo in ERFKILL) Philippe Mathieu-Daudé
2021-07-08 15:19   ` Laurent Vivier
2021-07-08 15:33   ` Richard Henderson
2021-07-08 14:11 ` [PATCH v2 2/8] linux-user/sparc: Rename target_errno.h -> target_errno_defs.h Philippe Mathieu-Daudé
2021-07-08 15:20   ` Laurent Vivier
2021-07-08 15:34   ` Richard Henderson
2021-07-08 14:11 ` [PATCH v2 3/8] linux-user: Extract target errno to 'target_errno_defs.h' Philippe Mathieu-Daudé
2021-07-08 15:25   ` Laurent Vivier
2021-07-08 15:33   ` Richard Henderson
2021-07-08 14:11 ` [PATCH v2 4/8] linux-user/alpha: Move errno definitions " Philippe Mathieu-Daudé
2021-07-08 15:25   ` Laurent Vivier
2021-07-08 15:34   ` Richard Henderson
2021-07-08 14:11 ` [PATCH v2 5/8] linux-user/hppa: " Philippe Mathieu-Daudé
2021-07-08 15:25   ` Laurent Vivier
2021-07-08 15:35   ` Richard Henderson
2021-07-08 14:11 ` [PATCH v2 6/8] linux-user/mips: " Philippe Mathieu-Daudé
2021-07-08 15:25   ` Laurent Vivier
2021-07-08 15:38   ` Richard Henderson
2021-07-08 14:11 ` [PATCH v2 7/8] linux-user/syscall: Introduce errno_exists() Philippe Mathieu-Daudé
2021-07-08 15:25   ` Laurent Vivier
2021-07-08 15:42   ` Richard Henderson
2021-07-08 14:11 ` [PATCH v2 8/8] linux-user: Simplify host <-> target errno conversion using macros Philippe Mathieu-Daudé
2021-07-08 15:30   ` Laurent Vivier
2021-07-08 15:48     ` Richard Henderson
2021-07-08 16:09     ` Philippe Mathieu-Daudé
2021-07-08 15:44   ` Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.