qemu/linux-user
Richard Henderson a3310c0397 linux-user: Move syscall error detection into safe_syscall_base
The current api from safe_syscall_base() is to return -errno, which is
the interface provided by *some* linux kernel abis.  The wrapper macro,
safe_syscall(), detects error, stores into errno, and returns -1, to
match the api of the system syscall().

For those kernel abis that do not return -errno natively, this leads
to double syscall error detection.  E.g. Linux ppc64, which sets the
SO flag for error.

Simplify the usage from C by moving the error detection into assembly,
and usage from assembly by providing a C helper with which to set errno.

Reviewed-by: Warner Losh <imp@bsdimp.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2021-12-19 20:47:33 -08:00
..
aarch64 target/arm: Take an exception if PC is misaligned 2021-12-15 10:35:26 +00:00
alpha target/alpha: Implement alpha_cpu_record_sigbus 2021-11-02 07:00:52 -04:00
arm target/arm: Implement arm_cpu_record_sigbus 2021-11-02 07:00:52 -04:00
cris target/cris: Make cris_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
generic linux-user: Extract target errno to 'target_errno_defs.h' 2021-07-12 21:53:35 +02:00
hexagon target/hexagon/cpu.h: don't include qemu-common.h 2021-12-15 10:35:26 +00:00
host linux-user: Move syscall error detection into safe_syscall_base 2021-12-19 20:47:33 -08:00
hppa linux-user/hppa: Remove EXCP_UNALIGN handling 2021-11-02 07:00:52 -04:00
i386 linux-user/x86_64: Raise SIGSEGV if SA_RESTORER not set 2021-10-01 12:03:48 +02:00
m68k target/m68k: Make m68k_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
microblaze target/microblaze: Make mb_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
mips target/mips: Make mips_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
mips64 linux-user/mips: Implement setup_sigtramp 2021-10-01 12:03:48 +02:00
nios2 linux-user/nios2: Document non-use of setup_sigtramp 2021-10-01 12:03:48 +02:00
openrisc target/openrisc: Make openrisc_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
ppc linux-user/ppc: Remove POWERPC_EXCP_ALIGN handling 2021-11-02 07:00:52 -04:00
riscv target/riscv: Make riscv_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
s390x target/s390x: Implement s390_cpu_record_sigsegv 2021-11-02 07:00:52 -04:00
sh4 target/sh4: Make sh4_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
sparc target/sparc: Make sparc_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
x86_64 linux-user/i386: Implement setup_sigtramp 2021-10-01 12:03:48 +02:00
xtensa target/xtensa: Make xtensa_cpu_tlb_fill sysemu only 2021-11-02 07:00:52 -04:00
cpu_loop-common.h
elfload.c linux-user: fix Coverity CID 1464101 2021-11-22 09:17:08 +01:00
errnos.c.inc linux-user: Simplify host <-> target errno conversion using macros 2021-07-12 21:53:35 +02:00
exit.c linux-user: Don't include gdbstub.h in qemu.h 2021-09-13 20:35:45 +02:00
fd-trans.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
fd-trans.h fd-trans: Fix race condition on reallocation of the translation table. 2021-07-12 21:54:46 +02:00
flat.h linux-user/: fix some comment spelling errors 2020-09-17 20:39:22 +02:00
flatload.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
ioctls.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
linux_loop.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
linuxload.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
loader.h linux-user: Split loader-related prototypes into loader.h 2021-09-13 20:35:44 +02:00
main.c Pull request linux-user 20210916 2021-09-16 21:09:18 +01:00
meson.build linux-user: Move syscall error detection into safe_syscall_base 2021-12-19 20:47:33 -08:00
mmap.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
qemu.h linux-user: Drop unneeded includes from qemu.h 2021-09-13 20:35:45 +02:00
safe-syscall-error.c linux-user: Move syscall error detection into safe_syscall_base 2021-12-19 20:47:33 -08:00
safe-syscall.h linux-user: Move syscall error detection into safe_syscall_base 2021-12-19 20:47:33 -08:00
safe-syscall.S linux-user: Extract target errno to 'target_errno_defs.h' 2021-07-12 21:53:35 +02:00
semihost.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
signal-common.h linux-user: Add infrastructure for a signal trampoline page 2021-10-01 12:03:47 +02:00
signal.c linux-user/signal.c: Create a common rewind_if_in_safe_syscall 2021-11-23 01:47:20 +01:00
socket.h
strace.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
strace.h linux-user: Split strace prototypes into strace.h 2021-09-13 20:35:44 +02:00
strace.list linux-user: Add copy_file_range to strace.list 2021-05-18 07:09:58 +02:00
syscall_defs.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
syscall_types.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
syscall.c linux-user: Rewrite do_getdents, do_getdents64 2021-11-21 16:19:17 +01:00
target_flat.h
trace-events linux-user/trace-events: fix minor typo in format string 2021-06-17 16:09:11 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
uaccess.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
uname.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
uname.h
user-internals.h linux-user: Drop unneeded includes from qemu.h 2021-09-13 20:35:45 +02:00
user-mmap.h linux-user: Split mmap prototypes into user-mmap.h 2021-09-13 20:35:45 +02:00
vm86.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00