qemu/linux-user
Aleksandar Markovic 2f2bd444be linux-user: Fix fadvise64() syscall support for Mips32
By looking at the file arch/mips/kernel/scall32-o32.S in Linux
kernel, it can be deduced that, for Mips32 platform, syscall
corresponding to number _NR_fadvise64 as defined in kernel file
arch/mips/include/uapi/asm/unistd.h translates to kernel function
sys_fadvise64_64, and that argument layout for this system call is
as follows:

              0             32 0             32
             +----------------+----------------+
      (arg1) |       fd       |     __pad      | (arg2)
             +----------------+----------------+
      (arg3) |             buffer              | (arg4)
             +----------------+----------------+
      (arg5) |               len               | (arg6)
             +----------------+----------------+
      (arg7) |     advise     |    not used    | (arg8)
             +----------------+----------------+

The same argument layout can be deduced from glibc code, and
relevant commit messages in linux kernel and glibc.

The fix is to change TARGET_NR_fadvise64 to TARGET_NR_fadvise64_64
in Mips32 syscall numbers table. Array mips_syscall_args[] in
linux-user/main.c also already have "fadvise64_64" (and not
"fadvise64") in corresponding place for the syscall number in
question, so no change for linux-user/main.c.

This patch also fixes the failure LTP test posix_fadvise03, if
executed on Qemu-emulated Mips32 platform (user mode).

Signed-off-by: Aleksandar Rikalo <aleksandar.rikalo@imgtec.com>
Signed-off-by: Miroslav Tisma <miroslav.tisma@imgtec.com>
Signed-off-by: Aleksandar Markovic <aleksandar.markovic@imgtec.com>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
2016-10-21 15:20:13 +03:00
..
aarch64 linux-user: AArch64 has sync_file_range, not sync_file_range2 2016-07-19 16:18:11 +03:00
alpha linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
arm linux-user: fix TARGET_NR_select 2016-09-22 07:24:21 +03:00
cris linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
host linux-user: Clean up hostdep.h header guards 2016-07-12 16:19:16 +02:00
i386 linux-user: fix TARGET_NR_select 2016-09-22 07:24:21 +03:00
m68k linux-user: fix TARGET_NR_select 2016-09-22 07:24:21 +03:00
microblaze linux-user: fix TARGET_NR_select 2016-09-22 07:24:21 +03:00
mips linux-user: Fix fadvise64() syscall support for Mips32 2016-10-21 15:20:13 +03:00
mips64 linux-user: Redirect termbits.h for Mips64 to termbits.h for Mips32 2016-10-21 15:20:13 +03:00
openrisc linux-user: fix TARGET_NR_select 2016-09-22 07:24:21 +03:00
ppc ppc: Fix signal delivery in ppc-user and ppc64-user 2016-09-23 10:29:40 +10:00
s390x linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
sh4 linux-user: fix TARGET_NR_select 2016-09-22 07:24:21 +03:00
sparc linux-user: Use correct target SHMLBA in shmat() 2016-09-21 14:28:52 +03:00
sparc64 linux-user: sparc64: Use correct target SHMLBA in shmat() 2016-10-21 15:19:40 +03:00
tilegx linux-user: fix TARGET_NR_select 2016-09-22 07:24:21 +03:00
unicore32 linux-user: Clean up target_structs.h header guards 2016-07-12 16:19:16 +02:00
x86_64 linux-user: Fix target_semid_ds structure definition 2016-08-04 16:36:53 +03:00
elfload.c linux-user: ppc64: fix ARCH_206 bit in AT_HWCAP 2016-09-23 12:39:07 +10:00
errno_defs.h linux-user: Renumber TARGET_QEMU_ESIGRETURN, make it not arch-specific 2016-05-27 14:49:49 +03:00
flat.h Support for 32 bit ABI on 64 bit targets (only enabled Sparc64) 2007-10-14 16:27:31 +00:00
flatload.c linux-user: Fix error handling in flatload.c target_pread() 2016-09-21 14:27:19 +03:00
ioctls.h linux-user: Implement FS_IOC_GETFLAGS and FS_IOC_SETFLAGS ioctls 2016-09-21 14:24:47 +03:00
linux_loop.h linux-user: Add loop control ioctls 2016-07-19 15:22:33 +03:00
linuxload.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
m68k-sim.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
main.c linux-user: Update mips_syscall_args[] array in main.c 2016-10-21 15:20:13 +03:00
Makefile.objs linux-user: Provide safe_syscall for fixing races between signals and syscalls 2016-05-27 14:49:51 +03:00
mmap.c linux-user: use libc wrapper instead of direct mremap syscall 2016-10-21 15:19:41 +03:00
qemu.h linux-user: Pass si_type information to queue_signal() explicitly 2016-09-21 22:01:28 +03:00
safe-syscall.S linux-user: Provide safe_syscall for fixing races between signals and syscalls 2016-05-27 14:49:51 +03:00
signal.c ppc: Fix signal delivery in ppc-user and ppc64-user 2016-09-23 10:29:40 +10:00
socket.h linux-user: support SO_PASSSEC setsockopt option 2014-06-29 14:19:59 +03:00
strace.c linux-user: Add support for clock_adjtime() syscall 2016-10-21 15:20:09 +03:00
strace.list linux-user: Add support for syncfs() syscall 2016-10-21 15:20:13 +03:00
syscall_defs.h linux-user: Fix definition of target_sigevent for 32-bit guests 2016-10-21 15:19:41 +03:00
syscall_types.h linux-user: Correct type for LOOP_GET_STATUS{,64} ioctls 2016-07-19 15:23:16 +03:00
syscall.c linux-user: Add support for syncfs() syscall 2016-10-21 15:20:13 +03:00
target_flat.h linux-user/FLAT: allow targets to override FLAT processing 2011-02-09 10:33:54 +02:00
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
uaccess.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
uname.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
uname.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
vm86.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00