mirror of https://github.com/xqemu/xqemu.git
linux-user: Fix handling of arm_fadvise64_64 syscall
32-bit ARM has an odd variant of the fadvise syscall which has rearranged arguments, which we try to implement. Unfortunately we got the rearrangement wrong. This is a six-argument syscall whose arguments are: * fd * advise parameter * offset high half * offset low half * len high half * len low half Stop trying to share code with the standard fadvise syscalls, and just implement the syscall with the correct argument order. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
9e024732f5
commit
e0156a9dc4
|
@ -9970,18 +9970,18 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
||||||
#endif
|
#endif
|
||||||
#ifdef TARGET_NR_arm_fadvise64_64
|
#ifdef TARGET_NR_arm_fadvise64_64
|
||||||
case TARGET_NR_arm_fadvise64_64:
|
case TARGET_NR_arm_fadvise64_64:
|
||||||
{
|
/* arm_fadvise64_64 looks like fadvise64_64 but
|
||||||
/*
|
* with different argument order: fd, advice, offset, len
|
||||||
* arm_fadvise64_64 looks like fadvise64_64 but
|
* rather than the usual fd, offset, len, advice.
|
||||||
* with different argument order
|
* Note that offset and len are both 64-bit so appear as
|
||||||
*/
|
* pairs of 32-bit registers.
|
||||||
abi_long temp;
|
*/
|
||||||
temp = arg3;
|
ret = posix_fadvise(arg1, target_offset64(arg3, arg4),
|
||||||
arg3 = arg4;
|
target_offset64(arg5, arg6), arg2);
|
||||||
arg4 = temp;
|
ret = -host_to_target_errno(ret);
|
||||||
}
|
break;
|
||||||
#endif
|
#endif
|
||||||
#if defined(TARGET_NR_fadvise64_64) || defined(TARGET_NR_arm_fadvise64_64) || defined(TARGET_NR_fadvise64)
|
#if defined(TARGET_NR_fadvise64_64) || defined(TARGET_NR_fadvise64)
|
||||||
#ifdef TARGET_NR_fadvise64_64
|
#ifdef TARGET_NR_fadvise64_64
|
||||||
case TARGET_NR_fadvise64_64:
|
case TARGET_NR_fadvise64_64:
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue